Update wifi test util with better styles and to utilize new ACTS
features.

Add a retry option for wifi_connect.

Resolve any descrepancy in Wi-Fi code between internal master and
AOSP.

Bug=27821528
Bug=28342613

Change-Id: I77dc14cb5d6f72c4a538745e7acf0013702009d6
diff --git a/acts/tests/google/wifi/WifiEnterpriseRoamingTest.py b/acts/tests/google/wifi/WifiEnterpriseRoamingTest.py
index 33c43f5..84884c9 100644
--- a/acts/tests/google/wifi/WifiEnterpriseRoamingTest.py
+++ b/acts/tests/google/wifi/WifiEnterpriseRoamingTest.py
@@ -199,16 +199,12 @@
             WifiEnums.BSSID_KEY: self.bssid_b,
         }
         self.set_attns("a_on_b_off")
-        asserts.assert_true(
-            wutils.eap_connect(config, self.dut, validate_con=False),
-            "Failed to connect to %s" % config
-            )
+        wutils.eap_connect(config, self.dut, validate_con=False)
         wutils.verify_wifi_connection_info(self.dut, expected_con_to_a)
         self.log.info("Roaming from %s to %s" % (self.bssid_a, self.bssid_b))
         self.trigger_roaming_and_validate("b_on_a_off", expected_con_to_b)
         self.log.info("Roaming from %s to %s" % (self.bssid_b, self.bssid_a))
         self.trigger_roaming_and_validate("a_on_b_off", expected_con_to_a)
-        return True
 
     """ Tests Begin """
     @acts.signals.generated_test
diff --git a/acts/tests/google/wifi/WifiEnterpriseTest.py b/acts/tests/google/wifi/WifiEnterpriseTest.py
index 3987e43..433816e 100755
--- a/acts/tests/google/wifi/WifiEnterpriseTest.py
+++ b/acts/tests/google/wifi/WifiEnterpriseTest.py
@@ -18,25 +18,23 @@
 import random
 import time
 
-import acts.base_test
-import acts.signals
-import acts.test_utils.wifi.wifi_test_utils as wutils
-
 from acts import asserts
+from acts import base_test
+from acts import signals
+from acts.test_utils.wifi import wifi_test_utils as wutils
 
 WifiEnums = wutils.WifiEnums
 
 # EAP Macros
 EAP = WifiEnums.Eap
 EapPhase2 = WifiEnums.EapPhase2
-
 # Enterprise Config Macros
 Ent = WifiEnums.Enterprise
 
-class WifiEnterpriseTest(acts.base_test.BaseTestClass):
+class WifiEnterpriseTest(base_test.BaseTestClass):
 
     def __init__(self, controllers):
-        acts.base_test.BaseTestClass.__init__(self, controllers)
+        base_test.BaseTestClass.__init__(self, controllers)
         self.tests = (
             "test_eap_connect",
             "test_eap_connect_negative",
@@ -60,29 +58,32 @@
             "fqdn",
             "provider_friendly_name",
             "realm",
-            "ssid_peap",
+            "ssid_peap0",
+            "ssid_peap1",
             "ssid_tls",
             "ssid_ttls",
+            "ssid_pwd",
             "ssid_sim",
+            "ssid_aka",
+            "ssid_aka_prime",
             "ssid_passpoint",
             "device_password",
             "ping_addr"
         )
-        optional_userparam_names = (
-            "roaming_consortium_ids",
-            "plmn"
-        )
         self.unpack_userparams(required_userparam_names,
-                    opt_param_names = optional_userparam_names)
+                               roaming_consortium_ids=None,
+                               plmn=None)
         # Default configs for EAP networks.
