Merge "Remove DatagramSocket calls from IpSecManagerTest" am: 40fe746f16 am: 335800627b
am: bd6d169a27
Change-Id: I30fdb54469197c040cc5ad2e91bde4e9a9e86d41
This commit is contained in:
@@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user