Fix flaky test for trel service discovery am: ffd3986c99

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/3536080

Change-Id: I8473b80dcea4c2814908fc58bd459b4cda3b66ff
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Yang Sun 2025-03-12 02:20:44 -07:00 • committed by Automerger Merge Worker
commit 986a6deca4
2 changed files with 23 additions and 4 deletions

View file

@ -595,7 +595,8 @@ public class ServiceDiscoveryTest {
DeviceConfigUtils.getDeviceConfigPropertyBoolean(
"thread_network", "TrelFeature__enabled", false));
NsdServiceInfo discoveredService = discoverService(mNsdManager, "_trel._udp");
NsdServiceInfo discoveredService =
discoverService(mNsdManager, "_trel._udp", mOtCtl.getExtendedAddr());
assertThat(discoveredService).isNotNull();
// Resolve service with the current TREL port, otherwise it may return stale service from
// a previous infra link setup.
@ -618,7 +619,9 @@ public class ServiceDiscoveryTest {
DeviceConfigUtils.getDeviceConfigPropertyBoolean(
"thread_network", "TrelFeature__enabled", false));
assertThrows(TimeoutException.class, () -> discoverService(mNsdManager, "_trel._udp"));
assertThrows(
TimeoutException.class,
() -> discoverService(mNsdManager, "_trel._udp", mOtCtl.getExtendedAddr()));
}
private void registerService(NsdServiceInfo serviceInfo, RegistrationListener listener)

View file

@ -479,15 +479,31 @@ object IntegrationTestUtils {
return addresses
}
/** Return the first discovered service of `serviceType`. */
/** Return the first discovered service of `serviceType`. */
@JvmStatic
@Throws(Exception::class)
fun discoverService(nsdManager: NsdManager, serviceType: String): NsdServiceInfo {
return discoverService(nsdManager, serviceType, null)
}
/**
* Returns the service that matches `serviceType` and `serviceName`.
*
* If `serviceName` is null, returns the first discovered service. `serviceName` is not case
* sensitive.
*/
@JvmStatic
@Throws(Exception::class)
fun discoverService(nsdManager: NsdManager, serviceType: String, serviceName: String?):
NsdServiceInfo {
val serviceInfoFuture = CompletableFuture<NsdServiceInfo>()
val listener: NsdManager.DiscoveryListener = object : DefaultDiscoveryListener() {
override fun onServiceFound(serviceInfo: NsdServiceInfo) {
Log.d(TAG, "onServiceFound: $serviceInfo")
serviceInfoFuture.complete(serviceInfo)
if (serviceName == null ||
serviceInfo.getServiceName().equals(serviceName, true /* ignore case */)) {
serviceInfoFuture.complete(serviceInfo)
}
}
}
nsdManager.discoverServices(serviceType, NsdManager.PROTOCOL_DNS_SD, listener)