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.bindings.BindingsTestUtils.RecordingMessageReceiver; | 10 import org.chromium.mojo.bindings.BindingsTestUtils.RecordingMessageReceiver; |
11 import org.chromium.mojo.system.Core; | 11 import org.chromium.mojo.system.Core; |
12 import org.chromium.mojo.system.DataPipe; | 12 import org.chromium.mojo.system.DataPipe; |
13 import org.chromium.mojo.system.Handle; | 13 import org.chromium.mojo.system.Handle; |
14 import org.chromium.mojo.system.MessagePipeHandle; | 14 import org.chromium.mojo.system.MessagePipeHandle; |
15 import org.chromium.mojo.system.MojoException; | 15 import org.chromium.mojo.system.MojoException; |
16 import org.chromium.mojo.system.MojoResult; | 16 import org.chromium.mojo.system.MojoResult; |
17 import org.chromium.mojo.system.Pair; | 17 import org.chromium.mojo.system.Pair; |
18 import org.chromium.mojo.system.impl.CoreImpl; | 18 import org.chromium.mojo.system.impl.CoreImpl; |
19 | 19 |
20 import java.nio.ByteBuffer; | 20 import java.nio.ByteBuffer; |
21 import java.util.ArrayList; | 21 import java.util.ArrayList; |
22 import java.util.Arrays; | 22 import java.util.Arrays; |
23 import java.util.List; | 23 import java.util.List; |
24 | 24 |
25 /** | 25 /** |
26 * Testing {@link MessageWithHeader}. | 26 * Testing {@link Connector#readAndDispatchMessage}. |
27 */ | 27 */ |
28 public class MessageWithHeaderTest extends MojoTestCase { | 28 public class ReadAndDispatchMessageTest extends MojoTestCase { |
29 | 29 |
30 private static final int DATA_SIZE = 1024; | 30 private static final int DATA_SIZE = 1024; |
31 | 31 |
32 private ByteBuffer mData; | 32 private ByteBuffer mData; |
33 private Pair<MessagePipeHandle, MessagePipeHandle> mHandles; | 33 private Pair<MessagePipeHandle, MessagePipeHandle> mHandles; |
34 private List<Handle> mHandlesToSend = new ArrayList<Handle>(); | 34 private List<Handle> mHandlesToSend = new ArrayList<Handle>(); |
35 private List<Handle> mHandlesToClose = new ArrayList<Handle>(); | 35 private List<Handle> mHandlesToClose = new ArrayList<Handle>(); |
36 private RecordingMessageReceiver mMessageReceiver; | 36 private RecordingMessageReceiver mMessageReceiver; |
37 | 37 |
38 /** | 38 /** |
39 * @see org.chromium.mojo.MojoTestCase#setUp() | 39 * @see org.chromium.mojo.MojoTestCase#setUp() |
40 */ | 40 */ |
41 @Override | 41 @Override |
42 protected void setUp() throws Exception { | 42 protected void setUp() throws Exception { |
43 super.setUp(); | 43 super.setUp(); |
44 Core core = CoreImpl.getInstance(); | 44 Core core = CoreImpl.getInstance(); |
45 mData = BindingsTestUtils.newRandomMessageWithHeader(DATA_SIZE).getMessa
ge().buffer; | 45 mData = BindingsTestUtils.newRandomMessageWithHeader(DATA_SIZE).getData(
); |
46 mMessageReceiver = new RecordingMessageReceiver(); | 46 mMessageReceiver = new RecordingMessageReceiver(); |
47 mHandles = core.createMessagePipe(new MessagePipeHandle.CreateOptions())
; | 47 mHandles = core.createMessagePipe(new MessagePipeHandle.CreateOptions())
; |
48 Pair<DataPipe.ProducerHandle, DataPipe.ConsumerHandle> datapipe = core.c
reateDataPipe(null); | 48 Pair<DataPipe.ProducerHandle, DataPipe.ConsumerHandle> datapipe = core.c
reateDataPipe(null); |
49 mHandlesToSend.addAll(Arrays.asList(datapipe.first, datapipe.second)); | 49 mHandlesToSend.addAll(Arrays.asList(datapipe.first, datapipe.second)); |
50 mHandlesToClose.addAll(Arrays.asList(mHandles.first, mHandles.second)); | 50 mHandlesToClose.addAll(Arrays.asList(mHandles.first, mHandles.second)); |
51 mHandlesToClose.addAll(mHandlesToSend); | 51 mHandlesToClose.addAll(mHandlesToSend); |
52 } | 52 } |
53 | 53 |
54 /** | 54 /** |
55 * @see org.chromium.mojo.MojoTestCase#tearDown() | 55 * @see org.chromium.mojo.MojoTestCase#tearDown() |
56 */ | 56 */ |
57 @Override | 57 @Override |
58 protected void tearDown() throws Exception { | 58 protected void tearDown() throws Exception { |
59 for (Handle handle : mHandlesToClose) { | 59 for (Handle handle : mHandlesToClose) { |
60 handle.close(); | 60 handle.close(); |
61 } | 61 } |
62 super.tearDown(); | 62 super.tearDown(); |
63 } | 63 } |
64 | 64 |
65 /** | 65 /** |
66 * Testing {@link MessageWithHeader#readAndDispatchMessage(MessagePipeHandle
, MessageReceiver)} | 66 * Testing {@link Connector#readAndDispatchMessage(MessagePipeHandle, Messag
eReceiver)} |
67 */ | 67 */ |
68 @SmallTest | 68 @SmallTest |
69 public void testReadAndDispatchMessage() { | 69 public void testReadAndDispatchMessage() { |
70 mHandles.first.writeMessage(mData, mHandlesToSend, MessagePipeHandle.Wri
teFlags.NONE); | 70 mHandles.first.writeMessage(mData, mHandlesToSend, MessagePipeHandle.Wri
teFlags.NONE); |
71 assertEquals(MojoResult.OK, | 71 assertEquals(MojoResult.OK, |
72 MessageWithHeader.readAndDispatchMessage(mHandles.second, mMessa
geReceiver)); | 72 Connector.readAndDispatchMessage(mHandles.second, mMessageReceiv
er)); |
73 assertEquals(1, mMessageReceiver.messages.size()); | 73 assertEquals(1, mMessageReceiver.messages.size()); |
74 MessageWithHeader message = mMessageReceiver.messages.get(0); | 74 Message message = mMessageReceiver.messages.get(0); |
75 mHandlesToClose.addAll(message.getMessage().handles); | 75 mHandlesToClose.addAll(message.getHandles()); |
76 assertEquals(mData, message.getMessage().buffer); | 76 assertEquals(mData, message.getData()); |
77 assertEquals(2, message.getMessage().handles.size()); | 77 assertEquals(2, message.getHandles().size()); |
78 for (Handle handle : message.getMessage().handles) { | 78 for (Handle handle : message.getHandles()) { |
79 assertTrue(handle.isValid()); | 79 assertTrue(handle.isValid()); |
80 } | 80 } |
81 } | 81 } |
82 | 82 |
83 /** | 83 /** |
84 * Testing {@link MessageWithHeader#readAndDispatchMessage(MessagePipeHandle
, MessageReceiver)} | 84 * Testing {@link Connector#readAndDispatchMessage(MessagePipeHandle, Messag
eReceiver)} |
85 * with no message available. | 85 * with no message available. |
86 */ | 86 */ |
87 @SmallTest | 87 @SmallTest |
88 public void testReadAndDispatchMessageOnEmptyHandle() { | 88 public void testReadAndDispatchMessageOnEmptyHandle() { |
89 assertEquals(MojoResult.SHOULD_WAIT, | 89 assertEquals(MojoResult.SHOULD_WAIT, |
90 MessageWithHeader.readAndDispatchMessage(mHandles.second, mMessa
geReceiver)); | 90 Connector.readAndDispatchMessage(mHandles.second, mMessageReceiv
er)); |
91 assertEquals(0, mMessageReceiver.messages.size()); | 91 assertEquals(0, mMessageReceiver.messages.size()); |
92 } | 92 } |
93 | 93 |
94 /** | 94 /** |
95 * Testing {@link MessageWithHeader#readAndDispatchMessage(MessagePipeHandle
, MessageReceiver)} | 95 * Testing {@link Connector#readAndDispatchMessage(MessagePipeHandle, Messag
eReceiver)} |
96 * on closed handle. | 96 * on closed handle. |
97 */ | 97 */ |
98 @SmallTest | 98 @SmallTest |
99 public void testReadAndDispatchMessageOnClosedHandle() { | 99 public void testReadAndDispatchMessageOnClosedHandle() { |
100 mHandles.first.close(); | 100 mHandles.first.close(); |
101 try { | 101 try { |
102 MessageWithHeader.readAndDispatchMessage(mHandles.second, mMessageRe
ceiver); | 102 Connector.readAndDispatchMessage(mHandles.second, mMessageReceiver); |
103 fail("MojoException should have been thrown"); | 103 fail("MojoException should have been thrown"); |
104 } catch (MojoException expected) { | 104 } catch (MojoException expected) { |
105 assertEquals(MojoResult.FAILED_PRECONDITION, expected.getMojoResult(
)); | 105 assertEquals(MojoResult.FAILED_PRECONDITION, expected.getMojoResult(
)); |
106 } | 106 } |
107 assertEquals(0, mMessageReceiver.messages.size()); | 107 assertEquals(0, mMessageReceiver.messages.size()); |
108 } | 108 } |
109 } | 109 } |
OLD | NEW |