Merge "Remove DatagramSocket calls from IpSecManagerTest" am: 40fe746f16 am: 335800627b

am: bd6d169a27

Change-Id: I30fdb54469197c040cc5ad2e91bde4e9a9e86d41
This commit is contained in:
nharold
2017-04-18 22:10:17 +00:00
committed by android-build-merger

View File

@@ -21,11 +21,13 @@ import android.net.ConnectivityManager;
import android.net.IpSecAlgorithm; import android.net.IpSecAlgorithm;
import android.net.IpSecManager; import android.net.IpSecManager;
import android.net.IpSecTransform; import android.net.IpSecTransform;
import android.os.ParcelFileDescriptor;
import android.system.Os;
import android.system.OsConstants;
import android.test.AndroidTestCase; import android.test.AndroidTestCase;
import android.util.Log; import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket; import java.net.DatagramSocket;
import java.io.FileDescriptor;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.Arrays; import java.util.Arrays;
@@ -82,16 +84,17 @@ public class IpSecManagerTest extends AndroidTestCase {
public void testAllocSpi() throws Exception { public void testAllocSpi() throws Exception {
for (InetAddress addr : GOOGLE_DNS_LIST) { for (InetAddress addr : GOOGLE_DNS_LIST) {
IpSecManager.SecurityParameterIndex randomSpi = null, droidSpi = null; IpSecManager.SecurityParameterIndex randomSpi = null, droidSpi = null;
randomSpi = randomSpi = mISM.reserveSecurityParameterIndex(IpSecTransform.DIRECTION_OUT, addr);
mISM.reserveSecurityParameterIndex( assertTrue(
IpSecTransform.DIRECTION_OUT, "Failed to receive a valid SPI",
addr); randomSpi.getSpi() != IpSecManager.INVALID_SECURITY_PARAMETER_INDEX);
assertTrue(randomSpi.getSpi() != IpSecManager.INVALID_SECURITY_PARAMETER_INDEX);
droidSpi = droidSpi =
mISM.reserveSecurityParameterIndex( mISM.reserveSecurityParameterIndex(
IpSecTransform.DIRECTION_IN, addr, DROID_SPI); IpSecTransform.DIRECTION_IN, addr, DROID_SPI);
assertTrue(droidSpi.getSpi() == DROID_SPI); assertTrue(
"Failed to allocate specified SPI, " + DROID_SPI,
droidSpi.getSpi() == DROID_SPI);
try { try {
mISM.reserveSecurityParameterIndex(IpSecTransform.DIRECTION_IN, addr, DROID_SPI); mISM.reserveSecurityParameterIndex(IpSecTransform.DIRECTION_IN, addr, DROID_SPI);
@@ -118,9 +121,7 @@ public class IpSecManagerTest extends AndroidTestCase {
public void testCreateTransform() throws Exception { public void testCreateTransform() throws Exception {
InetAddress local = InetAddress.getLoopbackAddress(); InetAddress local = InetAddress.getLoopbackAddress();
IpSecManager.SecurityParameterIndex outSpi = IpSecManager.SecurityParameterIndex outSpi =
mISM.reserveSecurityParameterIndex( mISM.reserveSecurityParameterIndex(IpSecTransform.DIRECTION_OUT, local);
IpSecTransform.DIRECTION_OUT,
local);
IpSecManager.SecurityParameterIndex inSpi = IpSecManager.SecurityParameterIndex inSpi =
mISM.reserveSecurityParameterIndex( mISM.reserveSecurityParameterIndex(
@@ -150,27 +151,21 @@ public class IpSecManagerTest extends AndroidTestCase {
CRYPT_KEY.length * 8)) CRYPT_KEY.length * 8))
.buildTransportModeTransform(local); .buildTransportModeTransform(local);
DatagramSocket localSocket; // Hack to ensure the socket doesn't block indefinitely on failure
localSocket = new DatagramSocket(8888); DatagramSocket localSocket = new DatagramSocket(8888);
localSocket.setSoTimeout(500); localSocket.setSoTimeout(500);
mISM.applyTransportModeTransform(localSocket, transform); ParcelFileDescriptor pin = ParcelFileDescriptor.fromDatagramSocket(localSocket);
FileDescriptor udpSocket = pin.getFileDescriptor();
mISM.applyTransportModeTransform(udpSocket, transform);
byte[] data = new String("Best test data ever!").getBytes("UTF-8"); byte[] data = new String("Best test data ever!").getBytes("UTF-8");
DatagramPacket out = new DatagramPacket(data, data.length, local, 8888); byte[] in = new byte[data.length];
localSocket.send(out); Os.sendto(udpSocket, data, 0, data.length, 0, local, 8888);
DatagramPacket in = new DatagramPacket(new byte[data.length], data.length); Os.read(udpSocket, in, 0, in.length);
assertTrue("Encapsulated data did not match.", Arrays.equals(data, in));
localSocket.receive(in); mISM.removeTransportModeTransform(udpSocket, transform);
Log.d(TAG, Arrays.toString(data)); Os.close(udpSocket);
Log.d(TAG, Arrays.toString(in.getData()));
assertTrue(Arrays.equals(data, in.getData()));
transform.close(); transform.close();
try {
localSocket.send(out);
} catch (IOException e) {
}
mISM.removeTransportModeTransform(localSocket, transform);
} }
} }