Merge "Verify creation and deletion of IpSecTransform pair"

This commit is contained in:
Yan Yan
2020-05-26 22:34:00 +00:00
committed by Gerrit Code Review
2 changed files with 69 additions and 11 deletions

View File

@@ -165,8 +165,11 @@ public class IkeSessionPskTest extends IkeSessionTestBase {
assertTrue(firstChildConfig.getInternalDnsServers().isEmpty()); assertTrue(firstChildConfig.getInternalDnsServers().isEmpty());
assertTrue(firstChildConfig.getInternalDhcpServers().isEmpty()); assertTrue(firstChildConfig.getInternalDhcpServers().isEmpty());
assertNotNull(mFirstChildSessionCallback.awaitNextCreatedIpSecTransform()); IpSecTransformCallRecord firstTransformRecordA =
assertNotNull(mFirstChildSessionCallback.awaitNextCreatedIpSecTransform()); mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
IpSecTransformCallRecord firstTransformRecordB =
mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
verifyCreateIpSecTransformPair(firstTransformRecordA, firstTransformRecordB);
// Open additional Child Session // Open additional Child Session
TestChildSessionCallback additionalChildCb = new TestChildSessionCallback(); TestChildSessionCallback additionalChildCb = new TestChildSessionCallback();
@@ -188,8 +191,11 @@ public class IkeSessionPskTest extends IkeSessionTestBase {
assertTrue(additionalChildConfig.getInternalDnsServers().isEmpty()); assertTrue(additionalChildConfig.getInternalDnsServers().isEmpty());
assertTrue(additionalChildConfig.getInternalDhcpServers().isEmpty()); assertTrue(additionalChildConfig.getInternalDhcpServers().isEmpty());
assertNotNull(additionalChildCb.awaitNextCreatedIpSecTransform()); IpSecTransformCallRecord additionalTransformRecordA =
assertNotNull(additionalChildCb.awaitNextCreatedIpSecTransform()); additionalChildCb.awaitNextCreatedIpSecTransform();
IpSecTransformCallRecord additionalTransformRecordB =
additionalChildCb.awaitNextCreatedIpSecTransform();
verifyCreateIpSecTransformPair(additionalTransformRecordA, additionalTransformRecordB);
// Close additional Child Session // Close additional Child Session
ikeSession.closeChildSession(additionalChildCb); ikeSession.closeChildSession(additionalChildCb);
@@ -199,8 +205,8 @@ public class IkeSessionPskTest extends IkeSessionTestBase {
true /* expectedUseEncap */, true /* expectedUseEncap */,
hexStringToByteArray(SUCCESS_DELETE_CHILD_RESP)); hexStringToByteArray(SUCCESS_DELETE_CHILD_RESP));
assertNotNull(additionalChildCb.awaitNextDeletedIpSecTransform()); verifyDeleteIpSecTransformPair(
assertNotNull(additionalChildCb.awaitNextDeletedIpSecTransform()); additionalChildCb, additionalTransformRecordA, additionalTransformRecordB);
additionalChildCb.awaitOnClosed(); additionalChildCb.awaitOnClosed();
// Close IKE Session // Close IKE Session
@@ -211,12 +217,10 @@ public class IkeSessionPskTest extends IkeSessionTestBase {
true /* expectedUseEncap */, true /* expectedUseEncap */,
hexStringToByteArray(SUCCESS_DELETE_IKE_RESP)); hexStringToByteArray(SUCCESS_DELETE_IKE_RESP));
assertNotNull(mFirstChildSessionCallback.awaitNextDeletedIpSecTransform()); verifyDeleteIpSecTransformPair(
assertNotNull(mFirstChildSessionCallback.awaitNextDeletedIpSecTransform()); mFirstChildSessionCallback, firstTransformRecordA, firstTransformRecordB);
mFirstChildSessionCallback.awaitOnClosed(); mFirstChildSessionCallback.awaitOnClosed();
mIkeSessionCallback.awaitOnClosed(); mIkeSessionCallback.awaitOnClosed();
// TODO: verify created and deleted IpSecTransform pair and their directions
} }
@Test @Test
@@ -245,7 +249,7 @@ public class IkeSessionPskTest extends IkeSessionTestBase {
@Test @Test
public void testIkeInitFail() throws Exception { public void testIkeInitFail() throws Exception {
String ikeInitFailRespHex = final String ikeInitFailRespHex =
"46B8ECA1E0D72A180000000000000000292022200000000000000024000000080000000E"; "46B8ECA1E0D72A180000000000000000292022200000000000000024000000080000000E";
// Open IKE Session // Open IKE Session

View File

@@ -17,12 +17,16 @@ package android.net.ipsec.ike.cts;
import static android.app.AppOpsManager.OP_MANAGE_IPSEC_TUNNELS; import static android.app.AppOpsManager.OP_MANAGE_IPSEC_TUNNELS;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.app.AppOpsManager; import android.app.AppOpsManager;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.InetAddresses; import android.net.InetAddresses;
import android.net.IpSecManager;
import android.net.IpSecTransform; import android.net.IpSecTransform;
import android.net.LinkAddress; import android.net.LinkAddress;
import android.net.Network; import android.net.Network;
@@ -55,6 +59,9 @@ import org.junit.runner.RunWith;
import java.net.Inet4Address; import java.net.Inet4Address;
import java.net.InetAddress; import java.net.InetAddress;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@@ -370,6 +377,53 @@ abstract class IkeSessionTestBase extends IkeTestBase {
this.ipSecTransform = ipSecTransform; this.ipSecTransform = ipSecTransform;
this.direction = direction; this.direction = direction;
} }
@Override
public int hashCode() {
return Objects.hash(ipSecTransform, direction);
}
@Override
public boolean equals(Object o) {
if (!(o instanceof IpSecTransformCallRecord)) return false;
IpSecTransformCallRecord record = (IpSecTransformCallRecord) o;
return ipSecTransform.equals(record.ipSecTransform) && direction == record.direction;
}
}
static void verifyCreateIpSecTransformPair(
IpSecTransformCallRecord transformRecordA, IpSecTransformCallRecord transformRecordB) {
IpSecTransform transformA = transformRecordA.ipSecTransform;
IpSecTransform transformB = transformRecordB.ipSecTransform;
assertNotNull(transformA);
assertNotNull(transformB);
Set<Integer> expectedDirections = new HashSet<>();
expectedDirections.add(IpSecManager.DIRECTION_IN);
expectedDirections.add(IpSecManager.DIRECTION_OUT);
Set<Integer> resultDirections = new HashSet<>();
resultDirections.add(transformRecordA.direction);
resultDirections.add(transformRecordB.direction);
assertEquals(expectedDirections, resultDirections);
}
static void verifyDeleteIpSecTransformPair(
TestChildSessionCallback childCb,
IpSecTransformCallRecord expectedTransformRecordA,
IpSecTransformCallRecord expectedTransformRecordB) {
Set<IpSecTransformCallRecord> expectedTransforms = new HashSet<>();
expectedTransforms.add(expectedTransformRecordA);
expectedTransforms.add(expectedTransformRecordB);
Set<IpSecTransformCallRecord> resultTransforms = new HashSet<>();
resultTransforms.add(childCb.awaitNextDeletedIpSecTransform());
resultTransforms.add(childCb.awaitNextDeletedIpSecTransform());
assertEquals(expectedTransforms, resultTransforms);
} }
/** Package private method to check if device has IPsec tunnels feature */ /** Package private method to check if device has IPsec tunnels feature */