Merge "Make NetworkManagementServiceTest pass again."

am: 29b1826ff2

Change-Id: If7fafa0922fdbc499c0c911a3f88ede9c8a26c1d
This commit is contained in:
Hugo Benichi
2017-08-24 03:46:07 +00:00
committed by android-build-merger

View File

@@ -16,16 +16,6 @@
package com.android.server; package com.android.server;
import android.content.Context;
import android.net.LinkAddress;
import android.net.LocalSocket;
import android.net.LocalServerSocket;
import android.os.Binder;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.LargeTest;
import com.android.server.net.BaseNetworkObserver;
import com.android.internal.util.test.BroadcastInterceptingContext;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset; import static org.mockito.Mockito.reset;
@@ -33,14 +23,37 @@ import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions;
import android.content.Context;
import android.net.INetd;
import android.net.LinkAddress;
import android.net.LocalSocket;
import android.net.LocalServerSocket;
import android.os.BatteryStats;
import android.os.Binder;
import android.os.IBinder;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.internal.app.IBatteryStats;
import com.android.server.NetworkManagementService.SystemServices;
import com.android.server.net.BaseNetworkObserver;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
/** /**
* Tests for {@link NetworkManagementService}. * Tests for {@link NetworkManagementService}.
*/ */
@LargeTest @RunWith(AndroidJUnit4.class)
public class NetworkManagementServiceTest extends AndroidTestCase { @SmallTest
public class NetworkManagementServiceTest {
private static final String SOCKET_NAME = "__test__NetworkManagementServiceTest"; private static final String SOCKET_NAME = "__test__NetworkManagementServiceTest";
private NetworkManagementService mNMService; private NetworkManagementService mNMService;
@@ -48,27 +61,46 @@ public class NetworkManagementServiceTest extends AndroidTestCase {
private LocalSocket mSocket; private LocalSocket mSocket;
private OutputStream mOutputStream; private OutputStream mOutputStream;
@Override @Mock private Context mContext;
@Mock private IBatteryStats.Stub mBatteryStatsService;
@Mock private INetd.Stub mNetdService;
private final SystemServices mServices = new SystemServices() {
@Override
public IBinder getService(String name) {
switch (name) {
case BatteryStats.SERVICE_NAME:
return mBatteryStatsService;
default:
throw new UnsupportedOperationException("Unknown service " + name);
}
}
@Override
public void registerLocalService(NetworkManagementInternal nmi) {
}
@Override
public INetd getNetd() {
return mNetdService;
}
};
@Before
public void setUp() throws Exception { public void setUp() throws Exception {
super.setUp(); MockitoAnnotations.initMocks(this);
// TODO: make this unnecessary. runtest might already make it unnecessary.
System.setProperty("dexmaker.dexcache", getContext().getCacheDir().toString());
// Set up a sheltered test environment. // Set up a sheltered test environment.
BroadcastInterceptingContext context = new BroadcastInterceptingContext(getContext());
mServerSocket = new LocalServerSocket(SOCKET_NAME); mServerSocket = new LocalServerSocket(SOCKET_NAME);
// Start the service and wait until it connects to our socket. // Start the service and wait until it connects to our socket.
mNMService = NetworkManagementService.create(context, SOCKET_NAME); mNMService = NetworkManagementService.create(mContext, SOCKET_NAME, mServices);
mSocket = mServerSocket.accept(); mSocket = mServerSocket.accept();
mOutputStream = mSocket.getOutputStream(); mOutputStream = mSocket.getOutputStream();
} }
@Override @After
public void tearDown() throws Exception { public void tearDown() throws Exception {
if (mSocket != null) mSocket.close(); if (mSocket != null) mSocket.close();
if (mServerSocket != null) mServerSocket.close(); if (mServerSocket != null) mServerSocket.close();
super.tearDown();
} }
/** /**
@@ -80,12 +112,13 @@ public class NetworkManagementServiceTest extends AndroidTestCase {
} }
private static <T> T expectSoon(T mock) { private static <T> T expectSoon(T mock) {
return verify(mock, timeout(100)); return verify(mock, timeout(200));
} }
/** /**
* Tests that network observers work properly. * Tests that network observers work properly.
*/ */
@Test
public void testNetworkObservers() throws Exception { public void testNetworkObservers() throws Exception {
BaseNetworkObserver observer = mock(BaseNetworkObserver.class); BaseNetworkObserver observer = mock(BaseNetworkObserver.class);
doReturn(new Binder()).when(observer).asBinder(); // Used by registerObserver. doReturn(new Binder()).when(observer).asBinder(); // Used by registerObserver.
@@ -143,22 +176,16 @@ public class NetworkManagementServiceTest extends AndroidTestCase {
* Interface class activity. * Interface class activity.
*/ */
sendMessage("613 IfaceClass active rmnet0"); sendMessage("613 IfaceClass active 1 1234 10012");
expectSoon(observer).interfaceClassDataActivityChanged("rmnet0", true, 0); expectSoon(observer).interfaceClassDataActivityChanged("1", true, 1234);
sendMessage("613 IfaceClass active rmnet0 1234"); sendMessage("613 IfaceClass idle 9 5678");
expectSoon(observer).interfaceClassDataActivityChanged("rmnet0", true, 1234); expectSoon(observer).interfaceClassDataActivityChanged("9", false, 5678);
sendMessage("613 IfaceClass idle eth0"); sendMessage("613 IfaceClass reallyactive 9 4321");
expectSoon(observer).interfaceClassDataActivityChanged("eth0", false, 0); expectSoon(observer).interfaceClassDataActivityChanged("9", false, 4321);
sendMessage("613 IfaceClass idle eth0 1234"); sendMessage("613 InterfaceClass reallyactive 1");
expectSoon(observer).interfaceClassDataActivityChanged("eth0", false, 1234);
sendMessage("613 IfaceClass reallyactive rmnet0 1234");
expectSoon(observer).interfaceClassDataActivityChanged("rmnet0", false, 1234);
sendMessage("613 InterfaceClass reallyactive rmnet0");
// Invalid group. // Invalid group.