-        self.config_peap = {
+        self.config_peap0 = {
             Ent.EAP: EAP.PEAP,
             Ent.CA_CERT: self.ca_cert,
             Ent.IDENTITY: self.eap_identity,
             Ent.PASSWORD: self.eap_password,
             Ent.PHASE2: EapPhase2.MSCHAPV2,
-            WifiEnums.SSID_KEY: self.ssid_peap
+            WifiEnums.SSID_KEY: self.ssid_peap0
         }
+        self.config_peap1 = dict(self.config_peap0)
+        self.config_peap1[WifiEnums.SSID_KEY] = self.ssid_peap1
         self.config_tls = {
             Ent.EAP: EAP.TLS,
             Ent.CA_CERT: self.ca_cert,
@@ -99,10 +100,24 @@
             Ent.PHASE2: EapPhase2.MSCHAPV2,
             WifiEnums.SSID_KEY: self.ssid_ttls
         }
+        self.config_pwd = {
+            Ent.EAP: EAP.PWD,
+            Ent.IDENTITY: self.eap_identity,
+            Ent.PASSWORD: self.eap_password,
+            WifiEnums.SSID_KEY: self.ssid_pwd
+        }
         self.config_sim = {
             Ent.EAP: EAP.SIM,
             WifiEnums.SSID_KEY: self.ssid_sim,
         }
+        self.config_aka = {
+            Ent.EAP: EAP.AKA,
+            WifiEnums.SSID_KEY: self.ssid_aka,
+        }
+        self.config_aka_prime = {
+            Ent.EAP: EAP.AKA_PRIME,
+            WifiEnums.SSID_KEY: self.ssid_aka_prime,
+        }
 
         # Base config for passpoint networks.
         self.config_passpoint = {
@@ -111,9 +126,9 @@
             Ent.REALM: self.realm,
             Ent.CA_CERT: self.passpoint_ca_cert
         }
-        if hasattr(self, "plmn"):
+        if self.plmn:
             self.config_passpoint[Ent.PLMN] = self.plmn
-        if hasattr(self, "roaming_consortium_ids"):
+        if self.roaming_consortium_ids:
             self.config_passpoint[Ent.ROAMING_IDS] = self.roaming_consortium_ids
 
         # Default configs for passpoint networks.
@@ -160,10 +175,9 @@
         Returns:
             True if connection failed as expected, False otherwise.
         """
-        verdict = wutils.eap_connect(config, ad)
-        asserts.assert_true(not verdict, "Connection should have failed.")
-        self.log.info("Connection failed as expected.")
-        return True
+        with asserts.assert_raises(signals.TestFailure, extras=config):
+            verdict = wutils.eap_connect(config, ad)
+        asserts.explicit_pass("Connection failed as expected.")
 
     def expand_config_by_phase2(self, config):
         """Take an enterprise config and generate a list of configs, each with
@@ -191,10 +205,14 @@
         Returns:
             A list of dicts each representing an EAP configuration.
         """
-        configs = [self.config_tls]
-                   # self.config_sim
+        configs = [self.config_tls,
+                   self.config_pwd,
+                   self.config_sim,
+                   self.config_aka,
+                   self.config_aka_prime]
         configs += wutils.expand_enterprise_config_by_phase2(self.config_ttls)
-        configs += wutils.expand_enterprise_config_by_phase2(self.config_peap)
+        configs += wutils.expand_enterprise_config_by_phase2(self.config_peap0)
+        configs += wutils.expand_enterprise_config_by_phase2(self.config_peap1)
         return configs
 
     def gen_passpoint_configs(self):
@@ -294,7 +312,12 @@
         Returns:
             A string representing the name of a generated EAP test case.
         """
-        name = "test_connect-%s" % config[Ent.EAP].name
+        eap_name = config[Ent.EAP].name
+        if "peap0" in config[WifiEnums.SSID_KEY].lower():
+            eap_name = "PEAP0"
+        if "peap1" in config[WifiEnums.SSID_KEY].lower():
+            eap_name = "PEAP1"
+        name = "test_connect-%s" % eap_name
         if Ent.PHASE2 in config:
             name += "-{}".format(config[Ent.PHASE2].name)
         return name
@@ -317,7 +340,7 @@
         return name
 
     """Tests"""
-    @acts.signals.generated_test
+    @signals.generated_test
     def test_eap_connect(self):
         """Test connecting to enterprise networks of different authentication
         types.
@@ -346,9 +369,9 @@
             name_func=self.gen_eap_test_name)
         msg = ("The following configs failed EAP connect test: %s" %
                pprint.pformat(failed))
-        asserts.assert_true(len(failed) == 0, msg)
+        asserts.assert_equal(len(failed), 0, msg)
 
-    @acts.signals.generated_test
+    @signals.generated_test
     def test_eap_connect_negative(self):
         """Test connecting to enterprise networks.
 
@@ -373,9 +396,9 @@
             name_func=name_gen)
         msg = ("The following configs failed negative EAP connect test: %s" %
                pprint.pformat(failed))
