shill: enable background scanning for wifi
When connecting to a WiFi service, supply wpa_supplicant with background
scan configuration parameters. Also, allow bgscan parameters to be
configured via RPC.
Collateral change: added NOTIMPLEMENTED log messages for ClearProperty
methods on {Device,IPConfig,Service}DBusAdaptor
BUG=chromium-os:24309
TEST=unit tests, WiFiRoaming.003SSIDMultiSwitchBack
Change-Id: I3289684bcae58a01be61d2341fd6a1099c1c7f6f
Reviewed-on: https://gerrit.chromium.org/gerrit/13844
Tested-by: mukesh agrawal <quiche@chromium.org>
Reviewed-by: Thieu Le <thieule@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: mukesh agrawal <quiche@chromium.org>
diff --git a/wifi_unittest.cc b/wifi_unittest.cc
index 649ee95..ed35eeb 100644
--- a/wifi_unittest.cc
+++ b/wifi_unittest.cc
@@ -86,13 +86,6 @@
TEST_F(WiFiPropertyTest, Dispatch) {
{
::DBus::Error error;
- EXPECT_TRUE(DBusAdaptor::DispatchOnType(device_->mutable_store(),
- flimflam::kBgscanMethodProperty,
- PropertyStoreTest::kStringV,
- &error));
- }
- {
- ::DBus::Error error;
EXPECT_TRUE(DBusAdaptor::DispatchOnType(
device_->mutable_store(),
flimflam::kBgscanSignalThresholdProperty,
@@ -117,6 +110,27 @@
}
}
+TEST_F(WiFiPropertyTest, BgscanMethod) {
+ {
+ ::DBus::Error error;
+ EXPECT_TRUE(DBusAdaptor::DispatchOnType(
+ device_->mutable_store(),
+ flimflam::kBgscanMethodProperty,
+ DBusAdaptor::StringToVariant(
+ wpa_supplicant::kNetworkBgscanMethodSimple),
+ &error));
+ }
+
+ {
+ ::DBus::Error error;
+ EXPECT_FALSE(DBusAdaptor::DispatchOnType(
+ device_->mutable_store(),
+ flimflam::kBgscanMethodProperty,
+ DBusAdaptor::StringToVariant("not a real scan method"),
+ &error));
+ }
+}
+
class WiFiMainTest : public ::testing::TestWithParam<string> {
public:
WiFiMainTest()
@@ -1295,4 +1309,20 @@
EXPECT_FALSE(wifi()->IsIdle());
}
+MATCHER(WiFiAddedArgs, "") {
+ return ContainsKey(arg, wpa_supplicant::kNetworkPropertyScanSSID) &&
+ ContainsKey(arg, wpa_supplicant::kNetworkPropertyBgscan);
+}
+
+TEST_F(WiFiMainTest, AddNetworkArgs) {
+ MockSupplicantInterfaceProxy &supplicant_interface_proxy =
+ *supplicant_interface_proxy_;
+
+ StartWiFi();
+ ReportBSS("bss0", "ssid0", "00:00:00:00:00:00", 0, kNetworkModeAdHoc);
+ WiFiService *service(GetServices().begin()->get());
+ EXPECT_CALL(supplicant_interface_proxy, AddNetwork(WiFiAddedArgs()));
+ InitiateConnect(service);
+}
+
} // namespace shill