| 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 |