Merge "Modify Nsd{Service,Manager}Test to conform to its change"

This commit is contained in:
Luke Huang
2021-09-29 03:35:20 +00:00
committed by Gerrit Code Review
3 changed files with 139 additions and 18 deletions

View File

@@ -66,6 +66,7 @@ android_library {
"framework-protos", "framework-protos",
"mockito-target-minus-junit4", "mockito-target-minus-junit4",
"net-tests-utils", "net-tests-utils",
"platform-compat-test-rules",
"platform-test-annotations", "platform-test-annotations",
"service-connectivity-pre-jarjar", "service-connectivity-pre-jarjar",
"services.core", "services.core",

View File

@@ -16,6 +16,9 @@
package android.net.nsd; package android.net.nsd;
import static libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges;
import static libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
@@ -27,6 +30,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import android.compat.testing.PlatformCompatChangeRule;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
import android.os.Handler; import android.os.Handler;
@@ -44,7 +48,9 @@ import com.android.testutils.HandlerUtils;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
@@ -56,6 +62,9 @@ public class NsdManagerTest {
static final int PROTOCOL = NsdManager.PROTOCOL_DNS_SD; static final int PROTOCOL = NsdManager.PROTOCOL_DNS_SD;
@Rule
public TestRule compatChangeRule = new PlatformCompatChangeRule();
@Mock Context mContext; @Mock Context mContext;
@Mock INsdManager mService; @Mock INsdManager mService;
MockServiceHandler mServiceHandler; MockServiceHandler mServiceHandler;
@@ -70,8 +79,6 @@ public class NsdManagerTest {
mServiceHandler = spy(MockServiceHandler.create(mContext)); mServiceHandler = spy(MockServiceHandler.create(mContext));
doReturn(new Messenger(mServiceHandler)).when(mService).getMessenger(); doReturn(new Messenger(mServiceHandler)).when(mService).getMessenger();
mManager = makeManager();
} }
@After @After
@@ -85,7 +92,76 @@ public class NsdManagerTest {
} }
@Test @Test
public void testResolveService() { @EnableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testResolveServiceS() {
mManager = makeNsdManagerS();
doTestResolveService();
}
@Test
@DisableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testResolveServicePreS() {
mManager = makeNsdManagerPreS();
doTestResolveService();
}
@Test
@EnableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testDiscoverServiceS() {
mManager = makeNsdManagerS();
doTestDiscoverService();
}
@Test
@DisableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testDiscoverServicePreS() {
mManager = makeNsdManagerPreS();
doTestDiscoverService();
}
@Test
@EnableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testParallelResolveServiceS() {
mManager = makeNsdManagerS();
doTestParallelResolveService();
}
@Test
@DisableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testParallelResolveServicePreS() {
mManager = makeNsdManagerPreS();
doTestParallelResolveService();
}
@Test
@EnableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testInvalidCallsS() {
mManager = makeNsdManagerS();
doTestInvalidCalls();
}
@Test
@DisableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testInvalidCallsPreS() {
mManager = makeNsdManagerPreS();
doTestInvalidCalls();
}
@Test
@EnableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testRegisterServiceS() {
mManager = makeNsdManagerS();
doTestRegisterService();
}
@Test
@DisableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testRegisterServicePreS() {
mManager = makeNsdManagerPreS();
doTestRegisterService();
}
public void doTestResolveService() {
NsdManager manager = mManager; NsdManager manager = mManager;
NsdServiceInfo request = new NsdServiceInfo("a_name", "a_type"); NsdServiceInfo request = new NsdServiceInfo("a_name", "a_type");
@@ -104,8 +180,7 @@ public class NsdManagerTest {
verify(listener, timeout(mTimeoutMs).times(1)).onServiceResolved(reply); verify(listener, timeout(mTimeoutMs).times(1)).onServiceResolved(reply);
} }
@Test public void doTestParallelResolveService() {
public void testParallelResolveService() {
NsdManager manager = mManager; NsdManager manager = mManager;
NsdServiceInfo request = new NsdServiceInfo("a_name", "a_type"); NsdServiceInfo request = new NsdServiceInfo("a_name", "a_type");
@@ -127,8 +202,7 @@ public class NsdManagerTest {
verify(listener2, timeout(mTimeoutMs).times(1)).onServiceResolved(reply); verify(listener2, timeout(mTimeoutMs).times(1)).onServiceResolved(reply);
} }
@Test public void doTestRegisterService() {
public void testRegisterService() {
NsdManager manager = mManager; NsdManager manager = mManager;
NsdServiceInfo request1 = new NsdServiceInfo("a_name", "a_type"); NsdServiceInfo request1 = new NsdServiceInfo("a_name", "a_type");
@@ -186,8 +260,7 @@ public class NsdManagerTest {
//verify(listener2, timeout(mTimeoutMs).times(1)).onServiceUnregistered(request2); //verify(listener2, timeout(mTimeoutMs).times(1)).onServiceUnregistered(request2);
} }
@Test public void doTestDiscoverService() {
public void testDiscoverService() {
NsdManager manager = mManager; NsdManager manager = mManager;
NsdServiceInfo reply1 = new NsdServiceInfo("a_name", "a_type"); NsdServiceInfo reply1 = new NsdServiceInfo("a_name", "a_type");
@@ -264,8 +337,7 @@ public class NsdManagerTest {
verify(listener, timeout(mTimeoutMs).times(0)).onServiceFound(reply1); verify(listener, timeout(mTimeoutMs).times(0)).onServiceFound(reply1);
} }
@Test public void doTestInvalidCalls() {
public void testInvalidCalls() {
NsdManager manager = mManager; NsdManager manager = mManager;
NsdManager.RegistrationListener listener1 = mock(NsdManager.RegistrationListener.class); NsdManager.RegistrationListener listener1 = mock(NsdManager.RegistrationListener.class);
@@ -326,10 +398,21 @@ public class NsdManagerTest {
} }
} }
NsdManager makeManager() { NsdManager makeNsdManagerS() {
// Expect we'll get 2 AsyncChannel related msgs.
return makeManager(2);
}
NsdManager makeNsdManagerPreS() {
// Expect we'll get 3 msgs. 2 AsyncChannel related msgs + 1 additional daemon startup msg.
return makeManager(3);
}
NsdManager makeManager(int expectedMsgCount) {
NsdManager manager = new NsdManager(mContext, mService); NsdManager manager = new NsdManager(mContext, mService);
// Acknowledge first two messages connecting the AsyncChannel. // Acknowledge first two messages connecting the AsyncChannel.
verify(mServiceHandler, timeout(mTimeoutMs).times(2)).handleMessage(any()); verify(mServiceHandler, timeout(mTimeoutMs).times(expectedMsgCount)).handleMessage(any());
reset(mServiceHandler); reset(mServiceHandler);
assertNotNull(mServiceHandler.chan); assertNotNull(mServiceHandler.chan);
return manager; return manager;

View File

@@ -16,6 +16,9 @@
package com.android.server; package com.android.server;
import static libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges;
import static libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.any; import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
@@ -27,6 +30,7 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.compat.testing.PlatformCompatChangeRule;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.net.nsd.NsdManager; import android.net.nsd.NsdManager;
@@ -48,7 +52,9 @@ import com.android.testutils.HandlerUtils;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
@@ -67,6 +73,8 @@ public class NsdServiceTest {
private static final long CLEANUP_DELAY_MS = 500; private static final long CLEANUP_DELAY_MS = 500;
private static final long TIMEOUT_MS = 500; private static final long TIMEOUT_MS = 500;
@Rule
public TestRule compatChangeRule = new PlatformCompatChangeRule();
@Mock Context mContext; @Mock Context mContext;
@Mock ContentResolver mResolver; @Mock ContentResolver mResolver;
@Mock NsdService.NsdSettings mSettings; @Mock NsdService.NsdSettings mSettings;
@@ -94,6 +102,34 @@ public class NsdServiceTest {
} }
@Test @Test
@DisableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testPreSClients() {
when(mSettings.isEnabled()).thenReturn(true);
NsdService service = makeService();
// Pre S client connected, the daemon should be started.
NsdManager client1 = connectClient(service);
waitForIdle();
verify(mDaemon, times(1)).maybeStart();
verifyDaemonCommands("start-service");
NsdManager client2 = connectClient(service);
waitForIdle();
verify(mDaemon, times(1)).maybeStart();
client1.disconnect();
// Still 1 client remains, daemon shouldn't be stopped.
waitForIdle();
verify(mDaemon, never()).maybeStop();
client2.disconnect();
// All clients are disconnected, the daemon should be stopped.
verifyDelayMaybeStopDaemon(CLEANUP_DELAY_MS);
verifyDaemonCommands("stop-service");
}
@Test
@EnableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testNoDaemonStartedWhenClientsConnect() { public void testNoDaemonStartedWhenClientsConnect() {
when(mSettings.isEnabled()).thenReturn(true); when(mSettings.isEnabled()).thenReturn(true);
@@ -110,13 +146,12 @@ public class NsdServiceTest {
waitForIdle(); waitForIdle();
verify(mDaemon, never()).execute(any()); verify(mDaemon, never()).execute(any());
// If there is no active request, try to clean up the daemon
// every time the client disconnects.
client1.disconnect(); client1.disconnect();
// Still 1 client remains, daemon shouldn't be stopped. verifyDelayMaybeStopDaemon(CLEANUP_DELAY_MS);
waitForIdle(); reset(mDaemon);
verify(mDaemon, never()).maybeStop();
client2.disconnect(); client2.disconnect();
// All clients are disconnected, stop the daemon after CLEANUP_DELAY_MS.
verifyDelayMaybeStopDaemon(CLEANUP_DELAY_MS); verifyDelayMaybeStopDaemon(CLEANUP_DELAY_MS);
client1.disconnect(); client1.disconnect();
@@ -124,6 +159,7 @@ public class NsdServiceTest {
} }
@Test @Test
@EnableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testClientRequestsAreGCedAtDisconnection() { public void testClientRequestsAreGCedAtDisconnection() {
when(mSettings.isEnabled()).thenReturn(true); when(mSettings.isEnabled()).thenReturn(true);
@@ -169,6 +205,7 @@ public class NsdServiceTest {
} }
@Test @Test
@EnableCompatChanges(NsdManager.RUN_NATIVE_NSD_ONLY_IF_LEGACY_APPS)
public void testCleanupDelayNoRequestActive() { public void testCleanupDelayNoRequestActive() {
when(mSettings.isEnabled()).thenReturn(true); when(mSettings.isEnabled()).thenReturn(true);