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

Unified Diff: chrome/browser/chromeos/policy/device_status_collector_browsertest.cc

Issue 776803003: Updated DeviceStatusReportRequest to contain new monitoring data. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed error in proto def for volume_info Created 6 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/policy/device_status_collector_browsertest.cc
diff --git a/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc
index 68d70728cfefe679f83f20ed85dc6d618ffd475f..a8fdb8c01f8c3e3646b379aa952d6ea77aa0fb60 100644
--- a/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc
+++ b/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc
@@ -23,7 +23,10 @@
#include "chrome/test/base/testing_browser_process.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/shill_device_client.h"
+#include "chromeos/dbus/shill_service_client.h"
#include "chromeos/network/network_handler.h"
+#include "chromeos/network/network_state.h"
+#include "chromeos/network/network_state_handler.h"
#include "chromeos/settings/cros_settings_names.h"
#include "chromeos/settings/cros_settings_provider.h"
#include "chromeos/system/fake_statistics_provider.h"
@@ -683,6 +686,46 @@ static const FakeDeviceData kFakeDevices[] = {
-1 },
};
+// Fake network state.
+struct FakeNetworkState {
+ const char* name;
+ const char* device_path;
+ const char* type;
+ const int signal_strength;
pneubeck (no reviews) 2014/12/09 03:00:10 nit: const not required
Andrew T Wilson (Slow) 2014/12/11 00:09:55 Done.
+ const char* connection_status;
+ int expected_state;
+};
+
+// List of fake networks - primarily used to make sure that signal strength
+// and connection state are properly populated in status reports. Note that
+// by convention shill will not report a signal strength of "0" for a visible
pneubeck (no reviews) 2014/12/09 03:00:10 nit: "0" -> 0 for consistency.
Andrew T Wilson (Slow) 2014/12/11 00:09:55 Done.
+// network, so we use 1 below.
+static const FakeNetworkState kFakeNetworks[] = {
+ { "offline", "/device/wifi", shill::kTypeWifi, 35,
+ shill::kStateOffline, em::NetworkState::OFFLINE },
+ { "ethernet", "/device/ethernet", shill::kTypeEthernet, 0,
+ shill::kStateOnline, em::NetworkState::ONLINE },
+ { "wifi", "/device/wifi", shill::kTypeWifi, 23, shill::kStatePortal,
+ em::NetworkState::PORTAL },
+ { "idle", "/device/cellular1", shill::kTypeCellular, 0, shill::kStateIdle,
+ em::NetworkState::IDLE },
+ { "carrier", "/device/cellular1", shill::kTypeCellular, 0,
+ shill::kStateCarrier, em::NetworkState::CARRIER },
+ { "association", "/device/cellular1", shill::kTypeCellular, 0,
+ shill::kStateAssociation, em::NetworkState::ASSOCIATION },
+ { "config", "/device/cellular1", shill::kTypeCellular, 0,
+ shill::kStateConfiguration, em::NetworkState::CONFIGURATION },
+ { "ready", "/device/cellular1", shill::kTypeCellular, 0, shill::kStateReady,
+ em::NetworkState::READY },
+ { "disconnect", "/device/wifi", shill::kTypeWifi, 1,
+ shill::kStateDisconnect, em::NetworkState::DISCONNECT },
+ { "failure", "/device/wifi", shill::kTypeWifi, 1, shill::kStateFailure,
+ em::NetworkState::FAILURE },
+ { "activation-failure", "/device/cellular1", shill::kTypeCellular, 0,
+ shill::kStateActivationFailure, em::NetworkState::ACTIVATION_FAILURE },
+ { "unknown", "", shill::kTypeWifi, 1, "unknown", em::NetworkState::UNKNOWN },
+};
+
class DeviceStatusCollectorNetworkInterfacesTest
: public DeviceStatusCollectorTest {
protected:
@@ -714,8 +757,41 @@ class DeviceStatusCollectorNetworkInterfacesTest
}
}
+ chromeos::ShillServiceClient::TestInterface* service_client =
+ chromeos::DBusThreadManager::Get()->GetShillServiceClient()->
+ GetTestInterface();
+ service_client->ClearServices();
+
+ // Now add services for every fake network.
+ for (size_t i = 0; i < arraysize(kFakeNetworks); ++i) {
pneubeck (no reviews) 2014/12/09 03:00:10 should be possible to replace by for (const FakeN
Andrew T Wilson (Slow) 2014/12/11 00:09:55 Done.
+ service_client->AddService(
+ kFakeNetworks[i].name, /* service_path */
+ kFakeNetworks[i].name /* guid */,
+ kFakeNetworks[i].name /* name */,
+ kFakeNetworks[i].type /* type */,
+ kFakeNetworks[i].connection_status,
+ true /* visible */);
pneubeck (no reviews) 2014/12/09 03:00:10 would you want to test a not visible network as we
Andrew T Wilson (Slow) 2014/12/11 00:09:55 Added a test for this (we have a disconnected netw
+ service_client->SetServiceProperty(
+ kFakeNetworks[i].name, shill::kSignalStrengthProperty,
+ base::FundamentalValue(kFakeNetworks[i].signal_strength));
+ service_client->SetServiceProperty(
+ kFakeNetworks[i].name, shill::kDeviceProperty,
+ base::StringValue(kFakeNetworks[i].device_path));
+ }
+
// Flush out pending state updates.
base::RunLoop().RunUntilIdle();
+
+ chromeos::NetworkStateHandler::NetworkStateList state_list;
+ chromeos::NetworkStateHandler* network_state_handler =
+ chromeos::NetworkHandler::Get()->network_state_handler();
+ network_state_handler->GetNetworkListByType(
+ chromeos::NetworkTypePattern::Default(),
+ false, // configured_only
+ false, // visible_only,
+ 0, // no limit to number of results
+ &state_list);
+ ASSERT_EQ(arraysize(kFakeNetworks), state_list.size());
}
virtual void TearDown() override {
@@ -728,11 +804,13 @@ TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NetworkInterfaces) {
// Interfaces should be reported by default.
GetStatus();
EXPECT_LT(0, status_.network_interface_size());
+ EXPECT_LT(0, status_.network_state_size());
// No interfaces should be reported if the policy is off.
cros_settings_->SetBoolean(chromeos::kReportDeviceNetworkInterfaces, false);
GetStatus();
EXPECT_EQ(0, status_.network_interface_size());
+ EXPECT_EQ(0, status_.network_state_size());
// Switch the policy on and verify the interface list is present.
cros_settings_->SetBoolean(chromeos::kReportDeviceNetworkInterfaces, true);
@@ -758,7 +836,8 @@ TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NetworkInterfaces) {
iface->has_imei() == !!*dev.imei &&
iface->mac_address() == dev.mac_address &&
iface->meid() == dev.meid &&
- iface->imei() == dev.imei) {
+ iface->imei() == dev.imei &&
+ iface->device_path() == dev.device_path) {
found_match = true;
break;
}
@@ -769,6 +848,29 @@ TEST_F(DeviceStatusCollectorNetworkInterfacesTest, NetworkInterfaces) {
}
EXPECT_EQ(count, status_.network_interface_size());
+
+ // Now make sure network state list is correct.
+ EXPECT_EQ(arraysize(kFakeNetworks),
+ static_cast<size_t>(status_.network_state_size()));
+ for (size_t i = 0; i < arraysize(kFakeNetworks); ++i) {
pneubeck (no reviews) 2014/12/09 03:00:10 same here
Andrew T Wilson (Slow) 2014/12/11 00:09:55 Done.
+ const FakeNetworkState& state = kFakeNetworks[i];
+ bool found_match = false;
+ google::protobuf::RepeatedPtrField<em::NetworkState>::const_iterator
+ proto_state;
+ for (proto_state = status_.network_state().begin();
pneubeck (no reviews) 2014/12/09 03:00:10 for (const em::NetworkState& proto_state : status_
Andrew T Wilson (Slow) 2014/12/11 00:09:55 Done.
+ proto_state != status_.network_state().end();
+ ++proto_state) {
+ // Make sure every item has a matching entry in the proto.
+ if (proto_state->has_device_path() == (strlen(state.device_path) > 0) &&
+ proto_state->signal_strength() == state.signal_strength &&
+ proto_state->connection_state() == state.expected_state) {
+ found_match = true;
+ break;
+ }
+ }
+ EXPECT_TRUE(found_match) << "No matching state for fake network " << i
+ << " (" << state.name << ")";
+ }
}
} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698