-        asserts.assert_true(len(failed) == 0, msg)
+        asserts.assert_equal(len(failed), 0, msg)
 
-    @acts.signals.generated_test
+    @signals.generated_test
     def test_passpoint_connect(self):
         """Test connecting to enterprise networks of different authentication
         types with passpoint support.
@@ -405,9 +428,9 @@
             name_func=self.gen_passpoint_test_name)
         msg = ("The following configs failed passpoint connect test: %s" %
                pprint.pformat(failed))
-        asserts.assert_true(len(failed) == 0, msg)
+        asserts.assert_equal(len(failed), 0, msg)
 
-    @acts.signals.generated_test
+    @signals.generated_test
     def test_passpoint_connect_negative(self):
         """Test connecting to enterprise networks.
 
@@ -434,4 +457,4 @@
             name_func=name_gen)
         msg = ("The following configs failed negative passpoint connect test: "
                "%s") % pprint.pformat(failed)
-        asserts.assert_true(len(failed) == 0, msg)
+        asserts.assert_equal(len(failed), 0, msg)
diff --git a/acts/tests/google/wifi/WifiManagerTest.py b/acts/tests/google/wifi/WifiManagerTest.py
index 81a6303..78b2b0f 100755
--- a/acts/tests/google/wifi/WifiManagerTest.py
+++ b/acts/tests/google/wifi/WifiManagerTest.py
@@ -28,23 +28,18 @@
 WifiEnums = wutils.WifiEnums
 WifiEventNames = wutils.WifiEventNames
 
-class WifiManagerTest(acts.base_test.BaseTestClass):
 
+class WifiManagerTest(acts.base_test.BaseTestClass):
     def setup_class(self):
         self.dut = self.android_devices[0]
         wutils.wifi_test_device_init(self.dut)
-        req_params = (
-            "iot_networks",
-            "open_network",
-            "iperf_server_address",
-            "tdls_models",
-            "energy_info_models"
-            )
+        req_params = ("iot_networks", "open_network", "iperf_server_address",
+                      "tdls_models", "energy_info_models")
         self.unpack_userparams(req_params)
