| # Copyright 2024 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """ |
| Battery of tests of the lifecycle of ifaces managed by wlanix. |
| """ |
| |
| import asyncio |
| |
| import fidl_fuchsia_wlan_wlanix as fidl_wlanix |
| from fuchsia_controller_py import Channel |
| from mobly import test_runner |
| from mobly.asserts import assert_equal |
| from wlanix_testing import base_test |
| |
| |
| class IfaceLifecycleTest(base_test.WifiChipBaseTestClass): |
| def test_create_and_destroy_iface(self) -> None: |
| response = asyncio.run( |
| self.wifi_chip_proxy.get_sta_iface_names() |
| ).unwrap() |
| assert response.iface_names is not None |
| assert_equal( |
| len(response.iface_names), |
| 0, |
| "WifiChip should have returned an empty list of iface names", |
| ) |
| |
| proxy, server = Channel.create() |
| asyncio.run( |
| self.wifi_chip_proxy.create_sta_iface(iface=server.take()) |
| ).unwrap() |
| wifi_sta_iface = fidl_wlanix.WifiStaIfaceClient(proxy) |
| |
| response = asyncio.run( |
| self.wifi_chip_proxy.get_sta_iface_names() |
| ).unwrap() |
| assert response.iface_names is not None |
| assert_equal( |
| len(response.iface_names), |
| 1, |
| "WifiChip should have returned the iface just created", |
| ) |
| |
| iface_name = response.iface_names[0] |
| wifi_sta_iface_response = asyncio.run( |
| wifi_sta_iface.get_name() |
| ).unwrap() |
| assert_equal( |
| iface_name, |
| wifi_sta_iface_response.iface_name, |
| "WifiStaIface returns a different name than WifiChip", |
| ) |
| asyncio.run( |
| self.wifi_chip_proxy.remove_sta_iface(iface_name=iface_name) |
| ).unwrap() |
| |
| response = asyncio.run( |
| self.wifi_chip_proxy.get_sta_iface_names() |
| ).unwrap() |
| assert response.iface_names is not None |
| assert_equal( |
| len(response.iface_names), |
| 0, |
| "WifiChip should no longer contain the iface just removed", |
| ) |
| |
| # TODO(https://fxbug.dev/365110075): Uncomment this check once wlanix supports |
| # stopping a WifiStaIface after its iface is removed via WifiChip.RemoveStaIface |
| # with assertRaises(Exception): |
| # asyncio.run(wifi_sta_iface.get_name()).unwrap()) |
| |
| |
| if __name__ == "__main__": |
| test_runner.main() |