blob: 938409059dc2d1001889ed7801b6583fdfcc651c [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+"
Darin Petkov096b3472012-05-15 10:26:22 +020062 "wifi+"
63 "wimax",
Ben Chanbc49ac72012-04-10 19:59:45 -070064 logger_->GetAllScopeNames());
65}
66
67TEST_F(ScopeLoggerTest, GetEnabledScopeNames) {
68 EXPECT_EQ("", logger_->GetEnabledScopeNames());
69
70 logger_->SetScopeEnabled(ScopeLogger::kWiFi, true);
71 EXPECT_EQ("wifi", logger_->GetEnabledScopeNames());
72
73 logger_->SetScopeEnabled(ScopeLogger::kService, true);
74 EXPECT_EQ("service+wifi", logger_->GetEnabledScopeNames());
75
76 logger_->SetScopeEnabled(ScopeLogger::kVPN, true);
77 EXPECT_EQ("service+vpn+wifi", logger_->GetEnabledScopeNames());
78
79 logger_->SetScopeEnabled(ScopeLogger::kWiFi, false);
80 EXPECT_EQ("service+vpn", logger_->GetEnabledScopeNames());
81}
82
83TEST_F(ScopeLoggerTest, EnableScopesByName) {
84 logger_->EnableScopesByName("");
85 EXPECT_EQ("", logger_->GetEnabledScopeNames());
86
87 logger_->EnableScopesByName("+wifi");
88 EXPECT_EQ("wifi", logger_->GetEnabledScopeNames());
89
90 logger_->EnableScopesByName("+service");
91 EXPECT_EQ("service+wifi", logger_->GetEnabledScopeNames());
92
93 logger_->EnableScopesByName("+vpn+wifi");
94 EXPECT_EQ("service+vpn+wifi", logger_->GetEnabledScopeNames());
95
96 logger_->EnableScopesByName("-wifi");
97 EXPECT_EQ("service+vpn", logger_->GetEnabledScopeNames());
98
99 logger_->EnableScopesByName("-vpn-service+wifi");
100 EXPECT_EQ("wifi", logger_->GetEnabledScopeNames());
101
102 logger_->EnableScopesByName("+-wifi-");
103 EXPECT_EQ("", logger_->GetEnabledScopeNames());
104
105 logger_->EnableScopesByName("-vpn+vpn+wifi-wifi");
106 EXPECT_EQ("vpn", logger_->GetEnabledScopeNames());
107
108 logger_->EnableScopesByName("wifi");
109 EXPECT_EQ("wifi", logger_->GetEnabledScopeNames());
110
111 logger_->EnableScopesByName("");
112 EXPECT_EQ("", logger_->GetEnabledScopeNames());
113}
114
115TEST_F(ScopeLoggerTest, EnableScopesByNameWithUnknownScopeName) {
116 logger_->EnableScopesByName("foo");
117 EXPECT_EQ("", logger_->GetEnabledScopeNames());
118
119 logger_->EnableScopesByName("wifi+foo+vpn");
120 EXPECT_EQ("vpn+wifi", logger_->GetEnabledScopeNames());
121}
122
123TEST_F(ScopeLoggerTest, SetScopeEnabled) {
124 EXPECT_FALSE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
125
126 logger_->SetScopeEnabled(ScopeLogger::kService, true);
127 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
128
129 logger_->SetScopeEnabled(ScopeLogger::kService, false);
130 EXPECT_FALSE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
131}
132
133TEST_F(ScopeLoggerTest, SetVerboseLevel) {
134 logger_->SetScopeEnabled(ScopeLogger::kService, true);
135 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
136 EXPECT_FALSE(logger_->IsLogEnabled(ScopeLogger::kService, 1));
137 EXPECT_FALSE(logger_->IsLogEnabled(ScopeLogger::kService, 2));
138
139 logger_->set_verbose_level(1);
140 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
141 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 1));
142 EXPECT_FALSE(logger_->IsLogEnabled(ScopeLogger::kService, 2));
143
144 logger_->set_verbose_level(2);
145 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 0));
146 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 1));
147 EXPECT_TRUE(logger_->IsLogEnabled(ScopeLogger::kService, 2));
148}
149
150} // namespace shill