mock_log_unittest.cc revision d34a47c06c38f2594c85b14b0f9cee2bf37c0e84
18a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
28a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain// Use of this source code is governed by a BSD-style license that can be
38a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain// found in the LICENSE file.
48a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
58a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain#include "shill/mock_log.h"
68a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
78a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain#include <gmock/gmock.h>
88a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain#include <gtest/gtest.h>
98a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
108a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain#include "shill/scope_logger.h"
118a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
128a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morainusing ::std::string;
138a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morainusing ::testing::_;
148a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
158a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morainnamespace shill {
168a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
178a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morainclass MockLogTest : public testing::Test {
188a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain protected:
198a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  MockLogTest() {}
208a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
218a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  void LogSomething(const string &message) const {
228a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain    LOG(INFO) << message;
238a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  }
248a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  void SlogSomething(const string &message) const {
258a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain    ScopeLogger::GetInstance()->EnableScopesByName("manager");
26d34a47c06c38f2594c85b14b0f9cee2bf37c0e84Christopher Wiley    ScopeLogger::GetInstance()->set_verbose_level(2);
278a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain    SLOG(Manager, 2) << message;
28d34a47c06c38f2594c85b14b0f9cee2bf37c0e84Christopher Wiley    ScopeLogger::GetInstance()->EnableScopesByName("-manager");
29d34a47c06c38f2594c85b14b0f9cee2bf37c0e84Christopher Wiley    ScopeLogger::GetInstance()->set_verbose_level(0);
308a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  }
318a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain};
328a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
338a5726aa96d7a585dccb67d35038b8efeccfd46bGary MorainTEST_F(MockLogTest, MatchMessageOnly) {
348a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  ScopedMockLog log;
358a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  const string kMessage("Something");
368a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  EXPECT_CALL(log, Log(_, _, kMessage));
378a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  LogSomething(kMessage);
388a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain}
398a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
408a5726aa96d7a585dccb67d35038b8efeccfd46bGary MorainTEST_F(MockLogTest, MatchSeverityAndMessage) {
418a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  ScopedMockLog log;
428a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  const string kMessage("Something");
438a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  EXPECT_CALL(log, Log(logging::LOG_INFO, _, kMessage));
448a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  LogSomething(kMessage);
458a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain}
468a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
478a5726aa96d7a585dccb67d35038b8efeccfd46bGary MorainTEST_F(MockLogTest, MatchSeverityAndFileAndMessage) {
488a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  ScopedMockLog log;
498a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  const string kMessage("Something");
508a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  EXPECT_CALL(log, Log(logging::LOG_INFO, "mock_log_unittest.cc", kMessage));
518a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  LogSomething(kMessage);
528a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain}
538a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
548a5726aa96d7a585dccb67d35038b8efeccfd46bGary MorainTEST_F(MockLogTest, MatchEmptyString) {
558a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  ScopedMockLog log;
568a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  const string kMessage("");
578a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  EXPECT_CALL(log, Log(_, _, kMessage));
588a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  LogSomething(kMessage);
598a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain}
608a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
618a5726aa96d7a585dccb67d35038b8efeccfd46bGary MorainTEST_F(MockLogTest, MatchMessageContainsBracketAndNewline) {
628a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  ScopedMockLog log;
638a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  const string kMessage("blah [and more blah] \n yet more blah\n\n\n");
648a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  EXPECT_CALL(log, Log(_, _, kMessage));
658a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  LogSomething(kMessage);
668a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain}
678a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
688a5726aa96d7a585dccb67d35038b8efeccfd46bGary MorainTEST_F(MockLogTest, MatchSlog) {
698a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  ScopedMockLog log;
708a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  const string kMessage("Something");
718a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  EXPECT_CALL(log, Log(_, _, kMessage));
728a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  SlogSomething(kMessage);
738a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain}
748a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
758a5726aa96d7a585dccb67d35038b8efeccfd46bGary MorainTEST_F(MockLogTest, MatchWithGmockMatchers) {
768a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  ScopedMockLog log;
778a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  const string kMessage("Something");
788a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  EXPECT_CALL(log, Log(::testing::Lt(::logging::LOG_ERROR),
798a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain                       ::testing::EndsWith(".cc"),
808a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain                       ::testing::StartsWith("Some")));
818a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain  LogSomething(kMessage);
828a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain}
838a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain
848a5726aa96d7a585dccb67d35038b8efeccfd46bGary Morain}  // namespace shill
85