| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.mojo.bindings; | 5 package org.chromium.mojo.bindings; |
| 6 | 6 |
| 7 import android.test.suitebuilder.annotation.SmallTest; | 7 import android.test.suitebuilder.annotation.SmallTest; |
| 8 | 8 |
| 9 import org.chromium.mojo.MojoTestCase; | 9 import org.chromium.mojo.MojoTestCase; |
| 10 import org.chromium.mojo.TestUtils; | |
| 11 import org.chromium.mojo.bindings.BindingsTestUtils.CapturingErrorHandler; | 10 import org.chromium.mojo.bindings.BindingsTestUtils.CapturingErrorHandler; |
| 12 import org.chromium.mojo.bindings.BindingsTestUtils.RecordingMessageReceiver; | 11 import org.chromium.mojo.bindings.BindingsTestUtils.RecordingMessageReceiver; |
| 13 import org.chromium.mojo.system.Core; | 12 import org.chromium.mojo.system.Core; |
| 14 import org.chromium.mojo.system.Handle; | 13 import org.chromium.mojo.system.Handle; |
| 15 import org.chromium.mojo.system.MessagePipeHandle; | 14 import org.chromium.mojo.system.MessagePipeHandle; |
| 16 import org.chromium.mojo.system.MojoResult; | 15 import org.chromium.mojo.system.MojoResult; |
| 17 import org.chromium.mojo.system.Pair; | 16 import org.chromium.mojo.system.Pair; |
| 18 import org.chromium.mojo.system.impl.CoreImpl; | 17 import org.chromium.mojo.system.impl.CoreImpl; |
| 19 | 18 |
| 20 import java.nio.ByteBuffer; | 19 import java.nio.ByteBuffer; |
| 21 import java.util.ArrayList; | 20 import java.util.ArrayList; |
| 22 | 21 |
| 23 /** | 22 /** |
| 24 * Testing the {@link Connector} class. | 23 * Testing the {@link Connector} class. |
| 25 */ | 24 */ |
| 26 public class ConnectorTest extends MojoTestCase { | 25 public class ConnectorTest extends MojoTestCase { |
| 27 | 26 |
| 28 private static final long RUN_LOOP_TIMEOUT_MS = 25; | 27 private static final long RUN_LOOP_TIMEOUT_MS = 25; |
| 29 | 28 |
| 30 private static final int DATA_LENGTH = 1024; | 29 private static final int DATA_LENGTH = 1024; |
| 31 | 30 |
| 32 private MessagePipeHandle mHandle; | 31 private MessagePipeHandle mHandle; |
| 33 private Connector mConnector; | 32 private Connector mConnector; |
| 34 private Message mTestMessage; | 33 private MessageWithHeader mTestMessage; |
| 35 private RecordingMessageReceiver mReceiver; | 34 private RecordingMessageReceiver mReceiver; |
| 36 private CapturingErrorHandler mErrorHandler; | 35 private CapturingErrorHandler mErrorHandler; |
| 37 | 36 |
| 38 /** | 37 /** |
| 39 * @see MojoTestCase#setUp() | 38 * @see MojoTestCase#setUp() |
| 40 */ | 39 */ |
| 41 @Override | 40 @Override |
| 42 protected void setUp() throws Exception { | 41 protected void setUp() throws Exception { |
| 43 super.setUp(); | 42 super.setUp(); |
| 44 Core core = CoreImpl.getInstance(); | 43 Core core = CoreImpl.getInstance(); |
| 45 Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessageP
ipe(); | 44 Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessageP
ipe(); |
| 46 mHandle = handles.first; | 45 mHandle = handles.first; |
| 47 mConnector = new Connector(handles.second); | 46 mConnector = new Connector(handles.second); |
| 48 mReceiver = new RecordingMessageReceiver(); | 47 mReceiver = new RecordingMessageReceiver(); |
| 49 mConnector.setIncomingMessageReceiver(mReceiver); | 48 mConnector.setIncomingMessageReceiver(mReceiver); |
| 50 mErrorHandler = new CapturingErrorHandler(); | 49 mErrorHandler = new CapturingErrorHandler(); |
| 51 mConnector.setErrorHandler(mErrorHandler); | 50 mConnector.setErrorHandler(mErrorHandler); |
| 52 mConnector.start(); | 51 mConnector.start(); |
| 53 mTestMessage = new Message(TestUtils.newRandomBuffer(DATA_LENGTH), new A
rrayList<Handle>()); | 52 mTestMessage = BindingsTestUtils.newRandomMessageWithHeader(DATA_LENGTH)
; |
| 54 assertNull(mErrorHandler.exception); | 53 assertNull(mErrorHandler.exception); |
| 55 assertEquals(0, mReceiver.messages.size()); | 54 assertEquals(0, mReceiver.messages.size()); |
| 56 } | 55 } |
| 57 | 56 |
| 58 /** | 57 /** |
| 59 * @see MojoTestCase#tearDown() | 58 * @see MojoTestCase#tearDown() |
| 60 */ | 59 */ |
| 61 @Override | 60 @Override |
| 62 protected void tearDown() throws Exception { | 61 protected void tearDown() throws Exception { |
| 63 mConnector.close(); | 62 mConnector.close(); |
| 64 mHandle.close(); | 63 mHandle.close(); |
| 65 super.tearDown(); | 64 super.tearDown(); |
| 66 } | 65 } |
| 67 | 66 |
| 68 /** | 67 /** |
| 69 * Test sending a message through a {@link Connector}. | 68 * Test sending a message through a {@link Connector}. |
| 70 */ | 69 */ |
| 71 @SmallTest | 70 @SmallTest |
| 72 public void testSendingMessage() { | 71 public void testSendingMessage() { |
| 73 mConnector.accept(mTestMessage); | 72 mConnector.accept(mTestMessage); |
| 74 assertNull(mErrorHandler.exception); | 73 assertNull(mErrorHandler.exception); |
| 75 ByteBuffer received = ByteBuffer.allocateDirect(DATA_LENGTH); | 74 ByteBuffer received = ByteBuffer.allocateDirect(DATA_LENGTH); |
| 76 MessagePipeHandle.ReadMessageResult result = mHandle.readMessage(receive
d, 0, | 75 MessagePipeHandle.ReadMessageResult result = mHandle.readMessage(receive
d, 0, |
| 77 MessagePipeHandle.ReadFlags.NONE); | 76 MessagePipeHandle.ReadFlags.NONE); |
| 78 assertEquals(MojoResult.OK, result.getMojoResult()); | 77 assertEquals(MojoResult.OK, result.getMojoResult()); |
| 79 assertEquals(DATA_LENGTH, result.getMessageSize()); | 78 assertEquals(DATA_LENGTH, result.getMessageSize()); |
| 80 assertEquals(mTestMessage.buffer, received); | 79 assertEquals(mTestMessage.getMessage().buffer, received); |
| 81 } | 80 } |
| 82 | 81 |
| 83 /** | 82 /** |
| 84 * Test receiving a message through a {@link Connector} | 83 * Test receiving a message through a {@link Connector} |
| 85 */ | 84 */ |
| 86 @SmallTest | 85 @SmallTest |
| 87 public void testReceivingMessage() { | 86 public void testReceivingMessage() { |
| 88 mHandle.writeMessage(mTestMessage.buffer, new ArrayList<Handle>(), | 87 mHandle.writeMessage(mTestMessage.getMessage().buffer, new ArrayList<Han
dle>(), |
| 89 MessagePipeHandle.WriteFlags.NONE); | 88 MessagePipeHandle.WriteFlags.NONE); |
| 90 nativeRunLoop(RUN_LOOP_TIMEOUT_MS); | 89 nativeRunLoop(RUN_LOOP_TIMEOUT_MS); |
| 91 assertNull(mErrorHandler.exception); | 90 assertNull(mErrorHandler.exception); |
| 92 assertEquals(1, mReceiver.messages.size()); | 91 assertEquals(1, mReceiver.messages.size()); |
| 93 Message received = mReceiver.messages.get(0); | 92 MessageWithHeader received = mReceiver.messages.get(0); |
| 94 assertEquals(0, received.handles.size()); | 93 assertEquals(0, received.getMessage().handles.size()); |
| 95 assertEquals(mTestMessage.buffer, received.buffer); | 94 assertEquals(mTestMessage.getMessage().buffer, received.getMessage().buf
fer); |
| 96 } | 95 } |
| 97 | 96 |
| 98 /** | 97 /** |
| 99 * Test receiving an error through a {@link Connector}. | 98 * Test receiving an error through a {@link Connector}. |
| 100 */ | 99 */ |
| 101 @SmallTest | 100 @SmallTest |
| 102 public void testErrors() { | 101 public void testErrors() { |
| 103 mHandle.close(); | 102 mHandle.close(); |
| 104 nativeRunLoop(RUN_LOOP_TIMEOUT_MS); | 103 nativeRunLoop(RUN_LOOP_TIMEOUT_MS); |
| 105 assertNotNull(mErrorHandler.exception); | 104 assertNotNull(mErrorHandler.exception); |
| 106 assertEquals(MojoResult.FAILED_PRECONDITION, mErrorHandler.exception.get
MojoResult()); | 105 assertEquals(MojoResult.FAILED_PRECONDITION, mErrorHandler.exception.get
MojoResult()); |
| 107 } | 106 } |
| 108 } | 107 } |
| OLD | NEW |