Merge "Create super class for IkeSessionTest and IkeSessionStateMachineTest"
diff --git a/tests/iketests/src/java/android/net/ipsec/ike/IkeSessionTest.java b/tests/iketests/src/java/android/net/ipsec/ike/IkeSessionTest.java
index e8e1ee5..fc9f9c6 100644
--- a/tests/iketests/src/java/android/net/ipsec/ike/IkeSessionTest.java
+++ b/tests/iketests/src/java/android/net/ipsec/ike/IkeSessionTest.java
@@ -20,20 +20,14 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.InetAddresses;
-import android.net.IpSecManager;
-import android.net.Network;
 import android.os.Looper;
 import android.os.test.TestLooper;
 import android.util.Log;
 
 import com.android.internal.net.ipsec.ike.IkeSessionStateMachine;
 import com.android.internal.net.ipsec.ike.IkeSessionStateMachineTest;
-import com.android.internal.net.ipsec.ike.testutils.MockIpSecTestUtils;
+import com.android.internal.net.ipsec.ike.IkeSessionTestBase;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -43,21 +37,9 @@
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 
-public final class IkeSessionTest {
+public final class IkeSessionTest extends IkeSessionTestBase {
     private static final int TIMEOUT_MS = 500;
 
-    private static final Inet4Address LOCAL_ADDRESS =
-            (Inet4Address) (InetAddresses.parseNumericAddress("192.0.2.200"));
-    private static final Inet4Address REMOTE_ADDRESS =
-            (Inet4Address) (InetAddresses.parseNumericAddress("127.0.0.1"));
-
-    private MockIpSecTestUtils mMockIpSecTestUtils;
-    private IpSecManager mIpSecManager;
-    private Context mContext;
-
-    private ConnectivityManager mMockConnectManager;
-    private Network mMockDefaultNetwork;
-
     private IkeSessionParams mIkeSessionParams;
     private ChildSessionParams mMockChildSessionParams;
     private Executor mUserCbExecutor;
@@ -66,18 +48,10 @@
 
     @Before
     public void setUp() throws Exception {
+        super.setUp();
+
         if (Looper.myLooper() == null) Looper.prepare();
 
-        mMockIpSecTestUtils = MockIpSecTestUtils.setUpMockIpSec();
-        mIpSecManager = mMockIpSecTestUtils.getIpSecManager();
-        mContext = mMockIpSecTestUtils.getContext();
-
-        mMockConnectManager = mock(ConnectivityManager.class);
-        mMockDefaultNetwork = mock(Network.class);
-        when(mMockConnectManager.getActiveNetwork()).thenReturn(mMockDefaultNetwork);
-        when(mMockDefaultNetwork.getByName(REMOTE_ADDRESS.getHostAddress()))
-                .thenReturn(REMOTE_ADDRESS);
-
         mIkeSessionParams = buildIkeSessionParams();
         mMockChildSessionParams = mock(ChildSessionParams.class);
         mUserCbExecutor = (r) -> r.run(); // Inline executor for testing purposes.
@@ -101,7 +75,7 @@
     public void testConstructIkeSession() throws Exception {
         IkeSession ikeSession =
                 new IkeSession(
-                        mContext,
+                        mSpyContext,
                         mIpSecManager,
                         mIkeSessionParams,
                         mMockChildSessionParams,
@@ -130,7 +104,7 @@
                     try {
                         sessions[index] =
                                 new IkeSession(
-                                        mContext,
+                                        mSpyContext,
                                         mIpSecManager,
                                         mIkeSessionParams,
                                         mMockChildSessionParams,
@@ -159,7 +133,7 @@
         IkeSession ikeSession =
                 new IkeSession(
                         testLooper.getLooper(),
-                        mContext,
+                        mSpyContext,
                         mIpSecManager,
                         mIkeSessionParams,
                         mMockChildSessionParams,
diff --git a/tests/iketests/src/java/com/android/internal/net/ipsec/ike/IkeSessionStateMachineTest.java b/tests/iketests/src/java/com/android/internal/net/ipsec/ike/IkeSessionStateMachineTest.java
index bdf42a6..7dff751 100644
--- a/tests/iketests/src/java/com/android/internal/net/ipsec/ike/IkeSessionStateMachineTest.java
+++ b/tests/iketests/src/java/com/android/internal/net/ipsec/ike/IkeSessionStateMachineTest.java
@@ -78,14 +78,6 @@
 import static org.mockito.Mockito.when;
 
 import android.app.AlarmManager;
-import android.content.Context;
-import android.content.IntentFilter;
-import android.net.ConnectivityManager;
-import android.net.InetAddresses;
-import android.net.IpSecManager;
-import android.net.IpSecManager.UdpEncapsulationSocket;
-import android.net.Network;
-import android.net.SocketKeepalive;
 import android.net.eap.EapSessionConfig;
 import android.net.ipsec.ike.ChildSaProposal;
 import android.net.ipsec.ike.ChildSessionCallback;
@@ -102,7 +94,6 @@
 import android.net.ipsec.ike.exceptions.IkeException;
 import android.net.ipsec.ike.exceptions.IkeInternalException;
 import android.net.ipsec.ike.exceptions.IkeProtocolException;
-import android.os.Handler;
 import android.os.test.TestLooper;
 import android.telephony.TelephonyManager;
 
@@ -158,8 +149,6 @@
 import com.android.internal.net.ipsec.ike.message.IkeTestUtils;
 import com.android.internal.net.ipsec.ike.message.IkeTsPayload;
 import com.android.internal.net.ipsec.ike.testutils.CertUtils;
-import com.android.internal.net.ipsec.ike.testutils.MockIpSecTestUtils;
-import com.android.internal.net.ipsec.ike.utils.IkeAlarmReceiver;
 import com.android.internal.net.ipsec.ike.utils.IkeSecurityParameterIndex;
 import com.android.internal.net.ipsec.ike.utils.Retransmitter;
 import com.android.internal.net.ipsec.ike.utils.Retransmitter.IBackoffTimeoutCalculator;
@@ -187,15 +176,9 @@
 import java.util.Map;
 import java.util.concurrent.Executor;
 
-public final class IkeSessionStateMachineTest {
+public final class IkeSessionStateMachineTest extends IkeSessionTestBase {
     private static final String TAG = "IkeSessionStateMachineTest";
 
-    private static final Inet4Address LOCAL_ADDRESS =
-            (Inet4Address) (InetAddresses.parseNumericAddress("192.0.2.200"));
-    private static final Inet4Address REMOTE_ADDRESS =
-            (Inet4Address) (InetAddresses.parseNumericAddress("127.0.0.1"));
-    private static final String REMOTE_HOSTNAME = "ike.test.android";
-
     private static final String IKE_INIT_RESP_HEX_STRING =
             "5f54bf6d8b48e6e1909232b3d1edcb5c21202220000000000000014c220000300000"
                     + "002c010100040300000c0100000c800e008003000008030000020300000802000002"
@@ -301,13 +284,6 @@
 
     private static final long RETRANSMIT_BACKOFF_TIMEOUT_MS = 5000L;
 
-    private MockIpSecTestUtils mMockIpSecTestUtils;
-    private Context mSpyContext;
-    private IpSecManager mIpSecManager;
-
-    private ConnectivityManager mMockConnectManager;
-    private Network mMockDefaultNetwork;
-    private SocketKeepalive mMockSocketKeepalive;
     private IkeUdpEncapSocket mSpyIkeUdpEncapSocket;
     private IkeUdp4Socket mSpyIkeUdp4Socket;
     private IkeUdp6Socket mSpyIkeUdp6Socket;
@@ -666,44 +642,11 @@
 
     @Before
     public void setUp() throws Exception {
+        super.setUp();
+
         mSpyIkeLog = TestUtils.makeSpyLogThrowExceptionForWtf(TAG);
         IkeManager.setIkeLog(mSpyIkeLog);
 
-        mMockIpSecTestUtils = MockIpSecTestUtils.setUpMockIpSec();
-        mIpSecManager = mMockIpSecTestUtils.getIpSecManager();
-
-        mSpyContext = spy(mMockIpSecTestUtils.getContext());
-        doReturn(null)
-                .when(mSpyContext)
-                .registerReceiver(
-                        any(IkeAlarmReceiver.class),
-                        any(IntentFilter.class),
-                        any(),
-                        any(Handler.class));
-        doNothing().when(mSpyContext).unregisterReceiver(any(IkeAlarmReceiver.class));
-
-        mMockConnectManager = mock(ConnectivityManager.class);
-        mMockDefaultNetwork = mock(Network.class);
-        doReturn(mMockDefaultNetwork).when(mMockConnectManager).getActiveNetwork();
-        doReturn(REMOTE_ADDRESS).when(mMockDefaultNetwork).getByName(REMOTE_HOSTNAME);
-        doReturn(REMOTE_ADDRESS)
-                .when(mMockDefaultNetwork)
-                .getByName(REMOTE_ADDRESS.getHostAddress());
-
-        mMockSocketKeepalive = mock(SocketKeepalive.class);
-        doReturn(mMockSocketKeepalive)
-                .when(mMockConnectManager)
-                .createSocketKeepalive(
-                        any(Network.class),
-                        any(UdpEncapsulationSocket.class),
-                        any(Inet4Address.class),
-                        any(Inet4Address.class),
-                        any(Executor.class),
-                        any(SocketKeepalive.Callback.class));
-        doReturn(mMockConnectManager)
-                .when(mSpyContext)
-                .getSystemService(Context.CONNECTIVITY_SERVICE);
-
         mEapSessionConfig =
                 new EapSessionConfig.Builder()
                         .setEapSimConfig(EAP_SIM_SUB_ID, TelephonyManager.APPTYPE_USIM)
diff --git a/tests/iketests/src/java/com/android/internal/net/ipsec/ike/IkeSessionTestBase.java b/tests/iketests/src/java/com/android/internal/net/ipsec/ike/IkeSessionTestBase.java
new file mode 100644
index 0000000..17cb94f
--- /dev/null
+++ b/tests/iketests/src/java/com/android/internal/net/ipsec/ike/IkeSessionTestBase.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.net.ipsec.ike;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+
+import android.content.Context;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.InetAddresses;
+import android.net.IpSecManager;
+import android.net.IpSecManager.UdpEncapsulationSocket;
+import android.net.Network;
+import android.net.SocketKeepalive;
+import android.os.Handler;
+
+import com.android.internal.net.ipsec.ike.testutils.MockIpSecTestUtils;
+import com.android.internal.net.ipsec.ike.utils.IkeAlarmReceiver;
+
+import org.junit.Before;
+
+import java.net.Inet4Address;
+import java.util.concurrent.Executor;
+
+public abstract class IkeSessionTestBase {
+    protected static final Inet4Address LOCAL_ADDRESS =
+            (Inet4Address) (InetAddresses.parseNumericAddress("192.0.2.200"));
+    protected static final Inet4Address REMOTE_ADDRESS =
+            (Inet4Address) (InetAddresses.parseNumericAddress("127.0.0.1"));
+    protected static final String REMOTE_HOSTNAME = "ike.test.android.com";
+
+    protected MockIpSecTestUtils mMockIpSecTestUtils;
+    protected Context mSpyContext;
+    protected IpSecManager mIpSecManager;
+
+    protected ConnectivityManager mMockConnectManager;
+    protected Network mMockDefaultNetwork;
+    protected SocketKeepalive mMockSocketKeepalive;
+
+    @Before
+    public void setUp() throws Exception {
+        mMockIpSecTestUtils = MockIpSecTestUtils.setUpMockIpSec();
+        mIpSecManager = mMockIpSecTestUtils.getIpSecManager();
+
+        mSpyContext = spy(mMockIpSecTestUtils.getContext());
+        doReturn(null)
+                .when(mSpyContext)
+                .registerReceiver(
+                        any(IkeAlarmReceiver.class),
+                        any(IntentFilter.class),
+                        any(),
+                        any(Handler.class));
+        doNothing().when(mSpyContext).unregisterReceiver(any(IkeAlarmReceiver.class));
+
+        mMockConnectManager = mock(ConnectivityManager.class);
+        mMockDefaultNetwork = mock(Network.class);
+        doReturn(mMockDefaultNetwork).when(mMockConnectManager).getActiveNetwork();
+        doReturn(REMOTE_ADDRESS).when(mMockDefaultNetwork).getByName(REMOTE_HOSTNAME);
+        doReturn(REMOTE_ADDRESS)
+                .when(mMockDefaultNetwork)
+                .getByName(REMOTE_ADDRESS.getHostAddress());
+
+        mMockSocketKeepalive = mock(SocketKeepalive.class);
+        doReturn(mMockSocketKeepalive)
+                .when(mMockConnectManager)
+                .createSocketKeepalive(
+                        any(Network.class),
+                        any(UdpEncapsulationSocket.class),
+                        any(Inet4Address.class),
+                        any(Inet4Address.class),
+                        any(Executor.class),
+                        any(SocketKeepalive.Callback.class));
+        doReturn(mMockConnectManager)
+                .when(mSpyContext)
+                .getSystemService(Context.CONNECTIVITY_SERVICE);
+    }
+}