diff options
author | Casey Dahlin <sadmac@google.com> | 2015-11-24 12:18:59 -0800 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-12-03 23:34:04 +0000 |
commit | 77e6241056c722a53a311cd91ae66c7444b7a47c (patch) | |
tree | 405faab7f52336f72e9157dd999bd2cf19c0a6e9 /tests | |
parent | a94c9593a4316ef3147a208a3087010bab256735 (diff) | |
download | android_system_tools_aidl-77e6241056c722a53a311cd91ae66c7444b7a47c.tar.gz android_system_tools_aidl-77e6241056c722a53a311cd91ae66c7444b7a47c.tar.bz2 android_system_tools_aidl-77e6241056c722a53a311cd91ae66c7444b7a47c.zip |
Add integration test for file descriptors in java
Test: New test passes
Bug: 25980155
Change-Id: I79321016b66e0b2dcaf471ae0820843e2e22de0a
Diffstat (limited to 'tests')
-rw-r--r-- | tests/java_app/src/android/aidl/tests/TestServiceClient.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/java_app/src/android/aidl/tests/TestServiceClient.java b/tests/java_app/src/android/aidl/tests/TestServiceClient.java index 42a60a9..c2f59f7 100644 --- a/tests/java_app/src/android/aidl/tests/TestServiceClient.java +++ b/tests/java_app/src/android/aidl/tests/TestServiceClient.java @@ -25,6 +25,10 @@ import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; import android.util.Log; +import java.io.File; +import java.io.FileDescriptor; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; @@ -470,6 +474,43 @@ public class TestServiceClient extends Activity { mLog.log("...service can manipulate parcelables."); } + private void checkFileDescriptorPassing(ITestService service) + throws TestFailException { + mLog.log("Checking that service can receive and return file descriptors..."); + try { + FileOutputStream fileOutputStream = + openFileOutput("test-dummy", Context.MODE_PRIVATE); + + FileDescriptor descriptor = fileOutputStream.getFD(); + FileDescriptor journeyed = service.RepeatFileDescriptor(descriptor); + fileOutputStream.close(); + + FileOutputStream journeyedStream = new FileOutputStream(journeyed); + + String testData = "FrazzleSnazzleFlimFlamFlibbityGumboChops"; + byte[] output = testData.getBytes(); + journeyedStream.write(output); + journeyedStream.close(); + + FileInputStream fileInputStream = openFileInput("test-dummy"); + byte[] input = new byte[output.length]; + if (fileInputStream.read(input) != input.length) { + mLog.logAndThrow("Read short count from file"); + } + + if (!Arrays.equals(input, output)) { + mLog.logAndThrow("Read incorrect data"); + } + } catch (RemoteException ex) { + mLog.log(ex.toString()); + mLog.logAndThrow("Service failed to repeat a file descriptor."); + } catch (IOException ex) { + mLog.log(ex.toString()); + mLog.logAndThrow("Exception while operating on temporary file"); + } + mLog.log("...service can receive and return file descriptors."); + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -483,6 +524,7 @@ public class TestServiceClient extends Activity { checkBinderExchange(service); checkListReversal(service); checkParcelables(service); + checkFileDescriptorPassing(service); mLog.log(mSuccessSentinel); } catch (TestFailException e) { mLog.log(mFailureSentinel); |