1#  Copyright (C) 2024 The Android Open Source Project
2#
3#  Licensed under the Apache License, Version 2.0 (the "License");
4#  you may not use this file except in compliance with the License.
5#  You may obtain a copy of the License at
6#
7#       http://www.apache.org/licenses/LICENSE-2.0
8#
9#  Unless required by applicable law or agreed to in writing, software
10#  distributed under the License is distributed on an "AS IS" BASIS,
11#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12#  See the License for the specific language governing permissions and
13#  limitations under the License.
14
15from mobly import asserts
16from mobly.controllers import android_device
17
18
19def assume_mdns_test_preconditions(
20    advertising_device: android_device, discovery_device: android_device
21) -> None:
22  advertising = advertising_device.connectivity_multi_devices_snippet
23  discovery = discovery_device.connectivity_multi_devices_snippet
24
25  asserts.skip_if(
26      not advertising.isAtLeastT(), "Advertising device SDK is lower than T."
27  )
28  asserts.skip_if(
29      not discovery.isAtLeastT(), "Discovery device SDK is lower than T."
30  )
31
32
33def register_mdns_service_and_discover_resolve(
34    advertising_device: android_device, discovery_device: android_device
35) -> None:
36  """Test mdns advertising, discovery and resolution
37
38  One device registers an mDNS service, and another device discovers and
39  resolves that service.
40  """
41  advertising = advertising_device.connectivity_multi_devices_snippet
42  discovery = discovery_device.connectivity_multi_devices_snippet
43
44  # Register a mDns service
45  advertising.registerMDnsService()
46
47  # Ensure the discovery and resolution of the mDNS service
48  discovery.ensureMDnsServiceDiscoveryAndResolution()
49
50
51def cleanup_mdns_service(
52    advertising_device: android_device, discovery_device: android_device
53) -> None:
54  # Unregister the mDns service
55  advertising_device.connectivity_multi_devices_snippet.unregisterMDnsService()
56  # Stop discovery
57  discovery_device.connectivity_multi_devices_snippet.stopMDnsServiceDiscovery()
58