From 77389f1c338f4bd2ca57ddf463913e42d01ed684 Mon Sep 17 00:00:00 2001 From: paulhu Date: Tue, 12 Apr 2022 07:21:28 +0000 Subject: [PATCH] Add CTS for verifying non-ASCII characters on NsdService Add an CTS test to verify that a service can still be registered with non-ASCII characters. And the service info can be resolved successfully. Bug: 230698801 Test: atest CtsNetTestCases:android.net.cts.NsdManagerTest Change-Id: I1cb9a558988af5f1264d0ae732ab4b62c0bb8cde --- .../net/src/android/net/cts/NsdManagerTest.kt | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/cts/net/src/android/net/cts/NsdManagerTest.kt b/tests/cts/net/src/android/net/cts/NsdManagerTest.kt index 7b0451fde7..8d63663fbf 100644 --- a/tests/cts/net/src/android/net/cts/NsdManagerTest.kt +++ b/tests/cts/net/src/android/net/cts/NsdManagerTest.kt @@ -611,6 +611,41 @@ class NsdManagerTest { } } + @Test + fun testNsdManager_RegisterServiceNameWithNonStandardCharacters() { + val serviceNames = "^Nsd.Test|Non-#AsCiI\\Characters&\\ufffe テスト 測試" + val si = NsdServiceInfo().apply { + serviceType = SERVICE_TYPE + serviceName = serviceNames + port = 12345 // Test won't try to connect so port does not matter + } + + // Register the service name which contains non-standard characters. + val registrationRecord = NsdRegistrationRecord() + nsdManager.registerService(si, NsdManager.PROTOCOL_DNS_SD, registrationRecord) + registrationRecord.expectCallback() + + tryTest { + // Discover that service name. + val discoveryRecord = NsdDiscoveryRecord() + nsdManager.discoverServices( + SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, discoveryRecord + ) + val foundInfo = discoveryRecord.waitForServiceDiscovered(serviceNames) + + // Expect that resolving the service name works properly even service name contains + // non-standard characters. + val resolveRecord = NsdResolveRecord() + nsdManager.resolveService(foundInfo, resolveRecord) + val resolvedCb = resolveRecord.expectCallback() + assertEquals(foundInfo.serviceName, resolvedCb.serviceInfo.serviceName) + } cleanupStep { + nsdManager.unregisterService(registrationRecord) + } cleanup { + registrationRecord.expectCallback() + } + } + /** * Register a service and return its registration record. */