Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(320)

Side by Side Diff: chromeos/network/network_state_handler_unittest.cc

Issue 12387065: Convert TrayVPN to use new NetworkState code (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix browser_tests Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/network/network_state_handler.h" 5 #include "chromeos/network/network_state_handler.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/message_loop.h" 13 #include "base/message_loop.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "chromeos/dbus/dbus_thread_manager.h" 15 #include "chromeos/dbus/dbus_thread_manager.h"
16 #include "chromeos/dbus/shill_device_client.h"
16 #include "chromeos/dbus/shill_manager_client.h" 17 #include "chromeos/dbus/shill_manager_client.h"
17 #include "chromeos/dbus/shill_service_client.h" 18 #include "chromeos/dbus/shill_service_client.h"
18 #include "chromeos/network/network_state.h" 19 #include "chromeos/network/network_state.h"
19 #include "chromeos/network/network_state_handler_observer.h" 20 #include "chromeos/network/network_state_handler_observer.h"
20 #include "dbus/object_path.h" 21 #include "dbus/object_path.h"
21 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
22 #include "third_party/cros_system_api/dbus/service_constants.h" 23 #include "third_party/cros_system_api/dbus/service_constants.h"
23 24
24 namespace { 25 namespace {
25 26
26 void ErrorCallbackFunction(const std::string& error_name, 27 void ErrorCallbackFunction(const std::string& error_name,
27 const std::string& error_message) { 28 const std::string& error_message) {
28 LOG(ERROR) << "Shill Error: " << error_name << " : " << error_message; 29 LOG(ERROR) << "Shill Error: " << error_name << " : " << error_message;
29 } 30 }
30 31
32 const std::string kShillManagerClientStubDefaultService = "stub_ethernet";
33 const std::string kShillManagerClientStubDefaultWireless = "stub_wifi1";
34 const std::string kShillManagerClientStubWireless2 = "stub_wifi2";
35 const std::string kShillManagerClientStubCellular = "stub_cellular";
36
31 using chromeos::NetworkState; 37 using chromeos::NetworkState;
32 using chromeos::NetworkStateHandler; 38 using chromeos::NetworkStateHandler;
33 39
34 class TestObserver : public chromeos::NetworkStateHandlerObserver { 40 class TestObserver : public chromeos::NetworkStateHandlerObserver {
35 public: 41 public:
36 explicit TestObserver(NetworkStateHandler* handler) 42 explicit TestObserver(NetworkStateHandler* handler)
37 : handler_(handler), 43 : handler_(handler),
38 manager_changed_count_(0), 44 manager_changed_count_(0),
39 network_count_(0) { 45 network_count_(0) {
40 } 46 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 DBusThreadManager::InitializeWithStub(); 126 DBusThreadManager::InitializeWithStub();
121 } 127 }
122 128
123 virtual void TearDown() OVERRIDE { 129 virtual void TearDown() OVERRIDE {
124 network_state_handler_.reset(); 130 network_state_handler_.reset();
125 test_observer_.reset(); 131 test_observer_.reset();
126 DBusThreadManager::Shutdown(); 132 DBusThreadManager::Shutdown();
127 } 133 }
128 134
129 void SetupNetworkStateHandler() { 135 void SetupNetworkStateHandler() {
136 SetupDefaultShillState();
130 network_state_handler_.reset(new NetworkStateHandler); 137 network_state_handler_.reset(new NetworkStateHandler);
131 test_observer_.reset(new TestObserver(network_state_handler_.get())); 138 test_observer_.reset(new TestObserver(network_state_handler_.get()));
132 network_state_handler_->AddObserver(test_observer_.get()); 139 network_state_handler_->AddObserver(test_observer_.get());
133 network_state_handler_->InitShillPropertyHandler(); 140 network_state_handler_->InitShillPropertyHandler();
134 } 141 }
135 142
136 protected: 143 protected:
144 void SetupDefaultShillState() {
145 message_loop_.RunUntilIdle(); // Process any pending updates
146 ShillDeviceClient::TestInterface* device_test =
147 DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface();
148 device_test->ClearDevices();
149 device_test->AddDevice("/device/stub_wifi_device1",
150 flimflam::kTypeWifi, "stub_wifi_device1");
151 device_test->AddDevice("/device/stub_cellular_device1",
152 flimflam::kTypeCellular, "stub_cellular_device1");
153
154 ShillServiceClient::TestInterface* service_test =
155 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface();
156 service_test->ClearServices();
157 const bool add_to_watchlist = true;
158 service_test->AddService(kShillManagerClientStubDefaultService,
159 kShillManagerClientStubDefaultService,
160 flimflam::kTypeEthernet, flimflam::kStateOnline,
161 add_to_watchlist);
162 service_test->AddService(kShillManagerClientStubDefaultWireless,
163 kShillManagerClientStubDefaultWireless,
164 flimflam::kTypeWifi, flimflam::kStateOnline,
165 add_to_watchlist);
166 service_test->AddService(kShillManagerClientStubWireless2,
167 kShillManagerClientStubWireless2,
168 flimflam::kTypeWifi, flimflam::kStateIdle,
169 add_to_watchlist);
170 service_test->AddService(kShillManagerClientStubCellular,
171 kShillManagerClientStubCellular,
172 flimflam::kTypeCellular, flimflam::kStateIdle,
173 add_to_watchlist);
174 }
175
137 MessageLoopForUI message_loop_; 176 MessageLoopForUI message_loop_;
138 scoped_ptr<NetworkStateHandler> network_state_handler_; 177 scoped_ptr<NetworkStateHandler> network_state_handler_;
139 scoped_ptr<TestObserver> test_observer_; 178 scoped_ptr<TestObserver> test_observer_;
140 179
141 private: 180 private:
142 DISALLOW_COPY_AND_ASSIGN(NetworkStateHandlerTest); 181 DISALLOW_COPY_AND_ASSIGN(NetworkStateHandlerTest);
143 }; 182 };
144 183
145 TEST_F(NetworkStateHandlerTest, NetworkStateHandlerStub) { 184 TEST_F(NetworkStateHandlerTest, NetworkStateHandlerStub) {
146 // This relies on the stub dbus implementations for ShillManagerClient,
147 SetupNetworkStateHandler(); 185 SetupNetworkStateHandler();
148 message_loop_.RunUntilIdle(); 186 message_loop_.RunUntilIdle();
149 EXPECT_EQ(1u, test_observer_->manager_changed_count()); 187 EXPECT_EQ(1u, test_observer_->manager_changed_count());
150 // Ensure that the network list is the expected size. 188 // Ensure that the network list is the expected size.
151 const size_t kNumShillManagerClientStubImplServices = 4; 189 const size_t kNumShillManagerClientStubImplServices = 4;
152 EXPECT_EQ(kNumShillManagerClientStubImplServices, 190 EXPECT_EQ(kNumShillManagerClientStubImplServices,
153 test_observer_->network_count()); 191 test_observer_->network_count());
154 // Ensure that the first stub network is the default network. 192 // Ensure that the first stub network is the default network.
155 const std::string kShillManagerClientStubDefaultService = "stub_ethernet";
156 EXPECT_EQ(kShillManagerClientStubDefaultService, 193 EXPECT_EQ(kShillManagerClientStubDefaultService,
157 test_observer_->default_network()); 194 test_observer_->default_network());
158 EXPECT_EQ(kShillManagerClientStubDefaultService, 195 EXPECT_EQ(kShillManagerClientStubDefaultService,
159 network_state_handler_->ConnectedNetworkByType( 196 network_state_handler_->ConnectedNetworkByType(
160 NetworkStateHandler::kMatchTypeDefault)->path()); 197 NetworkStateHandler::kMatchTypeDefault)->path());
161 EXPECT_EQ(kShillManagerClientStubDefaultService, 198 EXPECT_EQ(kShillManagerClientStubDefaultService,
162 network_state_handler_->ConnectedNetworkByType( 199 network_state_handler_->ConnectedNetworkByType(
163 flimflam::kTypeEthernet)->path()); 200 flimflam::kTypeEthernet)->path());
164 const std::string kShillManagerClientStubDefaultWireless = "stub_wifi1";
165 EXPECT_EQ(kShillManagerClientStubDefaultWireless, 201 EXPECT_EQ(kShillManagerClientStubDefaultWireless,
166 network_state_handler_->ConnectedNetworkByType( 202 network_state_handler_->ConnectedNetworkByType(
167 NetworkStateHandler::kMatchTypeWireless)->path()); 203 NetworkStateHandler::kMatchTypeWireless)->path());
168 EXPECT_EQ(flimflam::kStateOnline, 204 EXPECT_EQ(flimflam::kStateOnline,
169 test_observer_->default_network_connection_state()); 205 test_observer_->default_network_connection_state());
170 } 206 }
171 207
172 TEST_F(NetworkStateHandlerTest, TechnologyChanged) { 208 TEST_F(NetworkStateHandlerTest, TechnologyChanged) {
173 // This relies on the stub dbus implementations for ShillManagerClient,
174 SetupNetworkStateHandler(); 209 SetupNetworkStateHandler();
175 message_loop_.RunUntilIdle(); 210 message_loop_.RunUntilIdle();
176 EXPECT_EQ(1u, test_observer_->manager_changed_count()); 211 EXPECT_EQ(1u, test_observer_->manager_changed_count());
177 // Enable a technology. 212 // Enable a technology.
178 EXPECT_FALSE(network_state_handler_->TechnologyEnabled(flimflam::kTypeWimax)); 213 EXPECT_FALSE(network_state_handler_->TechnologyEnabled(flimflam::kTypeWimax));
179 network_state_handler_->SetTechnologyEnabled( 214 network_state_handler_->SetTechnologyEnabled(
180 flimflam::kTypeWimax, true, network_handler::ErrorCallback()); 215 flimflam::kTypeWimax, true, network_handler::ErrorCallback());
181 message_loop_.RunUntilIdle(); 216 message_loop_.RunUntilIdle();
182 // Ensure we get a manager changed callback when we change a property. 217 // Ensure we get a manager changed callback when we change a property.
183 EXPECT_EQ(2u, test_observer_->manager_changed_count()); 218 EXPECT_EQ(2u, test_observer_->manager_changed_count());
184 EXPECT_TRUE(network_state_handler_->TechnologyEnabled(flimflam::kTypeWimax)); 219 EXPECT_TRUE(network_state_handler_->TechnologyEnabled(flimflam::kTypeWimax));
185 } 220 }
186 221
187 TEST_F(NetworkStateHandlerTest, ServicePropertyChanged) { 222 TEST_F(NetworkStateHandlerTest, ServicePropertyChanged) {
188 // This relies on the stub dbus implementations for ShillManagerClient,
189 SetupNetworkStateHandler(); 223 SetupNetworkStateHandler();
190 message_loop_.RunUntilIdle(); 224 message_loop_.RunUntilIdle();
191 // Set a service property. 225 // Set a service property.
192 const std::string eth0 = "stub_ethernet"; 226 const std::string eth0 = "stub_ethernet";
193 EXPECT_EQ("", network_state_handler_->GetNetworkState(eth0)->security()); 227 EXPECT_EQ("", network_state_handler_->GetNetworkState(eth0)->security());
194 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService(eth0)); 228 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService(eth0));
195 base::StringValue security_value("TestSecurity"); 229 base::StringValue security_value("TestSecurity");
196 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( 230 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty(
197 dbus::ObjectPath(eth0), 231 dbus::ObjectPath(eth0),
198 flimflam::kSecurityProperty, security_value, 232 flimflam::kSecurityProperty, security_value,
199 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); 233 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction));
200 message_loop_.RunUntilIdle(); 234 message_loop_.RunUntilIdle();
201 EXPECT_EQ("TestSecurity", 235 EXPECT_EQ("TestSecurity",
202 network_state_handler_->GetNetworkState(eth0)->security()); 236 network_state_handler_->GetNetworkState(eth0)->security());
203 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService(eth0)); 237 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService(eth0));
204 } 238 }
205 239
206 TEST_F(NetworkStateHandlerTest, NetworkConnectionStateChanged) { 240 TEST_F(NetworkStateHandlerTest, NetworkConnectionStateChanged) {
207 // This relies on the stub dbus implementations for ShillManagerClient,
208 SetupNetworkStateHandler(); 241 SetupNetworkStateHandler();
209 message_loop_.RunUntilIdle(); 242 message_loop_.RunUntilIdle();
210 // Change a network state. 243 // Change a network state.
211 ShillServiceClient::TestInterface* service_test = 244 ShillServiceClient::TestInterface* service_test =
212 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); 245 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface();
213 const std::string eth0 = "stub_ethernet"; 246 const std::string eth0 = "stub_ethernet";
214 base::StringValue connection_state_idle_value(flimflam::kStateIdle); 247 base::StringValue connection_state_idle_value(flimflam::kStateIdle);
215 service_test->SetServiceProperty(eth0, flimflam::kStateProperty, 248 service_test->SetServiceProperty(eth0, flimflam::kStateProperty,
216 connection_state_idle_value); 249 connection_state_idle_value);
217 message_loop_.RunUntilIdle(); 250 message_loop_.RunUntilIdle();
218 EXPECT_EQ(flimflam::kStateIdle, 251 EXPECT_EQ(flimflam::kStateIdle,
219 test_observer_->NetworkConnectionStateForService(eth0)); 252 test_observer_->NetworkConnectionStateForService(eth0));
220 EXPECT_EQ(2, test_observer_->ConnectionStateChangesForService(eth0)); 253 EXPECT_EQ(2, test_observer_->ConnectionStateChangesForService(eth0));
221 // Confirm that changing the connection state to the same value does *not* 254 // Confirm that changing the connection state to the same value does *not*
222 // signal the observer. 255 // signal the observer.
223 service_test->SetServiceProperty(eth0, flimflam::kStateProperty, 256 service_test->SetServiceProperty(eth0, flimflam::kStateProperty,
224 connection_state_idle_value); 257 connection_state_idle_value);
225 message_loop_.RunUntilIdle(); 258 message_loop_.RunUntilIdle();
226 EXPECT_EQ(2, test_observer_->ConnectionStateChangesForService(eth0)); 259 EXPECT_EQ(2, test_observer_->ConnectionStateChangesForService(eth0));
227 } 260 }
228 261
229 TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { 262 TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) {
230 // This relies on the stub dbus implementations for ShillManagerClient,
231 SetupNetworkStateHandler(); 263 SetupNetworkStateHandler();
232 message_loop_.RunUntilIdle(); 264 message_loop_.RunUntilIdle();
233 265
234 ShillManagerClient::TestInterface* manager_test = 266 ShillManagerClient::TestInterface* manager_test =
235 DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface(); 267 DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface();
236 ASSERT_TRUE(manager_test); 268 ASSERT_TRUE(manager_test);
237 ShillServiceClient::TestInterface* service_test = 269 ShillServiceClient::TestInterface* service_test =
238 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); 270 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface();
239 ASSERT_TRUE(service_test); 271 ASSERT_TRUE(service_test);
240 272
241 // Change the default network by inserting wifi1 at the front of the list 273 // Change the default network by inserting wifi1 at the front of the list
242 // and changing the state of stub_ethernet to Idle. 274 // and changing the state of stub_ethernet to Idle.
243 const std::string wifi1 = "stub_wifi1"; 275 const std::string wifi1 = "stub_wifi1";
244 manager_test->AddServiceAtIndex(wifi1, 0, true); 276 manager_test->AddServiceAtIndex(wifi1, 0, true);
245 const std::string eth0 = "stub_ethernet"; 277 const std::string eth0 = "stub_ethernet";
246 base::StringValue connection_state_idle_value(flimflam::kStateIdle); 278 base::StringValue connection_state_idle_value(flimflam::kStateIdle);
247 service_test->SetServiceProperty(eth0, flimflam::kStateProperty, 279 service_test->SetServiceProperty(eth0, flimflam::kStateProperty,
248 connection_state_idle_value); 280 connection_state_idle_value);
249 message_loop_.RunUntilIdle(); 281 message_loop_.RunUntilIdle();
250 EXPECT_EQ(wifi1, test_observer_->default_network()); 282 EXPECT_EQ(wifi1, test_observer_->default_network());
251 EXPECT_EQ(flimflam::kStateOnline, 283 EXPECT_EQ(flimflam::kStateOnline,
252 test_observer_->default_network_connection_state()); 284 test_observer_->default_network_connection_state());
253 } 285 }
254 286
255 } // namespace chromeos 287 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/shill_service_client_stub.cc ('k') | chromeos/network/shill_property_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698