diff options
author | Steven Moreland <smoreland@google.com> | 2018-11-12 19:42:06 -0800 |
---|---|---|
committer | Steven Moreland <smoreland@google.com> | 2018-11-14 01:00:03 +0000 |
commit | c4eddfa7d9e5ed302fc708b7471a9e2c5f0a7bfc (patch) | |
tree | 448c8ceac51cb0827db149ecdc54f2bee41c734f | |
parent | 11198a4acdd43f9495ab887e12e4658e99ef26db (diff) | |
download | platform_cts-c4eddfa7d9e5ed302fc708b7471a9e2c5f0a7bfc.tar.gz platform_cts-c4eddfa7d9e5ed302fc708b7471a9e2c5f0a7bfc.tar.bz2 platform_cts-c4eddfa7d9e5ed302fc708b7471a9e2c5f0a7bfc.zip |
NdkBinderTest: check for PFD detach
Native code doesn't handle ParcelFileDescriptor detaches. Here we
check to make sure we get the expected detach message. If/when native
code is ever updated to handle a PFD comm channel, this test can be
updated to expect the correct behavior.
Bug: 115607973
Test: atest android.binder.cts
Change-Id: I34e7e22265b3ff8fcd0fbd2466d3a37f18d08ae7
-rw-r--r-- | tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java b/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java index a09679dd657..9397a691d7f 100644 --- a/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java +++ b/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java @@ -129,20 +129,34 @@ public class JavaClientTest { @Test public void testRepeatFd() throws RemoteException, IOException { - ParcelFileDescriptor inFd = ParcelFileDescriptor.open( - InstrumentationRegistry.getTargetContext().getFileStreamPath("test-dummy"), - ParcelFileDescriptor.MODE_CREATE | ParcelFileDescriptor.MODE_WRITE_ONLY); + ParcelFileDescriptor[] sockets = ParcelFileDescriptor.createReliableSocketPair(); + ParcelFileDescriptor socketIn = sockets[0]; + ParcelFileDescriptor socketOut = sockets[1]; - ParcelFileDescriptor outFd = mInterface.RepeatFd(inFd); + ParcelFileDescriptor repeatFd = mInterface.RepeatFd(socketIn); - FileOutputStream outFdStream = new ParcelFileDescriptor.AutoCloseOutputStream(outFd); + boolean isNativeRemote = mInterface.GetName().equals("CPP"); + try { + socketOut.checkError(); + + // Either native didn't properly call detach, or native properly handles detach, and + // we should change the test to enforce that socket comms work. + assertFalse("Native doesn't implement comm fd but did not get detach.", isNativeRemote); + } catch (ParcelFileDescriptor.FileDescriptorDetachedException e) { + assertTrue("Detach, so remote should be native", isNativeRemote); + } + + // Both backends support these. + socketIn.checkError(); + repeatFd.checkError(); + + FileOutputStream repeatFdStream = new ParcelFileDescriptor.AutoCloseOutputStream(repeatFd); String testData = "asdf"; byte[] output = testData.getBytes(); - outFdStream.write(output); - outFdStream.close(); + repeatFdStream.write(output); + repeatFdStream.close(); - FileInputStream fileInputStream = - InstrumentationRegistry.getTargetContext().openFileInput("test-dummy"); + FileInputStream fileInputStream = new ParcelFileDescriptor.AutoCloseInputStream(socketOut); byte[] input = new byte[output.length]; assertEquals(input.length, fileInputStream.read(input)); |