summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Moreland <smoreland@google.com>2018-11-12 19:42:06 -0800
committerSteven Moreland <smoreland@google.com>2018-11-14 01:00:03 +0000
commitc4eddfa7d9e5ed302fc708b7471a9e2c5f0a7bfc (patch)
tree448c8ceac51cb0827db149ecdc54f2bee41c734f
parent11198a4acdd43f9495ab887e12e4658e99ef26db (diff)
downloadplatform_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.java32
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));