-        asserts.assert_true(len(self.iot_networks) > 0,
+        asserts.assert_true(
+            len(self.iot_networks) > 0,
             "Need at least one iot network with psk.")
-        asserts.assert_true(wutils.wifi_toggle_state(self.dut, True),
-            "Failed to turn on wifi before tests.")
+        wutils.wifi_toggle_state(self.dut, True)
         self.iot_networks = self.iot_networks + [self.open_network]
         self.iperf_server = self.iperf_servers[0]
 
@@ -63,6 +58,7 @@
         self.dut.cat_adb_log(test_name, begin_time)
 
     """Helper Functions"""
+
     def connect_to_wifi_network_with_password(self, params):
         """Connection logic for open and psk wifi networks.
 
@@ -76,62 +72,51 @@
         Returns:
             True if successful, False otherwise.
         """
-        result = False
         wait_time = 5
         network, ad = params
         droid = ad.droid
         ed = ad.ed
         SSID = network[WifiEnums.SSID_KEY]
-        try:
-            ed.clear_all_events()
-            wutils.start_wifi_connection_scan(ad)
-            droid.wifiStartTrackingStateChange()
-            asserts.assert_true(droid.wifiConnect(network),
-                "wifi connect returned false.")
-            connect_result = ed.pop_event(WifiEventNames.WIFI_CONNECTED)
-            self.log.debug(connect_result)
-            result = connect_result['data'][WifiEnums.SSID_KEY] == SSID
-            if result:
-                self.log.info("Starting iperf traffic through {}".format(SSID))
-                time.sleep(wait_time)
-                port_arg = "-p {}".format(self.iperf_server.port)
-                result, data = ad.run_iperf_client(self.iperf_server_address,
-                                                   port_arg)
-                self.log.debug(pprint.pformat(data))
-        except queue.Empty:
-            self.log.exception("Failed to connect to {}".format(SSID))
-        finally:
-            droid.wifiStopTrackingStateChange()
-        return result
+        ed.clear_all_events()
+        wutils.start_wifi_connection_scan(ad)
+        scan_results = droid.wifiGetScanResults()
+        wutils.assert_network_in_list({WifiEnums.SSID_KEY: SSID}, scan_results)
+        wutils.wifi_connect(ad, network, num_of_tries=3)
+        self.log.info("Starting iperf traffic through {}".format(SSID))
+        time.sleep(wait_time)
+        port_arg = "-p {}".format(self.iperf_server.port)
+        success, data = ad.run_iperf_client(self.iperf_server_address,
+                                            port_arg)
+        self.log.debug(pprint.pformat(data))
+        asserts.assert_true(success, "Error occurred in iPerf traffic.")
 
     def run_iperf(self, iperf_args):
         if "iperf_server_address" not in self.user_params:
             self.log.error(("Missing iperf_server_address. "
-                "Provide one in config."))
+                            "Provide one in config."))
         else:
             iperf_addr = self.user_params["iperf_server_address"]
             self.log.info("Running iperf client.")
-            result, data = self.dut.run_iperf_client(iperf_addr,
-                iperf_args)
+            result, data = self.dut.run_iperf_client(iperf_addr, iperf_args)
             self.log.debug(data)
 
     def run_iperf_rx_tx(self, time, omit=10):
         args = "-p {} -t {} -O 10".format(self.iperf_server.port, time, omit)
         self.log.info("Running iperf client {}".format(args))
         self.run_iperf(args)
-        args = "-p {} -t {} -O 10 -R".format(self.iperf_server.port, time, omit)
+        args = "-p {} -t {} -O 10 -R".format(self.iperf_server.port, time,
+                                             omit)
         self.log.info("Running iperf client {}".format(args))
         self.run_iperf(args)
 
     """Tests"""
+
     def test_toggle_state(self):
         """Test toggling wifi"""
         self.log.debug("Going from on to off.")
-        asserts.assert_true(wutils.wifi_toggle_state(self.dut, False),
-                         "Failed to turn wifi off.")
+        wutils.wifi_toggle_state(self.dut, False)
         self.log.debug("Going from off to on.")
-        asserts.assert_true(wutils.wifi_toggle_state(self.dut, True),
-                         "Failed to turn wifi on.")
+        wutils.wifi_toggle_state(self.dut, True)
 
     def test_toggle_with_screen(self):
         """Test toggling wifi with screen on/off"""
@@ -142,12 +127,10 @@
         time.sleep(wait_time)
         self.log.debug("Going from on to off.")
         try:
-            asserts.assert_true(wutils.wifi_toggle_state(self.dut, False),
-                             "Failed to turn wifi off.")
+            wutils.wifi_toggle_state(self.dut, False)
             time.sleep(wait_time)
             self.log.debug("Going from off to on.")
-            asserts.assert_true(wutils.wifi_toggle_state(self.dut, True),
-                             "Failed to turn wifi on.")
+            wutils.wifi_toggle_state(self.dut, True)
         finally:
             self.dut.droid.wakeLockRelease()
             time.sleep(wait_time)
@@ -159,11 +142,9 @@
         self.log.debug("Start regular wifi scan.")
         wutils.start_wifi_connection_scan(self.dut)
         wifi_results = self.dut.droid.wifiGetScanResults()
