Add test for LocalSockets created from a FileDescriptor

Adding a test to catch future regressions with this code
path.

Bug: 34095140
Test: vogar --mode app_process tests/tests/net/src/android/net/cts/LocalSocketTest.java
Change-Id: I648ed87d4b9e7fa25787c150f08351c6faf55496
This commit is contained in:
Neil Fuller
2017-01-06 14:05:49 +00:00
parent d9e98a6688
commit a3577f20f2

View File

@@ -287,6 +287,42 @@ public class LocalSocketTest extends TestCase {
}
}
// http://b/34095140
public void testLocalSocketCreatedFromFileDescriptor() throws Exception {
String address = ADDRESS_PREFIX + "_testLocalSocketCreatedFromFileDescriptor";
// Establish connection between a local client and server to get a valid client socket file
// descriptor.
try (LocalSocketPair socketPair = LocalSocketPair.createConnectedSocketPair(address)) {
// Extract the client FileDescriptor we can use.
FileDescriptor fileDescriptor = socketPair.clientSocket.getFileDescriptor();
assertTrue(fileDescriptor.valid());
// Create the LocalSocket we want to test.
LocalSocket clientSocketCreatedFromFileDescriptor =
LocalSocket.createConnectedLocalSocket(fileDescriptor);
assertTrue(clientSocketCreatedFromFileDescriptor.isConnected());
assertTrue(clientSocketCreatedFromFileDescriptor.isBound());
// Test the LocalSocket can be used for communication.
LocalSocket serverSocket = socketPair.serverSocket.accept();
OutputStream clientOutputStream =
clientSocketCreatedFromFileDescriptor.getOutputStream();
InputStream serverInputStream = serverSocket.getInputStream();
clientOutputStream.write(12);
assertEquals(12, serverInputStream.read());
// Closing clientSocketCreatedFromFileDescriptor does not close the file descriptor.
clientSocketCreatedFromFileDescriptor.close();
assertTrue(fileDescriptor.valid());
// .. while closing the LocalSocket that owned the file descriptor does.
socketPair.clientSocket.close();
assertFalse(fileDescriptor.valid());
}
}
public void testFlush() throws Exception {
String address = ADDRESS_PREFIX + "_testFlush";