diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
commit | 72231250ed81e10d66bfe70701e64fa5fe50f712 (patch) | |
tree | 2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /jrt_test/src/tests/mockup-invoke |
Publish
Diffstat (limited to 'jrt_test/src/tests/mockup-invoke')
-rw-r--r-- | jrt_test/src/tests/mockup-invoke/.gitignore | 8 | ||||
-rw-r--r-- | jrt_test/src/tests/mockup-invoke/CMakeLists.txt | 7 | ||||
-rw-r--r-- | jrt_test/src/tests/mockup-invoke/DESC | 2 | ||||
-rw-r--r-- | jrt_test/src/tests/mockup-invoke/FILES | 6 | ||||
-rw-r--r-- | jrt_test/src/tests/mockup-invoke/MockupInvoke.java | 34 | ||||
-rw-r--r-- | jrt_test/src/tests/mockup-invoke/dotest.sh | 19 | ||||
-rwxr-xr-x | jrt_test/src/tests/mockup-invoke/mockup-invoke_test.sh | 10 | ||||
-rw-r--r-- | jrt_test/src/tests/mockup-invoke/mockup-server.cpp | 69 | ||||
-rw-r--r-- | jrt_test/src/tests/mockup-invoke/progdefs.sh | 2 | ||||
-rw-r--r-- | jrt_test/src/tests/mockup-invoke/ref.txt | 5 |
10 files changed, 162 insertions, 0 deletions
diff --git a/jrt_test/src/tests/mockup-invoke/.gitignore b/jrt_test/src/tests/mockup-invoke/.gitignore new file mode 100644 index 00000000000..89cd4543d46 --- /dev/null +++ b/jrt_test/src/tests/mockup-invoke/.gitignore @@ -0,0 +1,8 @@ +.depend +Makefile +MockupInvoke.class +mockup-server +out.server.1 +out.txt +pid.txt +jrt_test_mockup-server_app diff --git a/jrt_test/src/tests/mockup-invoke/CMakeLists.txt b/jrt_test/src/tests/mockup-invoke/CMakeLists.txt new file mode 100644 index 00000000000..773de6f4283 --- /dev/null +++ b/jrt_test/src/tests/mockup-invoke/CMakeLists.txt @@ -0,0 +1,7 @@ +# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(jrt_test_mockup-server_app + SOURCES + mockup-server.cpp + DEPENDS +) +vespa_add_test(NAME jrt_test_mockup-server_app NO_VALGRIND COMMAND sh mockup-invoke_test.sh) diff --git a/jrt_test/src/tests/mockup-invoke/DESC b/jrt_test/src/tests/mockup-invoke/DESC new file mode 100644 index 00000000000..27ad5eca58f --- /dev/null +++ b/jrt_test/src/tests/mockup-invoke/DESC @@ -0,0 +1,2 @@ +Test that the mockup invoke implementation in Java is able to invoke +methods in a C++ based RPC server. diff --git a/jrt_test/src/tests/mockup-invoke/FILES b/jrt_test/src/tests/mockup-invoke/FILES new file mode 100644 index 00000000000..da260550280 --- /dev/null +++ b/jrt_test/src/tests/mockup-invoke/FILES @@ -0,0 +1,6 @@ +dotest.sh +out.txt +ref.txt +mockup-server.cpp +MockupInvoke.java +out.server.1 diff --git a/jrt_test/src/tests/mockup-invoke/MockupInvoke.java b/jrt_test/src/tests/mockup-invoke/MockupInvoke.java new file mode 100644 index 00000000000..aa5a59c780d --- /dev/null +++ b/jrt_test/src/tests/mockup-invoke/MockupInvoke.java @@ -0,0 +1,34 @@ +// 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 MockupInvoke { + + public static void main(String[] args) { + if (args.length != 3) { + System.out.println("error: Wrong number of parameters"); + System.exit(0); + } + Transport transport = new Transport(); + Supervisor orb = new Supervisor(transport); + Spec spec = new Spec(args[0]); + Request req = new Request("concat"); + req.parameters().add(new StringValue(args[1])); + req.parameters().add(new StringValue(args[2])); + orb.invokeBatch(spec, req, 60.0); + if (req.isError()) { + System.out.println("error: " + req.errorCode() + + ": " + req.errorMessage()); + System.exit(0); + } + if (req.returnValues().size() != 1 + || req.returnValues().get(0).type() != 's') { + + System.out.println("error: Wrong return values"); + System.exit(0); + } + System.out.println("result: '" + + req.returnValues().get(0).asString() + + "'"); + } +} diff --git a/jrt_test/src/tests/mockup-invoke/dotest.sh b/jrt_test/src/tests/mockup-invoke/dotest.sh new file mode 100644 index 00000000000..3bd15b6437f --- /dev/null +++ b/jrt_test/src/tests/mockup-invoke/dotest.sh @@ -0,0 +1,19 @@ +#!/bin/sh +# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +sh $BINREF/progctl.sh progdefs.sh start server 1 + +$BINREF/runjava PollRPCServer tcp/localhost:$PORT_0 +$BINREF/runjava MockupInvoke tcp/localhost:$PORT_0 aaa bbb > out.txt +$BINREF/runjava MockupInvoke tcp/localhost:$PORT_0 bbb ccc >> out.txt +$BINREF/runjava MockupInvoke tcp/localhost:$PORT_0 ccc ddd >> out.txt +$BINREF/runjava MockupInvoke tcp/localhost:$PORT_0 ddd eee >> out.txt +$BINREF/runjava MockupInvoke tcp/localhost:$PORT_0 eee fff >> out.txt + +sh $BINREF/progctl.sh progdefs.sh stop server 1 + +if diff -u out.txt ref.txt; then + exit 0 +else + exit 1 +fi diff --git a/jrt_test/src/tests/mockup-invoke/mockup-invoke_test.sh b/jrt_test/src/tests/mockup-invoke/mockup-invoke_test.sh new file mode 100755 index 00000000000..56ca7079e7a --- /dev/null +++ b/jrt_test/src/tests/mockup-invoke/mockup-invoke_test.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +. ../../binref/env.sh + +export PORT_0 + +$BINREF/compilejava MockupInvoke.java + +sh dotest.sh || (sh $BINREF/progctl.sh progdefs.sh stop all; false) +sh $BINREF/progctl.sh progdefs.sh stop all diff --git a/jrt_test/src/tests/mockup-invoke/mockup-server.cpp b/jrt_test/src/tests/mockup-invoke/mockup-server.cpp new file mode 100644 index 00000000000..97b2e945e57 --- /dev/null +++ b/jrt_test/src/tests/mockup-invoke/mockup-server.cpp @@ -0,0 +1,69 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/log/log.h> +LOG_SETUP("mockup_server"); +#include <vespa/fastos/fastos.h> +#include <vespa/fnet/frt/frt.h> + + +class MockupServer : public FRT_Invokable +{ +private: + MockupServer(const MockupServer &); + MockupServer &operator=(const MockupServer &); + +public: + MockupServer(FRT_Supervisor *s) + { + FRT_ReflectionBuilder rb(s); + //------------------------------------------------------------------- + rb.DefineMethod("concat", "ss", "s", true, + FRT_METHOD(MockupServer::RPC_concat), this); + rb.MethodDesc("Concatenate two strings"); + rb.ParamDesc("string1", "a string"); + rb.ParamDesc("string2", "another string"); + rb.ReturnDesc("ret", "the concatenation of string1 and string2"); + //------------------------------------------------------------------- + } + + void RPC_concat(FRT_RPCRequest *req) + { + FRT_Values ¶ms = *req->GetParams(); + FRT_Values &ret = *req->GetReturn(); + + uint32_t len = (params[0]._string._len + + params[1]._string._len); + char *tmp = ret.AddString(len); + strcpy(tmp, params[0]._string._str); + strcat(tmp, params[1]._string._str); + } +}; + + +class App : public FastOS_Application +{ +public: + int Main(); +}; + + +int +App::Main() +{ + if (_argc < 2) { + printf("usage: %s <listenspec>\n", _argv[0]); + return 1; + } + FRT_Supervisor orb; + MockupServer server(&orb); + orb.Listen(_argv[1]); + orb.Main(); + return 0; +} + + +int +main(int argc, char **argv) +{ + App myapp; + return myapp.Entry(argc, argv); +} diff --git a/jrt_test/src/tests/mockup-invoke/progdefs.sh b/jrt_test/src/tests/mockup-invoke/progdefs.sh new file mode 100644 index 00000000000..4c483b8060b --- /dev/null +++ b/jrt_test/src/tests/mockup-invoke/progdefs.sh @@ -0,0 +1,2 @@ +# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +prog server 1 "tcp/$PORT_0" "./jrt_test_mockup-server_app" diff --git a/jrt_test/src/tests/mockup-invoke/ref.txt b/jrt_test/src/tests/mockup-invoke/ref.txt new file mode 100644 index 00000000000..41229d78bc7 --- /dev/null +++ b/jrt_test/src/tests/mockup-invoke/ref.txt @@ -0,0 +1,5 @@ +result: 'aaabbb' +result: 'bbbccc' +result: 'cccddd' +result: 'dddeee' +result: 'eeefff' |