-        self.log.debug("Scan results: %s" % wifi_results)
+        self.log.debug("Scan results: %s", wifi_results)
         ssid = self.open_network[WifiEnums.SSID_KEY]
-        condition = {WifiEnums.SSID_KEY: ssid}
-        asserts.assert_true(wutils.match_networks(condition, wifi_results),
-                         "Can not find expected network %s" % ssid)
+        wutils.assert_network_in_list({WifiEnums.SSID_KEY: ssid}, wifi_results)
 
     def test_add_network(self):
         """Test wifi connection scan."""
@@ -173,10 +154,8 @@
         configured_networks = self.dut.droid.wifiGetConfiguredNetworks()
         self.log.debug(("Configured networks after adding: %s" %
                         configured_networks))
-        condition = {WifiEnums.SSID_KEY: ssid}
-        asserts.assert_true(wutils.match_networks(condition, configured_networks),
-                         ("Could not find expected network %s in configured "
-                          "networks.") % ssid)
+        wutils.assert_network_in_list(
+            {WifiEnums.SSID_KEY: ssid}, configured_networks)
 
     def test_forget_network(self):
         self.test_add_network()
@@ -184,13 +163,15 @@
         wutils.wifi_forget_network(self.dut, ssid)
         configured_networks = self.dut.droid.wifiGetConfiguredNetworks()
         for nw in configured_networks:
