diff options
author | Arnstein Ressem <aressem@yahoo-inc.com> | 2016-10-10 14:24:38 +0200 |
---|---|---|
committer | Arnstein Ressem <aressem@yahoo-inc.com> | 2016-10-10 14:24:38 +0200 |
commit | c355f4c97a5455f46ff9c779b6320060f67211d0 (patch) | |
tree | fc8005b46c3661d02a6c2cc2c810af21a5ae85eb /slobrok | |
parent | 2eacefe6b4c7b7981c0fcec0a1fa5fdaa933ec36 (diff) | |
parent | 6abdd3d8960ce01422e0cc902cba7e2fa9facc67 (diff) |
Merge branch 'master' into aressem/dont-allow-unresolved-symbols-in-shared-libs-or-executables
Diffstat (limited to 'slobrok')
-rw-r--r-- | slobrok/CMakeLists.txt | 1 | ||||
-rw-r--r-- | slobrok/src/tests/multi/.gitignore | 5 | ||||
-rw-r--r-- | slobrok/src/tests/multi/CMakeLists.txt | 6 | ||||
-rw-r--r-- | slobrok/src/tests/multi/DESC | 1 | ||||
-rw-r--r-- | slobrok/src/tests/multi/FILES | 1 | ||||
-rw-r--r-- | slobrok/src/tests/multi/multi.cpp | 369 | ||||
-rwxr-xr-x | slobrok/src/tests/multi/multi_test.sh | 7 | ||||
-rwxr-xr-x | slobrok/src/tests/multi/start.sh | 41 | ||||
-rwxr-xr-x | slobrok/src/tests/multi/stop.sh | 37 | ||||
-rw-r--r-- | slobrok/src/tests/multi/template-7.cfg | 8 | ||||
-rw-r--r-- | slobrok/src/tests/standalone/standalone.cpp | 104 |
11 files changed, 82 insertions, 498 deletions
diff --git a/slobrok/CMakeLists.txt b/slobrok/CMakeLists.txt index 1e074c1f814..4c78f331492 100644 --- a/slobrok/CMakeLists.txt +++ b/slobrok/CMakeLists.txt @@ -19,7 +19,6 @@ vespa_define_module( src/tests/backoff src/tests/configure src/tests/mirrorapi - src/tests/multi src/tests/oldapi src/tests/registerapi src/tests/standalone diff --git a/slobrok/src/tests/multi/.gitignore b/slobrok/src/tests/multi/.gitignore deleted file mode 100644 index a8bc1f97275..00000000000 --- a/slobrok/src/tests/multi/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -7.cfg -Makefile -multi_test -slobrok*.out -slobrok_multi_test_app diff --git a/slobrok/src/tests/multi/CMakeLists.txt b/slobrok/src/tests/multi/CMakeLists.txt deleted file mode 100644 index 276dd2f0845..00000000000 --- a/slobrok/src/tests/multi/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(slobrok_multi_test_app TEST - SOURCES - multi.cpp - DEPENDS -) diff --git a/slobrok/src/tests/multi/DESC b/slobrok/src/tests/multi/DESC deleted file mode 100644 index d38625a647b..00000000000 --- a/slobrok/src/tests/multi/DESC +++ /dev/null @@ -1 +0,0 @@ -multi-slobrok test. Take a look at multi.cpp for details. diff --git a/slobrok/src/tests/multi/FILES b/slobrok/src/tests/multi/FILES deleted file mode 100644 index bbb1480c9ec..00000000000 --- a/slobrok/src/tests/multi/FILES +++ /dev/null @@ -1 +0,0 @@ -multi.cpp diff --git a/slobrok/src/tests/multi/multi.cpp b/slobrok/src/tests/multi/multi.cpp deleted file mode 100644 index 9a8a7eb41e0..00000000000 --- a/slobrok/src/tests/multi/multi.cpp +++ /dev/null @@ -1,369 +0,0 @@ -// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/vespalib/testkit/test_kit.h> -#include <vespa/fnet/frt/frt.h> -#include <string> - -//----------------------------------------------------------------------------- - -class Server : public FRT_Invokable -{ -private: - FRT_Supervisor _orb; - std::string _name; - -public: - Server(std::string name, int port); - ~Server(); - void rpc_listNamesServed(FRT_RPCRequest *req); -}; - - -Server::Server(std::string name, int port) - : _orb(), - _name(name) -{ - { - FRT_ReflectionBuilder rb(&_orb); - //--------------------------------------------------------------------- - rb.DefineMethod("slobrok.callback.listNamesServed", "", "S", true, - FRT_METHOD(Server::rpc_listNamesServed), this); - rb.MethodDesc("Look up a rpcserver"); - rb.ReturnDesc("names", "The rpcserver names on this server"); - //--------------------------------------------------------------------- - } - _orb.Listen(port); - _orb.Start(); -} - - -void -Server::rpc_listNamesServed(FRT_RPCRequest *req) -{ - FRT_Values &dst = *req->GetReturn(); - FRT_StringValue *names = dst.AddStringArray(1); - dst.SetString(&names[0], _name.c_str()); -} - - -Server::~Server() -{ - _orb.ShutDown(true); -} - -//----------------------------------------------------------------------------- - -TEST("multi") { - FRT_Supervisor orb; - orb.Start(); - - FRT_Target *sb = orb.GetTarget(18511); - FRT_RPCRequest *req = NULL; - - // test ping against slobrok - req = orb.AllocRPCRequest(req); - req->SetMethodName("frt.rpc.ping"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - - // lookup '*' on empty slobrok - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("*"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); - - // check managed servers on empty slobrok - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.internal.listManagedRpcServers"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); - - Server a("A", 18518); - - // register server A - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.registerRpcServer"); - req->GetParams()->AddString("A"); - req->GetParams()->AddString("tcp/localhost:18518"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - - // lookup '*' should give 'A' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("*"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(0)._string_array._pt[0]._str, "A") == 0); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(1)._string_array._pt[0]._str, "tcp/localhost:18518") == 0); - - // lookup 'A' should give 'A' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("A"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(0)._string_array._pt[0]._str, "A") == 0); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(1)._string_array._pt[0]._str, "tcp/localhost:18518") == 0); - - // lookup 'B' should give '' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("B"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); - - // lookup '*/*' should give '' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("*/*"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); - - { - Server b("B", 18519); - - // register server B as 'C' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.registerRpcServer"); - req->GetParams()->AddString("C"); - req->GetParams()->AddString("tcp/localhost:18519"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(req->IsError()); - - // register server B - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.registerRpcServer"); - req->GetParams()->AddString("B"); - req->GetParams()->AddString("tcp/localhost:18519"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - - { - Server a2("A", 18520); - - // register server A(2) - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.registerRpcServer"); - req->GetParams()->AddString("A"); - req->GetParams()->AddString("tcp/localhost:18520"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(req->IsError()); - } - - // lookup '*' should give 'AB | BA' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("*"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 2); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 2); - { - FRT_StringValue *name = req->GetReturn()->GetValue(0)._string_array._pt; - FRT_StringValue *spec = req->GetReturn()->GetValue(1)._string_array._pt; - if (strcmp(name[0]._str, "A") == 0) { - ASSERT_TRUE(strcmp(name[0]._str, "A") == 0); - ASSERT_TRUE(strcmp(name[1]._str, "B") == 0); - ASSERT_TRUE(strcmp(spec[0]._str, "tcp/localhost:18518") == 0); - ASSERT_TRUE(strcmp(spec[1]._str, "tcp/localhost:18519") == 0); - } else { - ASSERT_TRUE(strcmp(name[1]._str, "A") == 0); - ASSERT_TRUE(strcmp(name[0]._str, "B") == 0); - ASSERT_TRUE(strcmp(spec[1]._str, "tcp/localhost:18518") == 0); - ASSERT_TRUE(strcmp(spec[0]._str, "tcp/localhost:18519") == 0); - } - } - } - - FastOS_Thread::Sleep(2000); - - // lookup 'B' should give '' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("B"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); - - // unregister server A (wrong spec) - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.unregisterRpcServer"); - req->GetParams()->AddString("A"); - req->GetParams()->AddString("tcp/localhost:18519"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(req->IsError()); - - // lookup 'A' should give 'A' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("A"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(0)._string_array._pt[0]._str, "A") == 0); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(1)._string_array._pt[0]._str, "tcp/localhost:18518") == 0); - - // unregister server A - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.unregisterRpcServer"); - req->GetParams()->AddString("A"); - req->GetParams()->AddString("tcp/localhost:18518"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - - // lookup 'A' should give '' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("A"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); - - // lookup '*' on empty slobrok - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("*"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); - - // unregister server A on empty slobrok - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.unregisterRpcServer"); - req->GetParams()->AddString("A"); - req->GetParams()->AddString("tcp/localhost:18518"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - - - FRT_Target *sb1 = orb.GetTarget(18512); - FRT_Target *sb2 = orb.GetTarget(18513); - FRT_Target *sb3 = orb.GetTarget(18514); - FRT_Target *sb4 = orb.GetTarget(18515); - FRT_Target *sb5 = orb.GetTarget(18516); - FRT_Target *sb6 = orb.GetTarget(18517); - - // register server A - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.registerRpcServer"); - req->GetParams()->AddString("A"); - req->GetParams()->AddString("tcp/localhost:18518"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - - - Server c("C", 18521); - Server d("D", 18522); - - for (int i=0; i < 150; i++) { - // register server C - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.registerRpcServer"); - req->GetParams()->AddString("C"); - req->GetParams()->AddString("tcp/localhost:18521"); - sb1->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - - // register server D - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.registerRpcServer"); - req->GetParams()->AddString("D"); - req->GetParams()->AddString("tcp/localhost:18522"); - sb2->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - - // lookup 'C' should give 'C' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("C"); - sb3->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(0)._string_array._pt[0]._str, "C") == 0); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(1)._string_array._pt[0]._str, "tcp/localhost:18521") == 0); - - // lookup 'C' should give 'C' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("C"); - sb4->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(0)._string_array._pt[0]._str, "C") == 0); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(1)._string_array._pt[0]._str, "tcp/localhost:18521") == 0); - - // lookup 'C' should give 'C' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("C"); - sb5->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(0)._string_array._pt[0]._str, "C") == 0); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(1)._string_array._pt[0]._str, "tcp/localhost:18521") == 0); - - // lookup 'C' should give 'C' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("C"); - sb6->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(0)._string_array._pt[0]._str, "C") == 0); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(1)._string_array._pt[0]._str, "tcp/localhost:18521") == 0); - - FastOS_Thread::Sleep(200); - - // lookup 'D' should give 'D' - req = orb.AllocRPCRequest(req); - req->SetMethodName("slobrok.lookupRpcServer"); - req->GetParams()->AddString("D"); - sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); - ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); - ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(0)._string_array._pt[0]._str, "D") == 0); - ASSERT_TRUE(strcmp(req->GetReturn()->GetValue(1)._string_array._pt[0]._str, "tcp/localhost:18522") == 0); - } - - orb.ShutDown(true); -} - -TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/slobrok/src/tests/multi/multi_test.sh b/slobrok/src/tests/multi/multi_test.sh deleted file mode 100755 index 222d7dce3b6..00000000000 --- a/slobrok/src/tests/multi/multi_test.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -e -ok=true -./start.sh -./slobrok_multi_test_app || ok=false -./stop.sh -$ok diff --git a/slobrok/src/tests/multi/start.sh b/slobrok/src/tests/multi/start.sh deleted file mode 100755 index 48d5e5d4874..00000000000 --- a/slobrok/src/tests/multi/start.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -set -e - -export VESPA_LOG_LEVEL='all -spam' - -sed s=localhost=`hostname`= < template-7.cfg > 7.cfg - -../../apps/slobrok/slobrok -c file:7.cfg -p 18511 > slobrok0.out 2>&1 & -echo $! >> pids.txt -../../apps/slobrok/slobrok -c file:7.cfg -p 18512 > slobrok1.out 2>&1 & -echo $! >> pids.txt -../../apps/slobrok/slobrok -c file:7.cfg -p 18513 > slobrok2.out 2>&1 & -echo $! >> pids.txt -../../apps/slobrok/slobrok -c file:7.cfg -p 18514 > slobrok3.out 2>&1 & -echo $! >> pids.txt -../../apps/slobrok/slobrok -c file:7.cfg -p 18515 > slobrok4.out 2>&1 & -echo $! >> pids.txt -../../apps/slobrok/slobrok -c file:7.cfg -p 18516 > slobrok5.out 2>&1 & -echo $! >> pids.txt -../../apps/slobrok/slobrok -c file:7.cfg -p 18517 > slobrok6.out 2>&1 & -echo $! >> pids.txt - -echo "Started: " `cat pids.txt` - -export VESPA_LOG_LEVEL='all -debug -spam' - -for x in 1 2 3 4 5 6 7 8 9; do - sleep $x - echo "waiting for service location brokers to start, slept $x seconds" - alive=true - for port in 18511 18512 18513 18514 18515 18516 18517; do - ../../apps/sbcmd/sbcmd $port slobrok.callback.listNamesServed || alive=false - done - if $alive; then - echo "all started ok after $x seconds" - exit 0 - fi -done -echo "giving up, this probably won't work" -exit 1 diff --git a/slobrok/src/tests/multi/stop.sh b/slobrok/src/tests/multi/stop.sh deleted file mode 100755 index e2ab6b6f71a..00000000000 --- a/slobrok/src/tests/multi/stop.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -set -e - -ok=true - -../../apps/sbcmd/sbcmd 18511 slobrok.system.stop || ok=false -../../apps/sbcmd/sbcmd 18512 slobrok.system.stop || ok=false -../../apps/sbcmd/sbcmd 18513 slobrok.system.stop || ok=false -../../apps/sbcmd/sbcmd 18514 slobrok.system.stop || ok=false -../../apps/sbcmd/sbcmd 18515 slobrok.system.stop || ok=false -../../apps/sbcmd/sbcmd 18516 slobrok.system.stop || ok=false -../../apps/sbcmd/sbcmd 18517 slobrok.system.stop || ok=false - -if $ok; then - echo "Signaled all brokers to stop OK" -fi - -for cnt in 1 2 3 4 5 6 7 8 9; do - sleep $cnt - alive=false - for x in `cat pids.txt`; do - kill $x 2>/dev/null && ps -p $x && alive=true - done - if $alive; then - echo "Some processes still alive after $cnt seconds" - else - rm -f pids.txt - $ok - exit - fi -done - -for x in `cat pids.txt`; do - kill -9 $x 2>/dev/null && echo "Force killed pid $x" -done -exit 1 diff --git a/slobrok/src/tests/multi/template-7.cfg b/slobrok/src/tests/multi/template-7.cfg deleted file mode 100644 index 6769494a51c..00000000000 --- a/slobrok/src/tests/multi/template-7.cfg +++ /dev/null @@ -1,8 +0,0 @@ -slobrok[7] -slobrok[0].connectionspec tcp/localhost:18511 -slobrok[1].connectionspec tcp/localhost:18512 -slobrok[2].connectionspec tcp/localhost:18513 -slobrok[3].connectionspec tcp/localhost:18514 -slobrok[4].connectionspec tcp/localhost:18515 -slobrok[5].connectionspec tcp/localhost:18516 -slobrok[6].connectionspec tcp/localhost:18517 diff --git a/slobrok/src/tests/standalone/standalone.cpp b/slobrok/src/tests/standalone/standalone.cpp index feeec4f508f..c17875ee571 100644 --- a/slobrok/src/tests/standalone/standalone.cpp +++ b/slobrok/src/tests/standalone/standalone.cpp @@ -52,30 +52,96 @@ Server::~Server() _orb.ShutDown(true); } +namespace { + +bool checkOk(FRT_RPCRequest *req) +{ + if (req == NULL) { + fprintf(stderr, "req is null pointer, this is bad\n"); + return false; + } + if (req->IsError()) { + fprintf(stderr, "req FAILED [code %d]: %s\n", + req->GetErrorCode(), + req->GetErrorMessage()); + fprintf(stderr, "req method is: '%s' with params:\n", req->GetMethodName()); + req->GetParams()->Print(); + fflush(stdout); // flushes output from Print() on previous line + return false; + } else { + return true; + } +} + +template<typename T> +class SubReferer +{ +private: + T* &_t; +public: + SubReferer(T* &t) : _t(t) {} + ~SubReferer() { + if (_t != NULL) _t->SubRef(); + } +}; + + +template<typename T> +class ShutDowner +{ +private: + T &_t; +public: + ShutDowner(T &t) : _t(t) {} + ~ShutDowner() { + _t.ShutDown(true); + } +}; + + +template<typename T> +class Stopper +{ +private: + T &_t; +public: + Stopper(T &t) : _t(t) {} + ~Stopper() { + _t.stop(); + } +}; + +} // namespace <unnamed> + //----------------------------------------------------------------------------- TEST("standalone") { slobrok::SlobrokServer slobrokServer(18541); + Stopper<slobrok::SlobrokServer> ssCleaner(slobrokServer); FastOS_Thread::Sleep(300); FRT_Supervisor orb; orb.Start(); + ShutDowner<FRT_Supervisor> orbCleaner(orb); FRT_Target *sb = orb.GetTarget(18541); + SubReferer<FRT_Target> sbCleaner(sb); + FRT_RPCRequest *req = NULL; + SubReferer<FRT_RPCRequest> reqCleaner(req); // test ping against slobrok req = orb.AllocRPCRequest(req); req->SetMethodName("frt.rpc.ping"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); // lookup '*' on empty slobrok req = orb.AllocRPCRequest(req); req->SetMethodName("slobrok.lookupRpcServer"); req->GetParams()->AddString("*"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); @@ -84,7 +150,7 @@ TEST("standalone") { req = orb.AllocRPCRequest(req); req->SetMethodName("slobrok.internal.listManagedRpcServers"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); @@ -97,14 +163,14 @@ TEST("standalone") { req->GetParams()->AddString("A"); req->GetParams()->AddString("tcp/localhost:18542"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); // lookup '*' should give 'A' req = orb.AllocRPCRequest(req); req->SetMethodName("slobrok.lookupRpcServer"); req->GetParams()->AddString("*"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); @@ -116,7 +182,7 @@ TEST("standalone") { req->SetMethodName("slobrok.lookupRpcServer"); req->GetParams()->AddString("A"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); @@ -128,7 +194,7 @@ TEST("standalone") { req->SetMethodName("slobrok.lookupRpcServer"); req->GetParams()->AddString("B"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); @@ -138,7 +204,7 @@ TEST("standalone") { req->SetMethodName("slobrok.lookupRpcServer"); req->GetParams()->AddString("*/*"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); @@ -160,7 +226,7 @@ TEST("standalone") { req->GetParams()->AddString("B"); req->GetParams()->AddString("tcp/localhost:18543"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); { Server a2("A", 18544); @@ -179,7 +245,7 @@ TEST("standalone") { req->SetMethodName("slobrok.lookupRpcServer"); req->GetParams()->AddString("*"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 2); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 2); @@ -207,7 +273,7 @@ TEST("standalone") { req->SetMethodName("slobrok.lookupRpcServer"); req->GetParams()->AddString("B"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); @@ -225,7 +291,7 @@ TEST("standalone") { req->SetMethodName("slobrok.lookupRpcServer"); req->GetParams()->AddString("A"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 1); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 1); @@ -238,14 +304,14 @@ TEST("standalone") { req->GetParams()->AddString("A"); req->GetParams()->AddString("tcp/localhost:18542"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); // lookup 'A' should give '' req = orb.AllocRPCRequest(req); req->SetMethodName("slobrok.lookupRpcServer"); req->GetParams()->AddString("A"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); @@ -255,7 +321,7 @@ TEST("standalone") { req->SetMethodName("slobrok.lookupRpcServer"); req->GetParams()->AddString("*"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); + ASSERT_TRUE(checkOk(req)); ASSERT_TRUE(strcmp(req->GetReturnSpec(), "SS") == 0); ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0); ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0); @@ -266,13 +332,7 @@ TEST("standalone") { req->GetParams()->AddString("A"); req->GetParams()->AddString("tcp/localhost:18542"); sb->InvokeSync(req, 5.0); - ASSERT_TRUE(!req->IsError()); - - sb->SubRef(); - req->SubRef(); - - slobrokServer.stop(); - orb.ShutDown(true); + ASSERT_TRUE(checkOk(req)); } TEST_MAIN() { TEST_RUN_ALL(); } |