aboutsummaryrefslogtreecommitdiff
path: root/mojo/android/javatests/src/org/chromium/mojo
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/android/javatests/src/org/chromium/mojo')
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java7
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsHelperTest.java6
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java31
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsVersioningTest.java2
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/CallbacksTest.java2
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java2
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ExecutorFactoryTest.java2
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/InterfaceControlMessageTest.java2
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/InterfacesTest.java2
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/MessageHeaderTest.java2
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ReadAndDispatchMessageTest.java2
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/RouterTest.java2
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java46
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTest.java9
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtilTest.java2
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/system/impl/CoreImplTest.java265
16 files changed, 98 insertions, 286 deletions
diff --git a/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java b/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java
index c7348ca..f4d7ab7 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java
@@ -4,7 +4,6 @@
package org.chromium.mojo;
-import android.content.Context;
import android.test.InstrumentationTestCase;
import org.chromium.base.ContextUtils;
@@ -26,9 +25,9 @@ public class MojoTestCase extends InstrumentationTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- Context appContext = getInstrumentation().getTargetContext().getApplicationContext();
- ContextUtils.initApplicationContext(appContext);
- LibraryLoader.get(LibraryProcessType.PROCESS_BROWSER).ensureInitialized(appContext);
+ ContextUtils.initApplicationContext(
+ getInstrumentation().getTargetContext().getApplicationContext());
+ LibraryLoader.get(LibraryProcessType.PROCESS_BROWSER).ensureInitialized();
nativeInit();
mTestEnvironmentPointer = nativeSetupTestEnvironment();
}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsHelperTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsHelperTest.java
index a46a157..38bd348 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsHelperTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsHelperTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import junit.framework.TestCase;
@@ -34,8 +34,8 @@ public class BindingsHelperTest extends TestCase {
BindingsHelper.utf8StringSizeInBytes(s));
}
assertEquals(1, BindingsHelper.utf8StringSizeInBytes("\0"));
- String s = new StringBuilder().appendCodePoint(0x0).appendCodePoint(0x80).
- appendCodePoint(0x800).appendCodePoint(0x10000).toString();
+ String s = new StringBuilder().appendCodePoint(0x0).appendCodePoint(0x80)
+ .appendCodePoint(0x800).appendCodePoint(0x10000).toString();
assertEquals(10, BindingsHelper.utf8StringSizeInBytes(s));
assertEquals(10, s.getBytes(Charset.forName("utf8")).length);
}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java
index 6886023..d280c77 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import junit.framework.TestCase;
@@ -21,12 +21,15 @@ import org.chromium.mojo.bindings.test.mojom.sample.Foo;
import org.chromium.mojo.bindings.test.mojom.sample.InterfaceConstants;
import org.chromium.mojo.bindings.test.mojom.sample.SampleServiceConstants;
import org.chromium.mojo.bindings.test.mojom.test_structs.EmptyStruct;
+import org.chromium.mojo.bindings.test.mojom.test_structs.Rect;
import org.chromium.mojo.system.DataPipe.ConsumerHandle;
import org.chromium.mojo.system.DataPipe.ProducerHandle;
import org.chromium.mojo.system.MessagePipeHandle;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.Map;
/**
* Testing generated classes and associated features.
@@ -81,6 +84,15 @@ public class BindingsTest extends TestCase {
return foo;
}
+ private static Rect createRect(int x, int y, int width, int height) {
+ Rect rect = new Rect();
+ rect.x = x;
+ rect.y = y;
+ rect.width = width;
+ rect.height = height;
+ return rect;
+ }
+
private static <T> void checkConstantField(
Field field, Class<T> expectedClass, T value) throws IllegalAccessException {
assertEquals(expectedClass, field.getType());
@@ -209,4 +221,21 @@ public class BindingsTest extends TestCase {
assertNotNull(emptyStruct);
}
+ // In testing maps we want to make sure that the key used when inserting an
+ // item the key used when looking it up again are different objects. Java
+ // has default implementations of equals and hashCode that use reference
+ // equality and hashing, respectively, and that's not what we want for our
+ // mojom values.
+ @SmallTest
+ public void testHashMapStructKey() {
+ Map<Rect, Integer> map = new HashMap<>();
+ map.put(createRect(1, 2, 3, 4), 123);
+
+ Rect key = createRect(1, 2, 3, 4);
+ assertNotNull(map.get(key));
+ assertEquals(123, map.get(key).intValue());
+
+ map.remove(key);
+ assertTrue(map.isEmpty());
+ }
}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsVersioningTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsVersioningTest.java
index f0c0f7c..eea92ab 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsVersioningTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsVersioningTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import org.chromium.mojo.MojoTestCase;
import org.chromium.mojo.bindings.test.mojom.test_structs.MultiVersionStruct;
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/CallbacksTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/CallbacksTest.java
index dfb8e21..497be65 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/CallbacksTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/CallbacksTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java
index 9c26875..15f9f1f 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import org.chromium.mojo.MojoTestCase;
import org.chromium.mojo.bindings.BindingsTestUtils.CapturingErrorHandler;
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ExecutorFactoryTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ExecutorFactoryTest.java
index 56f4b40..cabe230 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ExecutorFactoryTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/ExecutorFactoryTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import org.chromium.mojo.MojoTestCase;
import org.chromium.mojo.system.impl.CoreImpl;
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfaceControlMessageTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfaceControlMessageTest.java
index c101675..8cdd4ab 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfaceControlMessageTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfaceControlMessageTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import org.chromium.mojo.MojoTestCase;
import org.chromium.mojo.bindings.Callbacks.Callback1;
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfacesTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfacesTest.java
index f96b1e3..d8bd3e8 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfacesTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfacesTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import org.chromium.mojo.MojoTestCase;
import org.chromium.mojo.bindings.BindingsTestUtils.CapturingErrorHandler;
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageHeaderTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageHeaderTest.java
index 8af8be1..b2e6ac8 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageHeaderTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageHeaderTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import junit.framework.TestCase;
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ReadAndDispatchMessageTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ReadAndDispatchMessageTest.java
index f2edb01..51dbd22 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ReadAndDispatchMessageTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/ReadAndDispatchMessageTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import org.chromium.mojo.MojoTestCase;
import org.chromium.mojo.bindings.BindingsTestUtils.RecordingMessageReceiver;
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/RouterTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/RouterTest.java
index 0b632a9..5affb8f 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/RouterTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/RouterTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import org.chromium.base.annotations.SuppressFBWarnings;
import org.chromium.mojo.MojoTestCase;
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java
index a7e213c..2c17e3a 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import junit.framework.TestCase;
@@ -17,6 +17,8 @@ import org.chromium.mojo.bindings.test.mojom.mojo.Struct5;
import org.chromium.mojo.bindings.test.mojom.mojo.Struct6;
import org.chromium.mojo.bindings.test.mojom.mojo.StructOfNullables;
+import java.nio.ByteBuffer;
+
/**
* Tests for the serialization logic of the generated structs, using structs defined in
* mojo/public/interfaces/bindings/tests/serialization_test_structs.mojom .
@@ -128,4 +130,46 @@ public class SerializationTest extends TestCase {
assertNull(struct.str);
struct.serialize(null);
}
+
+ /**
+ * Verifies that a struct can be serialized to and deserialized from a ByteBuffer.
+ */
+ @SmallTest
+ public void testByteBufferSerialization() {
+ Struct1 input = new Struct1();
+ input.i = 0x7F;
+
+ ByteBuffer buf = input.serialize();
+
+ byte[] expected_raw_bytes = {16, 0, 0, 0, 0, 0, 0, 0, 0x7F, 0, 0, 0, 0, 0, 0, 0};
+ ByteBuffer expected_buf = ByteBuffer.wrap(expected_raw_bytes);
+ assertEquals(expected_buf, buf);
+
+ Struct1 output = Struct1.deserialize(buf);
+ assertEquals(0x7F, output.i);
+ }
+
+ /**
+ * Verifies that a struct with handles cannot be serialized to a ByteBuffer.
+ */
+ @SmallTest
+ public void testByteBufferSerializationWithHandles() {
+ StructOfNullables struct = new StructOfNullables();
+ assertFalse(struct.hdl.isValid());
+ assertNull(struct.struct1);
+ assertNull(struct.str);
+
+ // It is okay to serialize invalid handles.
+ struct.serialize();
+
+ struct.hdl = new HandleMock();
+
+ try {
+ struct.serialize();
+ fail("Serializing a struct with handles to a ByteBuffer should have thrown an "
+ + "exception.");
+ } catch (UnsupportedOperationException ex) {
+ // Expected.
+ }
+ }
}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTest.java
index e5c4549..8424618 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import org.chromium.base.test.util.UrlUtils;
import org.chromium.mojo.HandleMock;
@@ -13,6 +13,7 @@ import org.chromium.mojo.bindings.test.mojom.mojo.ConformanceTestInterface;
import org.chromium.mojo.bindings.test.mojom.mojo.IntegrationTestInterface;
import org.chromium.mojo.bindings.test.mojom.mojo.IntegrationTestInterfaceTestHelper;
import org.chromium.mojo.system.Handle;
+import org.chromium.mojo.system.impl.CoreImpl;
import java.io.File;
import java.io.FileFilter;
@@ -189,8 +190,10 @@ public class ValidationTest extends MojoTestCase {
*/
@SmallTest
public void testConformance() throws FileNotFoundException {
- runTest("conformance_", ConformanceTestInterface.MANAGER.buildStub(null,
- ConformanceTestInterface.MANAGER.buildProxy(null, new SinkMessageReceiver())));
+ runTest("conformance_",
+ ConformanceTestInterface.MANAGER.buildStub(CoreImpl.getInstance(),
+ ConformanceTestInterface.MANAGER.buildProxy(
+ CoreImpl.getInstance(), new SinkMessageReceiver())));
}
/**
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtilTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtilTest.java
index 14259ef..623abc3 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtilTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtilTest.java
@@ -4,7 +4,7 @@
package org.chromium.mojo.bindings;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import org.chromium.mojo.MojoTestCase;
diff --git a/mojo/android/javatests/src/org/chromium/mojo/system/impl/CoreImplTest.java b/mojo/android/javatests/src/org/chromium/mojo/system/impl/CoreImplTest.java
index 16c16f2..77a9bda 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/system/impl/CoreImplTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/system/impl/CoreImplTest.java
@@ -4,12 +4,9 @@
package org.chromium.mojo.system.impl;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.system.AsyncWaiter;
-import org.chromium.mojo.system.AsyncWaiter.Callback;
-import org.chromium.mojo.system.AsyncWaiter.Cancellable;
import org.chromium.mojo.system.Core;
import org.chromium.mojo.system.Core.HandleSignals;
import org.chromium.mojo.system.Core.HandleSignalsState;
@@ -584,266 +581,6 @@ public class CoreImplTest extends MojoTestCase {
}
}
- private static class AsyncWaiterResult implements Callback {
- private int mResult = Integer.MIN_VALUE;
- private MojoException mException = null;
-
- /**
- * @see Callback#onResult(int)
- */
- @Override
- public void onResult(int result) {
- this.mResult = result;
- }
-
- /**
- * @see Callback#onError(MojoException)
- */
- @Override
- public void onError(MojoException exception) {
- this.mException = exception;
- }
-
- /**
- * @return the result
- */
- public int getResult() {
- return mResult;
- }
-
- /**
- * @return the exception
- */
- public MojoException getException() {
- return mException;
- }
- }
-
- /**
- * Testing core {@link AsyncWaiter} implementation.
- */
- @SmallTest
- public void testAsyncWaiterCorrectResult() {
- Core core = CoreImpl.getInstance();
-
- // Checking a correct result.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
- final AsyncWaiterResult asyncWaiterResult = new AsyncWaiterResult();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- core.getDefaultAsyncWaiter().asyncWait(handles.first, Core.HandleSignals.READABLE,
- Core.DEADLINE_INFINITE, asyncWaiterResult);
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- handles.second.writeMessage(
- ByteBuffer.allocateDirect(1), null, MessagePipeHandle.WriteFlags.NONE);
- runLoopUntilIdle();
- assertNull(asyncWaiterResult.getException());
- assertEquals(MojoResult.OK, asyncWaiterResult.getResult());
- }
-
- /**
- * Testing core {@link AsyncWaiter} implementation.
- */
- @SmallTest
- public void testAsyncWaiterClosingPeerHandle() {
- Core core = CoreImpl.getInstance();
-
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final AsyncWaiterResult asyncWaiterResult = new AsyncWaiterResult();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- core.getDefaultAsyncWaiter().asyncWait(handles.first, Core.HandleSignals.READABLE,
- Core.DEADLINE_INFINITE, asyncWaiterResult);
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- handles.second.close();
- runLoopUntilIdle();
- assertNull(asyncWaiterResult.getException());
- assertEquals(MojoResult.FAILED_PRECONDITION, asyncWaiterResult.getResult());
- }
-
- /**
- * Testing core {@link AsyncWaiter} implementation.
- */
- @SmallTest
- public void testAsyncWaiterClosingWaitingHandle() {
- Core core = CoreImpl.getInstance();
-
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final AsyncWaiterResult asyncWaiterResult = new AsyncWaiterResult();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- core.getDefaultAsyncWaiter().asyncWait(handles.first, Core.HandleSignals.READABLE,
- Core.DEADLINE_INFINITE, asyncWaiterResult);
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- handles.first.close();
- runLoopUntilIdle();
- // TODO(qsr) Re-enable when MojoWaitMany handles it correctly.
- // assertNull(asyncWaiterResult.getException());
- // assertEquals(MojoResult.CANCELLED, asyncWaiterResult.getResult());
- }
-
- /**
- * Testing core {@link AsyncWaiter} implementation.
- */
- @SmallTest
- public void testAsyncWaiterWaitingOnInvalidHandle() {
- Core core = CoreImpl.getInstance();
-
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final AsyncWaiterResult asyncWaiterResult = new AsyncWaiterResult();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- handles.first.close();
- core.getDefaultAsyncWaiter().asyncWait(handles.first, Core.HandleSignals.READABLE,
- Core.DEADLINE_INFINITE, asyncWaiterResult);
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- runLoopUntilIdle();
- assertNotNull(asyncWaiterResult.getException());
- assertEquals(MojoResult.INVALID_ARGUMENT,
- asyncWaiterResult.getException().getMojoResult());
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- }
-
- /**
- * Testing core {@link AsyncWaiter} implementation.
- */
- @SmallTest
- public void testAsyncWaiterWaitingOnDefaultInvalidHandle() {
- Core core = CoreImpl.getInstance();
-
- final AsyncWaiterResult asyncWaiterResult = new AsyncWaiterResult();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- core.getDefaultAsyncWaiter().asyncWait(InvalidHandle.INSTANCE, Core.HandleSignals.READABLE,
- Core.DEADLINE_INFINITE, asyncWaiterResult);
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- runLoopUntilIdle();
- assertNotNull(asyncWaiterResult.getException());
- assertEquals(MojoResult.INVALID_ARGUMENT, asyncWaiterResult.getException().getMojoResult());
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- }
-
- /**
- * Testing core {@link AsyncWaiter} implementation.
- */
- @SmallTest
- public void testAsyncWaiterWaitingWithTimeout() {
- Core core = CoreImpl.getInstance();
-
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final AsyncWaiterResult asyncWaiterResult = new AsyncWaiterResult();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- core.getDefaultAsyncWaiter().asyncWait(
- handles.first, Core.HandleSignals.READABLE, RUN_LOOP_TIMEOUT_MS, asyncWaiterResult);
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- runLoopUntilIdle();
- assertNull(asyncWaiterResult.getException());
- assertEquals(MojoResult.DEADLINE_EXCEEDED, asyncWaiterResult.getResult());
- }
-
- /**
- * Testing core {@link AsyncWaiter} implementation.
- */
- @SmallTest
- public void testAsyncWaiterCancelWaiting() {
- Core core = CoreImpl.getInstance();
-
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final AsyncWaiterResult asyncWaiterResult = new AsyncWaiterResult();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- Cancellable cancellable = core.getDefaultAsyncWaiter().asyncWait(handles.first,
- Core.HandleSignals.READABLE, Core.DEADLINE_INFINITE, asyncWaiterResult);
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- cancellable.cancel();
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- handles.second.writeMessage(
- ByteBuffer.allocateDirect(1), null, MessagePipeHandle.WriteFlags.NONE);
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
- }
-
- /**
- * Testing core {@link AsyncWaiter} implementation.
- */
- @SmallTest
- public void testAsyncWaiterImmediateCancelOnInvalidHandle() {
- Core core = CoreImpl.getInstance();
-
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final AsyncWaiterResult asyncWaiterResult = new AsyncWaiterResult();
- handles.first.close();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
-
- Cancellable cancellable = core.getDefaultAsyncWaiter().asyncWait(handles.first,
- Core.HandleSignals.READABLE, Core.DEADLINE_INFINITE, asyncWaiterResult);
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
- cancellable.cancel();
-
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, asyncWaiterResult.getResult());
- assertEquals(null, asyncWaiterResult.getException());
- }
-
/**
* Testing the pass method on message pipes.
*/