# # Copyright 2021 - The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from acts import asserts from acts.controllers.openwrt_ap import MOBLY_CONTROLLER_CONFIG_NAME as OPENWRT from acts.test_decorators import test_tracker_info from acts_contrib.test_utils.wifi import wifi_test_utils as wutils from acts_contrib.test_utils.wifi.WifiBaseTest import WifiBaseTest class MulticastDNSTest(WifiBaseTest): """Verify Multicast DNS can work on Android devices.""" def setup_class(self): """Setup Openwrt and unpack params for mDNS test.""" self.dut = self.android_devices[0] req_params = [] opt_params = ["configure_OpenWrt", "wifi_network"] self.unpack_userparams(req_params, opt_params) if OPENWRT in self.user_params: self.openwrt = self.access_points[0] if hasattr(self, "configure_OpenWrt") and self.configure_OpenWrt == "skip": self.dut.log.info("Skip configure Wifi interface due to config setup.") else: self.configure_openwrt_ap_and_start(wpa_network=True) self.wifi_network = self.openwrt.get_wifi_network() def on_fail(self, test_name, begin_time): """Take bugreport if test failed.""" self.dut.take_bug_report(test_name, begin_time) def teardown_test(self): """Reset wifi settings after test case.""" wutils.reset_wifi(self.dut) def verify_ping(self, hostname, expect_ping_pass=True): """Verify if result of the ping as excepted. Args: hostname: ping address. expect_ping_pass: excepted ping result is True or False. Returns: Boolean if ping result work as expected. """ out = self.dut.adb.shell("ping -c 1 %s" % hostname) result = ("100%" not in out) == expect_ping_pass if not result: self.dut.log.info(out) return result def test_mdns_query_ipv4_only(self): """Verify mdns query work in ipv4 only network.""" self.openwrt.network_setting.disable_ipv6() self.openwrt.network_setting.setup_mdns() wutils.wifi_connect(self.dut, self.wifi_network) asserts.assert_true(self.verify_ping("openwrt.local"), "Fail to ping openwrt.local.") def test_mdns_query_ipv4_ipv6(self): """Verify mdns query work in ipv4 & ipv6 network.""" self.openwrt.network_setting.enable_ipv6() self.openwrt.network_setting.setup_mdns() wutils.wifi_connect(self.dut, self.wifi_network) asserts.assert_true(self.verify_ping("openwrt.local"), "Fail to ping openwrt.local.")