summaryrefslogtreecommitdiffstats
path: root/mojo/android/javatests
diff options
context:
space:
mode:
authorqsr@chromium.org <qsr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-01 11:33:40 +0000
committerqsr@chromium.org <qsr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-01 11:33:40 +0000
commit93f91ae02426137af3ae501ecdd4a9e98209ebde (patch)
tree6d5b2f1f4d257b204f6d694ec553fe8bc6f71e0e /mojo/android/javatests
parent7fc3f9f05f19815697ed70221bbd8d53110a085a (diff)
downloadchromium_src-93f91ae02426137af3ae501ecdd4a9e98209ebde.zip
chromium_src-93f91ae02426137af3ae501ecdd4a9e98209ebde.tar.gz
chromium_src-93f91ae02426137af3ae501ecdd4a9e98209ebde.tar.bz2
Adding Connector class to observe a message pipe.
R=rmcilroy@chromium.org, viettrungluu@chromium.org Review URL: https://codereview.chromium.org/324903003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@280799 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo/android/javatests')
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTestUtils.java50
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java108
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/MessageTest.java15
3 files changed, 159 insertions, 14 deletions
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTestUtils.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTestUtils.java
new file mode 100644
index 0000000..3fcee86
--- /dev/null
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTestUtils.java
@@ -0,0 +1,50 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.mojo.bindings;
+
+import org.chromium.mojo.system.MojoException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Utility class for bindings tests.
+ */
+public class BindingsTestUtils {
+
+ /**
+ * {@link MessageReceiver} that records any message it receives.
+ */
+ public static class RecordingMessageReceiver implements MessageReceiver {
+
+ public final List<Message> messages = new ArrayList<Message>();
+
+ /**
+ * @see MessageReceiver#accept(Message)
+ */
+ @Override
+ public boolean accept(Message message) {
+ messages.add(message);
+ return true;
+ }
+ }
+
+ /**
+ * {@link Connector.ErrorHandler} that records any error it received.
+ */
+ public static class CapturingErrorHandler implements Connector.ErrorHandler {
+
+ public MojoException exception = null;
+
+ /**
+ * @see Connector.ErrorHandler#onError(MojoException)
+ */
+ @Override
+ public void onError(MojoException e) {
+ exception = e;
+ }
+ }
+
+}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java
new file mode 100644
index 0000000..57f2550
--- /dev/null
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java
@@ -0,0 +1,108 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.mojo.bindings;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import org.chromium.mojo.MojoTestCase;
+import org.chromium.mojo.TestUtils;
+import org.chromium.mojo.bindings.BindingsTestUtils.CapturingErrorHandler;
+import org.chromium.mojo.bindings.BindingsTestUtils.RecordingMessageReceiver;
+import org.chromium.mojo.system.Core;
+import org.chromium.mojo.system.Handle;
+import org.chromium.mojo.system.MessagePipeHandle;
+import org.chromium.mojo.system.MojoResult;
+import org.chromium.mojo.system.Pair;
+import org.chromium.mojo.system.impl.CoreImpl;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+
+/**
+ * Testing the {@link Connector} class.
+ */
+public class ConnectorTest extends MojoTestCase {
+
+ private static final long RUN_LOOP_TIMEOUT_MS = 25;
+
+ private static final int DATA_LENGTH = 1024;
+
+ private MessagePipeHandle mHandle;
+ private Connector mConnector;
+ private Message mTestMessage;
+ private RecordingMessageReceiver mReceiver;
+ private CapturingErrorHandler mErrorHandler;
+
+ /**
+ * @see MojoTestCase#setUp()
+ */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ Core core = CoreImpl.getInstance();
+ Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe();
+ mHandle = handles.first;
+ mConnector = new Connector(handles.second);
+ mReceiver = new RecordingMessageReceiver();
+ mConnector.setIncomingMessageReceiver(mReceiver);
+ mErrorHandler = new CapturingErrorHandler();
+ mConnector.setErrorHandler(mErrorHandler);
+ mConnector.start();
+ mTestMessage = new Message(TestUtils.newRandomBuffer(DATA_LENGTH), new ArrayList<Handle>());
+ assertNull(mErrorHandler.exception);
+ assertEquals(0, mReceiver.messages.size());
+ }
+
+ /**
+ * @see MojoTestCase#tearDown()
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ mConnector.close();
+ mHandle.close();
+ super.tearDown();
+ }
+
+ /**
+ * Test sending a message through a {@link Connector}.
+ */
+ @SmallTest
+ public void testSendingMessage() {
+ mConnector.accept(mTestMessage);
+ assertNull(mErrorHandler.exception);
+ ByteBuffer received = ByteBuffer.allocateDirect(DATA_LENGTH);
+ MessagePipeHandle.ReadMessageResult result = mHandle.readMessage(received, 0,
+ MessagePipeHandle.ReadFlags.NONE);
+ assertEquals(MojoResult.OK, result.getMojoResult());
+ assertEquals(DATA_LENGTH, result.getMessageSize());
+ assertEquals(mTestMessage.buffer, received);
+ }
+
+ /**
+ * Test receiving a message through a {@link Connector}
+ */
+ @SmallTest
+ public void testReceivingMessage() {
+ mHandle.writeMessage(mTestMessage.buffer, new ArrayList<Handle>(),
+ MessagePipeHandle.WriteFlags.NONE);
+ nativeRunLoop(RUN_LOOP_TIMEOUT_MS);
+ assertNull(mErrorHandler.exception);
+ assertEquals(1, mReceiver.messages.size());
+ Message received = mReceiver.messages.get(0);
+ assertEquals(0, received.handles.size());
+ assertEquals(mTestMessage.buffer, received.buffer);
+ }
+
+ /**
+ * Test receiving an error through a {@link Connector}.
+ */
+ @SmallTest
+ public void testErrors() {
+ mHandle.close();
+ nativeRunLoop(RUN_LOOP_TIMEOUT_MS);
+ assertNotNull(mErrorHandler.exception);
+ assertEquals(MojoResult.FAILED_PRECONDITION, mErrorHandler.exception.getMojoResult());
+ }
+}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageTest.java
index ee58979..9f518f5 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageTest.java
@@ -8,6 +8,7 @@ import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.mojo.MojoTestCase;
import org.chromium.mojo.TestUtils;
+import org.chromium.mojo.bindings.BindingsTestUtils.RecordingMessageReceiver;
import org.chromium.mojo.system.Core;
import org.chromium.mojo.system.DataPipe;
import org.chromium.mojo.system.Handle;
@@ -27,20 +28,6 @@ import java.util.List;
*/
public class MessageTest extends MojoTestCase {
- static class RecordingMessageReceiver implements MessageReceiver {
-
- public final List<Message> messages = new ArrayList<Message>();
-
- /**
- * @see MessageReceiver#accept(Message)
- */
- @Override
- public boolean accept(Message message) {
- messages.add(message);
- return true;
- }
- }
-
private static final int DATA_SIZE = 1024;
private ByteBuffer mData;