summaryrefslogtreecommitdiffstats
path: root/jrt_test/src/tests/rpc-error/TestErrors.java
diff options
context:
space:
mode:
Diffstat (limited to 'jrt_test/src/tests/rpc-error/TestErrors.java')
-rw-r--r--jrt_test/src/tests/rpc-error/TestErrors.java139
1 files changed, 139 insertions, 0 deletions
diff --git a/jrt_test/src/tests/rpc-error/TestErrors.java b/jrt_test/src/tests/rpc-error/TestErrors.java
new file mode 100644
index 00000000000..cc25935141f
--- /dev/null
+++ b/jrt_test/src/tests/rpc-error/TestErrors.java
@@ -0,0 +1,139 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+import com.yahoo.jrt.*;
+
+
+public class TestErrors {
+
+ boolean error = false;
+ Supervisor client;
+ Target target;
+
+ public void init(String spec) {
+ client = new Supervisor(new Transport());
+ target = client.connect(new Spec(spec));
+ }
+
+ public void fini() {
+ target.close();
+ client.transport().shutdown().join();
+ if (!error) {
+ System.err.println("Conclusion: PASS");
+ } else {
+ System.err.println("Conclusion: FAIL");
+ System.exit(1);
+ }
+ }
+
+ public void assertTrue(boolean value) {
+ if (!value) {
+ Throwable tmp = new Throwable();
+ System.out.println("<ASSERT FAILED>");
+ tmp.printStackTrace();
+ error = true;
+ }
+ }
+
+ public void assertEquals(int e, int a) {
+ if (e != a) {
+ Throwable tmp = new Throwable();
+ System.out.println("<ASSERT FAILED>: expected <" + e +
+ ">, but was <" + a + ">");
+ tmp.printStackTrace();
+ error = true;
+ }
+ }
+
+ public void testNoError() {
+ Request req1 = new Request("test");
+ req1.parameters().add(new Int32Value(42));
+ req1.parameters().add(new Int32Value(0));
+ req1.parameters().add(new Int8Value((byte)0));
+ target.invokeSync(req1, 60.0);
+ assertTrue(!req1.isError());
+ assertEquals(1, req1.returnValues().size());
+ assertEquals(42, req1.returnValues().get(0).asInt32());
+ }
+
+ public void testNoSuchMethod() {
+ Request req1 = new Request("bogus");
+ target.invokeSync(req1, 60.0);
+ assertTrue(req1.isError());
+ assertEquals(0, req1.returnValues().size());
+ assertEquals(ErrorCode.NO_SUCH_METHOD, req1.errorCode());
+ }
+
+ public void testWrongParameters() {
+ Request req1 = new Request("test");
+ req1.parameters().add(new Int32Value(42));
+ req1.parameters().add(new Int32Value(0));
+ req1.parameters().add(new Int32Value(0));
+ target.invokeSync(req1, 60.0);
+ assertTrue(req1.isError());
+ assertEquals(0, req1.returnValues().size());
+ assertEquals(ErrorCode.WRONG_PARAMS, req1.errorCode());
+
+ Request req2 = new Request("test");
+ req2.parameters().add(new Int32Value(42));
+ req2.parameters().add(new Int32Value(0));
+ target.invokeSync(req2, 60.0);
+ assertTrue(req2.isError());
+ assertEquals(0, req2.returnValues().size());
+ assertEquals(ErrorCode.WRONG_PARAMS, req2.errorCode());
+
+ Request req3 = new Request("test");
+ req3.parameters().add(new Int32Value(42));
+ req3.parameters().add(new Int32Value(0));
+ req3.parameters().add(new Int8Value((byte)0));
+ req3.parameters().add(new Int8Value((byte)0));
+ target.invokeSync(req3, 60.0);
+ assertTrue(req3.isError());
+ assertEquals(0, req3.returnValues().size());
+ assertEquals(ErrorCode.WRONG_PARAMS, req3.errorCode());
+ }
+
+ public void testWrongReturnValues() {
+ Request req1 = new Request("test");
+ req1.parameters().add(new Int32Value(42));
+ req1.parameters().add(new Int32Value(0));
+ req1.parameters().add(new Int8Value((byte)1));
+ target.invokeSync(req1, 60.0);
+ assertTrue(req1.isError());
+ assertEquals(0, req1.returnValues().size());
+ assertEquals(ErrorCode.WRONG_RETURN, req1.errorCode());
+ }
+
+ public void testMethodFailed() {
+ Request req1 = new Request("test");
+ req1.parameters().add(new Int32Value(42));
+ req1.parameters().add(new Int32Value(75000));
+ req1.parameters().add(new Int8Value((byte)0));
+ target.invokeSync(req1, 60.0);
+ assertTrue(req1.isError());
+ assertEquals(0, req1.returnValues().size());
+ assertEquals(75000, req1.errorCode());
+
+ Request req2 = new Request("test");
+ req2.parameters().add(new Int32Value(42));
+ req2.parameters().add(new Int32Value(75000));
+ req2.parameters().add(new Int8Value((byte)1));
+ target.invokeSync(req2, 60.0);
+ assertTrue(req2.isError());
+ assertEquals(0, req2.returnValues().size());
+ assertEquals(75000, req2.errorCode());
+ }
+
+ public static void main(String[] args) {
+ if (args.length != 1) {
+ System.err.println("Usage: TestErrors spec");
+ System.exit(1);
+ }
+ TestErrors test = new TestErrors();
+ test.init(args[0]);
+ test.testNoError();
+ test.testNoSuchMethod();
+ test.testWrongParameters();
+ test.testWrongReturnValues();
+ test.testMethodFailed();
+ test.fini();
+ }
+}