blob: 0d8bf605fc98e89870a19967fb49ecc03619ff3b [file] [log] [blame]
Ben Chanbc49ac72012-04-10 19:59:45 -07001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "shill/scope_logger.h"
6
7#include <gmock/gmock.h>
8#include <gtest/gtest.h>
9
10namespace shill {
11
12class ScopeLoggerTest : public testing::Test {
13 protected:
14 ScopeLoggerTest() : logger_(ScopeLogger::GetInstance()) {}
15
16 void TearDown() {
17 logger_->set_verbose_level(0);
18 logger_->DisableAllScopes();
19 }
20
21 ScopeLogger *logger_;
22};
23
24TEST_F(ScopeLoggerTest, DefaultConstruction) {
25 ASSERT_TRUE(logger_ != NULL);
26
27 for (int scope = 0; scope < ScopeLogger::kNumScopes; ++scope) {
28 for (int verbose_level = 0; verbose_level < 5; ++verbose_level) {
29 EXPECT_FALSE(logger_->IsLogEnabled(
30 static_cast<ScopeLogger::Scope>(scope), verbose_level));
31 }
32 }
33}
34
35TEST_F(ScopeLoggerTest, GetAllScopeNames) {
Ben Chan1c722602012-04-17 17:37:35 -070036 EXPECT_EQ("cellular+"
37 "connection+"
38 "crypto+"
Ben Chanfad4a0b2012-04-18 15:49:59 -070039 "daemon+"
Ben Chan1c722602012-04-17 17:37:35 -070040 "dbus+"
41 "device+"
Ben Chanfad4a0b2012-04-18 15:49:59 -070042 "dhcp+"
43 "dns+"
Ben Chan1c722602012-04-17 17:37:35 -070044 "ethernet+"
Ben Chanfad4a0b2012-04-18 15:49:59 -070045 "http+"
46 "httpproxy+"
Ben Chan1c722602012-04-17 17:37:35 -070047 "inet+"
48 "manager+"
49 "metrics+"
50 "modem+"
51 "portal+"
Ben Chanfad4a0b2012-04-18 15:49:59 -070052 "power+"
Ben Chan1c722602012-04-17 17:37:35 -070053 "profile+"
Ben Chanfad4a0b2012-04-18 15:49:59 -070054 "property+"
55 "resolver+"
56 "route+"
Ben Chan1c722602012-04-17 17:37:35 -070057 "rtnl+"
58 "service+"
59 "storage+"
60 "task+"
61 "vpn+"
Ben Chanbc49ac72012-04-10 19:59:45 -070062 "wifi",
63 logger_->GetAllScopeNames());
64}
65
66TEST_F(ScopeLoggerTest, GetEnabledScopeNames) {
67 EXPECT_EQ("", logger_->GetEnabledScopeNames());
68
69 logger_->SetScopeEnabled(ScopeLogger::kWiFi, true);
70 EXPECT_EQ("wifi", logger_->GetEnabledScopeNames());
71
72 logger_->SetScopeEnabled(ScopeLogger::kService, true);
73 EXPECT_EQ("service+wifi", logger_->GetEnabledScopeNames());
74
75 logger_->SetScopeEnabled(ScopeLogger::kVPN, true);
76 EXPECT_EQ("service+vpn+wifi", logger_->GetEnabledScopeNames());
77
78 logger_->SetScopeEnabled(ScopeLogger::kWiFi, false);
79 EXPECT_EQ("service+vpn", logger_->GetEnabledScopeNames());
80}
81
82TEST_F(ScopeLoggerTest, EnableScopesByName) {
83 logger_->EnableScopesByName("");
84 EXPECT_EQ("", logger_->GetEnabledScopeNames());
85
86 logger_->EnableScopesByName("+wifi");
87 EXPECT_EQ("wifi", logger_->GetEnabledScopeNames());
88
89 logger_->EnableScopesByName("+service");
90 EXPECT_EQ("service+wifi", logger_->GetEnabledScopeNames());
91
92 logger_->EnableScopesByName("+vpn+wifi");
93 EXPECT_EQ("service+vpn+wifi", logger_->GetEnabledScopeNames());
94
95 logger_->EnableScopesByName("-wifi");
96 EXPECT_EQ("service+vpn", logger_->GetEnabledScopeNames());
97
98 logger_->EnableScopesByName("-vpn-service+wifi");
99 EXPECT_EQ("wifi", logger_->GetEnabledScopeNames());
100
101 logger_->EnableScopesByName("+-wifi-");
102 EXPECT_EQ("", logger_->GetEnabledScopeNames());
103
104 logger_->EnableScopesByName("-vpn+vpn+wifi-wifi");
105 EXPECT_EQ("vpn", logger_->GetEnabledScopeNames());
106
107 logger_->EnableScopesByName("wifi");
108 EXPECT_EQ("wifi", logger_->GetEnabledScopeNames());
109
110 logger_->EnableScopesByName("");
111 EXPECT_EQ("", logger_->GetEnabledScopeNames());
112}
113
114TEST_F(ScopeLoggerTest, EnableScopesByNameWithUnknownScopeName) {
115 logger_->EnableScopesByName("foo");
116 EXPECT_EQ("", logger_->GetEnabledScopeNames());
117
118 logger_->EnableScopesByName("wifi+foo+vpn");
119 EXPECT_EQ("vpn+wifi", logger_->GetEnabledScopeNames());
120}
121
122TEST_F(ScopeLoggerTest, SetScopeEnabled) {
123 EXPECT_FALSE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
124
125 logger_->SetScopeEnabled(ScopeLogger::kService, true);
126 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
127
128 logger_->SetScopeEnabled(ScopeLogger::kService, false);
129 EXPECT_FALSE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
130}
131
132TEST_F(ScopeLoggerTest, SetVerboseLevel) {
133 logger_->SetScopeEnabled(ScopeLogger::kService, true);
134 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
135 EXPECT_FALSE(logger_->IsLogEnabled(ScopeLogger::kService, 1));
136 EXPECT_FALSE(logger_->IsLogEnabled(ScopeLogger::kService, 2));
137
138 logger_->set_verbose_level(1);
139 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
140 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 1));
141 EXPECT_FALSE(logger_->IsLogEnabled(ScopeLogger::kService, 2));
142
143 logger_->set_verbose_level(2);
144 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
145 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 1));
146 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 2));
147}
148
149} // namespace shill