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 |