-            asserts.assert_true(nw[WifiEnums.BSSID_KEY] != ssid,
+            asserts.assert_true(
+                nw[WifiEnums.BSSID_KEY] != ssid,
                 "Found forgotten network %s in configured networks." % ssid)
 
     @acts.signals.generated_test
     def test_iot_with_password(self):
-        params = list(itertools.product(self.iot_networks, self.android_devices))
-        name_gen = lambda p : "test_connection_to-%s" % p[0][WifiEnums.SSID_KEY]
+        params = list(itertools.product(self.iot_networks,
+                                        self.android_devices))
+        name_gen = lambda p: "test_connection_to-%s" % p[0][WifiEnums.SSID_KEY]
         failed = self.run_generated_testcases(
             self.connect_to_wifi_network_with_password,
             params,
@@ -201,13 +182,13 @@
         model = acts.utils.trim_model_name(self.dut.model)
         self.log.debug("Model is %s" % model)
         if model in self.tdls_models:
-            asserts.assert_true(self.dut.droid.wifiIsTdlsSupported(),
-                             ("TDLS should be supported on %s, but device is "
-                              "reporting not supported.") % model)
+            asserts.assert_true(self.dut.droid.wifiIsTdlsSupported(), (
+                "TDLS should be supported on %s, but device is "
+                "reporting not supported.") % model)
         else:
-            asserts.assert_true(not self.dut.droid.wifiIsTdlsSupported(),
-                             ("TDLS should not be supported on %s, but device "
-                              "is reporting supported.") % model)
+            asserts.assert_true(not self.dut.droid.wifiIsTdlsSupported(), (
+                "TDLS should not be supported on %s, but device "
+                "is reporting supported.") % model)
 
     def test_energy_info(self):
         """Verify the WiFi energy info reporting feature.
@@ -227,11 +208,12 @@
         model = self.dut.model
         expected_support = model in self.energy_info_models
         msg = "Expect energy info support to be %s on %s, got %s." % (
-              expected_support, model, actual_support)
+            expected_support, model, actual_support)
         asserts.assert_true(actual_support == expected_support, msg)
         if not actual_support:
-            asserts.skip(("Device %s does not support energy info reporting as "
-                       "expected.") % model)
+            asserts.skip(
+                ("Device %s does not support energy info reporting as "
+                 "expected.") % model)
         # Verify reported values don't decrease.
         self.log.info(("Device %s supports energy info reporting, verify that "
                        "the reported values don't decrease.") % model)
@@ -243,12 +225,12 @@
             new_energy = info["ControllerEnergyUsed"]
             new_idle_time = info["ControllerIdleTimeMillis"]
             asserts.assert_true(new_energy >= energy,
-                "Energy value decreased: previous %d, now %d" % (energy,
-                    new_energy))
+                                "Energy value decreased: previous %d, now %d" %
+                                (energy, new_energy))
             energy = new_energy
             asserts.assert_true(new_idle_time >= idle_time,
-                "Idle time decreased: previous %d, now %d" % (idle_time,
-                    new_idle_time))
+                                "Idle time decreased: previous %d, now %d" % (
+                                    idle_time, new_idle_time))
             idle_time = new_idle_time
             wutils.start_wifi_connection_scan(self.dut)
 
diff --git a/acts/tests/google/wifi/WifiNanManagerTest.py b/acts/tests/google/wifi/WifiNanManagerTest.py
index 6dc9e80..59d7772 100644
--- a/acts/tests/google/wifi/WifiNanManagerTest.py
+++ b/acts/tests/google/wifi/WifiNanManagerTest.py
@@ -27,32 +27,25 @@
 ON_MESSAGE_TX_FAIL = "WifiNanSessionOnMessageSendFail"
 ON_MESSAGE_TX_OK = "WifiNanSessionOnMessageSendSuccess"
 
+
 class WifiNanManagerTest(base_test.BaseTestClass):
     def setup_class(self):
         self.publisher = self.android_devices[0]
         self.subscriber = self.android_devices[1]
-        required_params = (
-            "config_request1",
-            "config_request2",
-            "publish_data",
-            "publish_settings",
-            "subscribe_data",
-            "subscribe_settings"
-        )
+        required_params = ("config_request1", "config_request2",
+                           "publish_data", "publish_settings",
+                           "subscribe_data", "subscribe_settings")
         self.unpack_userparams(required_params)
         self.msg_id = 10
 
     def setup_test(self):
-        asserts.assert_true(wutils.wifi_toggle_state(self.publisher, True),
-                            "Failed enabling Wi-Fi interface on publisher")
-        asserts.assert_true(wutils.wifi_toggle_state(self.subscriber, True),
-                            "Failed enabling Wi-Fi interface on subscriber")
+        wutils.wifi_toggle_state(self.publisher, True)
+        wutils.wifi_toggle_state(self.subscriber, True)
 
-    # def teardown_class(self): (b/27692829)
-       # asserts.assert_true(wutils.wifi_toggle_state(self.publisher, False),
-       #                     "Failed disabling Wi-Fi interface on publisher")
-       # asserts.assert_true(wutils.wifi_toggle_state(self.subscriber, False),
-       #                     "Failed disabling Wi-Fi interface on subscriber")
+    # (b/27692829)
+    # def teardown_class(self):
+    #    wutils.wifi_toggle_state(self.publisher, False)
+    #    wutils.wifi_toggle_state(self.subscriber, False)
 
     def reliable_tx(self, device, session_id, peer, msg):
         num_tries = 0
@@ -107,7 +100,7 @@
             self.log.info('%s: %s' % (ON_IDENTITY_CHANGED, event['data']))
         except queue.Empty:
             asserts.fail('Timed out while waiting for %s on Publisher' %
-                      ON_IDENTITY_CHANGED)
+                         ON_IDENTITY_CHANGED)
         self.log.debug(event)
 
         try:
@@ -115,7 +108,7 @@
             self.log.info('%s: %s' % (ON_IDENTITY_CHANGED, event['data']))
         except queue.Empty:
             asserts.fail('Timed out while waiting for %s on Subscriber' %
-                      ON_IDENTITY_CHANGED)
+                         ON_IDENTITY_CHANGED)
         self.log.debug(event)
 
         pub_id = self.publisher.droid.wifiNanPublish(0, self.publish_config)
@@ -126,37 +119,38 @@
             event = self.subscriber.ed.pop_event(ON_MATCH, 30)
             self.log.info('%s: %s' % (ON_MATCH, event['data']))
         except queue.Empty:
-            asserts.fail('Timed out while waiting for %s on Subscriber'
-                         % ON_MATCH)
+            asserts.fail('Timed out while waiting for %s on Subscriber' %
+                         ON_MATCH)
         self.log.debug(event)
 
-        asserts.assert_true(self.reliable_tx(self.subscriber, sub_id,
-                                          event['data']['peerId'],
-                                          sub2pub_msg),
-                         "Failed to transmit from subscriber")
+        asserts.assert_true(
+            self.reliable_tx(self.subscriber, sub_id, event['data']['peerId'],
+                             sub2pub_msg),
+            "Failed to transmit from subscriber")
 
         try:
             event = self.publisher.ed.pop_event(ON_MESSAGE_RX, 10)
             self.log.info('%s: %s' % (ON_MESSAGE_RX, event['data']))
-            asserts.assert_true(event['data']['messageAsString'] == sub2pub_msg,
-                             "Subscriber -> publisher message corrupted")
+            asserts.assert_equal(
+                event['data']['messageAsString'], sub2pub_msg,
+                "Subscriber -> publisher message corrupted")
         except queue.Empty:
             asserts.fail('Timed out while waiting for %s on publisher' %
-                      ON_MESSAGE_RX)
+                         ON_MESSAGE_RX)
 
-        asserts.assert_true(self.reliable_tx(self.publisher, pub_id,
-                                          event['data']['peerId'],
-                                          pub2sub_msg),
-                         "Failed to transmit from publisher")
+        asserts.assert_true(
+            self.reliable_tx(self.publisher, pub_id, event['data']['peerId'],
+                             pub2sub_msg), "Failed to transmit from publisher")
 
         try:
             event = self.subscriber.ed.pop_event(ON_MESSAGE_RX, 10)
             self.log.info('%s: %s' % (ON_MESSAGE_RX, event['data']))
-            asserts.assert_true(event['data']['messageAsString'] == pub2sub_msg,
-                             "Publisher -> subscriber message corrupted")
+            asserts.assert_equal(
+                event['data']['messageAsString'], pub2sub_msg,
+                "Publisher -> subscriber message corrupted")
         except queue.Empty:
             asserts.fail('Timed out while waiting for %s on subscriber' %
-                      ON_MESSAGE_RX)
+                         ON_MESSAGE_RX)
 
         self.publisher.droid.wifiNanTerminateSession(pub_id)
         self.subscriber.droid.wifiNanTerminateSession(sub_id)
diff --git a/acts/tests/google/wifi/WifiNativeTest.py b/acts/tests/google/wifi/WifiNativeTest.py
index 9cb3a91..aa90763 100644
--- a/acts/tests/google/wifi/WifiNativeTest.py
+++ b/acts/tests/google/wifi/WifiNativeTest.py
@@ -14,29 +14,26 @@
 # License for the specific language governing permissions and limitations under
 # the License.
 
-import acts.base_test as base_test
+from acts import base_test
+from acts.controllers import native_android_device
 
 class WifiNativeTest(base_test.BaseTestClass):
-    tests = None
 
-    def __init__(self, controllers):
-        base_test.BaseTestClass.__init__(self, controllers)
-        self.device = self.native_android_devices[0]
-        self.tests = (
-                "test_hal_get_features",
-        )
+    def setup_class(self):
+        self.native_devices = self.register_controller(native_android_device)
+        self.dut = self.native_devices[0]
 
     def setup_test(self):
 #        TODO: uncomment once wifi_toggle_state (or alternative)
 #              work with sl4n
 #        assert wutils.wifi_toggle_state(self.device, True)
-        return self.device.droid.WifiInit()
+        return self.dut.droid.WifiInit()
 
 #   TODO: uncomment once wifi_toggle_state (or alternative)
 #         work with sl4n
-#    def teardown_class(self):
+#    def teardown_test(self):
 #        assert wutils.wifi_toggle_state(self.device, False)
 
     def test_hal_get_features(self):
-        result = self.device.droid.WifiGetSupportedFeatureSet()
-        self.log.info("Wi-Fi feature set: {}".format(result))
+        result = self.dut.droid.WifiGetSupportedFeatureSet()
+        self.log.info("Wi-Fi feature set: %d", result)
diff --git a/acts/tests/google/wifi/WifiPowerTest.py b/acts/tests/google/wifi/WifiPowerTest.py
index 4940944..ca7f437 100755
--- a/acts/tests/google/wifi/WifiPowerTest.py
+++ b/acts/tests/google/wifi/WifiPowerTest.py
@@ -23,11 +23,10 @@
 from acts.controllers import monsoon
 from acts.test_utils.wifi import wifi_test_utils as wutils
 
-
 pmc_base_cmd = ("am broadcast -a com.android.pmc.action.AUTOPOWER --es"
                 " PowerAction ")
 start_pmc_cmd = ("am start -n com.android.pmc/com.android.pmc."
-    "PMCMainActivity")
+                 "PMCMainActivity")
 pmc_interval_cmd = ("am broadcast -a com.android.pmc.action.SETPARAMS --es "
                     "Interval %s ")
 pmc_set_params = "am broadcast -a com.android.pmc.action.SETPARAMS --es "
@@ -44,7 +43,6 @@
 
 
 class WifiPowerTest(acts.base_test.BaseTestClass):
-
     def setup_class(self):
         self.hz = 5000
         self.offset = 5 * 60
@@ -59,16 +57,16 @@
         self.mon.set_max_current(7.8)
         self.dut = self.android_devices[0]
         self.mon.attach_device(self.dut)
-        asserts.assert_true(self.mon.usb("auto"),
-                            "Failed to turn USB mode to auto on monsoon.")
+        asserts.assert_true(
+            self.mon.usb("auto"),
+            "Failed to turn USB mode to auto on monsoon.")
         required_userparam_names = (
             # These two params should follow the format of
             # {"SSID": <SSID>, "password": <Password>}
             "network_2g",
             "network_5g",
-            "iperf_server_address"
-        )
-        self.unpack_userparams(required_userparam_names, ("threshold",))
+            "iperf_server_address")
+        self.unpack_userparams(required_userparam_names, ("threshold", ))
         wutils.wifi_test_device_init(self.dut)
         # Start pmc app.
         self.dut.adb.shell(start_pmc_cmd)
@@ -137,25 +135,24 @@
         if self.threshold:
             model = utils.trim_model_name(self.dut.model)
             asserts.assert_true(tag in self.threshold[model],
-                             "Acceptance threshold for %s is missing" % tag,
-                             extras=result_extra)
+                                "Acceptance threshold for %s is missing" % tag,
+                                extras=result_extra)
             acceptable_threshold = self.threshold[model][tag]
-            asserts.assert_true(actual_current < acceptable_threshold,
-                             ("Measured average current in [%s]: %s, which is "
-                              "higher than acceptable threshold %.2fmA.") % (
-                              tag, actual_current_str, acceptable_threshold),
-                              extras=result_extra)
+            asserts.assert_true(
+                actual_current < acceptable_threshold,
+                ("Measured average current in [%s]: %s, which is "
+                 "higher than acceptable threshold %.2fmA.") % (
+                     tag, actual_current_str, acceptable_threshold),
+                extras=result_extra)
         asserts.explicit_pass("Measurement finished for %s." % tag,
                               extras=result_extra)
 
     def test_power_wifi_off(self):
-        asserts.assert_true(wutils.wifi_toggle_state(self.dut, False),
-                         "Failed to toggle wifi off.")
+        wutils.wifi_toggle_state(self.dut, False)
         self.measure_and_process_result()
 
     def test_power_wifi_on_idle(self):
-        asserts.assert_true(wutils.wifi_toggle_state(self.dut, True),
-                         "Failed to toggle wifi on.")
+        wutils.wifi_toggle_state(self.dut, True)
         self.measure_and_process_result()
 
     def test_power_disconnected_connectivity_scan(self):