diff options
Diffstat (limited to 'slobrok/src/tests/oldapi/old.cpp')
-rw-r--r-- | slobrok/src/tests/oldapi/old.cpp | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/slobrok/src/tests/oldapi/old.cpp b/slobrok/src/tests/oldapi/old.cpp deleted file mode 100644 index fc380acfb9d..00000000000 --- a/slobrok/src/tests/oldapi/old.cpp +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/vespalib/testkit/testapp.h> -#include "mirror.h" -#include <vespa/config-slobroks.h> -#include <vespa/slobrok/server/slobrokserver.h> -#include <vespa/fnet/frt/supervisor.h> -#include <vespa/fnet/frt/target.h> -#include <vespa/fnet/transport.h> - -#include <vespa/log/log.h> -LOG_SETUP("mirrorapi_test"); - -using slobrok::api::MirrorOld; -using slobrok::SlobrokServer; - -TEST_SETUP(Test); - -//----------------------------------------------------------------------------- - -class Server : public FRT_Invokable -{ -private: - fnet::frt::StandaloneFRT _server; - std::string _name; - std::string _slobrokSpec; - -public: - Server(std::string name, int port, std::string slobrokSpec); - ~Server(); - void rpc_listNamesServed(FRT_RPCRequest *req); - void reg(); -}; - - -Server::Server(std::string name, int port, std::string slobrokSpec) - : _server(), - _name(name), - _slobrokSpec(slobrokSpec) -{ - { - FRT_ReflectionBuilder rb(&_server.supervisor()); - //--------------------------------------------------------------------- - rb.DefineMethod("slobrok.callback.listNamesServed", "", "S", - FRT_METHOD(Server::rpc_listNamesServed), this); - rb.MethodDesc("Look up a rpcserver"); - rb.ReturnDesc("names", "The rpcserver names on this server"); - //--------------------------------------------------------------------- - } - _server.supervisor().Listen(port); -} - - -void -Server::reg() -{ - char spec[64]; - sprintf(spec, "tcp/localhost:%d", _server.supervisor().GetListenPort()); - - FRT_RPCRequest *req = _server.supervisor().AllocRPCRequest(); - req->SetMethodName("slobrok.registerRpcServer"); - req->GetParams()->AddString(_name.c_str()); - req->GetParams()->AddString(spec); - - FRT_Target *sb = _server.supervisor().GetTarget(_slobrokSpec.c_str()); - sb->InvokeSync(req, 5.0); - sb->SubRef(); - req->SubRef(); -} - - -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() = default; - -//----------------------------------------------------------------------------- - -struct SpecList -{ - MirrorOld::SpecList _specList; - SpecList() : _specList() {} - SpecList(MirrorOld::SpecList input) : _specList(input) {} - SpecList &add(const char *name, const char *spec) { - _specList.push_back(make_pair(std::string(name), - std::string(spec))); - return *this; - } - void sort() { - std::sort(_specList.begin(), _specList.end()); - } - bool operator==(SpecList &rhs) { // NB: MUTATE! - sort(); - rhs.sort(); - return _specList == rhs._specList; - } -}; - - -bool -compare(MirrorOld &api, const char *pattern, SpecList expect) -{ - for (int i = 0; i < 250; ++i) { - SpecList actual(api.lookup(pattern)); - if (actual == expect) { - return true; - } - FastOS_Thread::Sleep(100); - } - return false; -} - - -int -Test::Main() -{ - TEST_INIT("mirrorapi_test"); - - SlobrokServer mock(18531); - FastOS_Thread::Sleep(300); - - Server a("A/x/w", 18532, "tcp/localhost:18531"); - Server b("B/x", 18533, "tcp/localhost:18531"); - Server c("C/x/z", 18534, "tcp/localhost:18531"); - Server d("D/y/z", 18535, "tcp/localhost:18531"); - Server e("E/y", 18536, "tcp/localhost:18531"); - Server f("F/y/w", 18537, "tcp/localhost:18531"); - - std::vector<std::string> slobrokSpecs; - slobrokSpecs.push_back("tcp/localhost:18531"); - FastOS_ThreadPool threadPool(0x10000); - FNET_Transport transport; - FRT_Supervisor supervisor(&transport); - MirrorOld mirror(supervisor, slobrokSpecs); - EXPECT_TRUE(!mirror.ready()); - transport.Start(&threadPool); - FastOS_Thread::Sleep(1000); - - a.reg(); - EXPECT_TRUE(compare(mirror, "A/x/w", SpecList().add("A/x/w", "tcp/localhost:18532"))); - EXPECT_TRUE(compare(mirror, "*/*", SpecList())); - EXPECT_TRUE(compare(mirror, "*/*/*", SpecList().add("A/x/w", "tcp/localhost:18532"))); - EXPECT_TRUE(mirror.ready()); - - TEST_FLUSH(); - b.reg(); - EXPECT_TRUE(compare(mirror, "B/x", SpecList().add("B/x", "tcp/localhost:18533"))); - EXPECT_TRUE(compare(mirror, "*/*", SpecList().add("B/x", "tcp/localhost:18533"))); - EXPECT_TRUE(compare(mirror, "*/*/*", SpecList().add("A/x/w", "tcp/localhost:18532"))); - - TEST_FLUSH(); - c.reg(); - EXPECT_TRUE(compare(mirror, "C/x/z", SpecList().add("C/x/z", "tcp/localhost:18534"))); - EXPECT_TRUE(compare(mirror, "*/*", SpecList().add("B/x", "tcp/localhost:18533"))); - EXPECT_TRUE(compare(mirror, "*/*/*", SpecList() - .add("A/x/w", "tcp/localhost:18532") - .add("C/x/z", "tcp/localhost:18534"))); - - TEST_FLUSH(); - d.reg(); - EXPECT_TRUE(compare(mirror, "D/y/z", SpecList().add("D/y/z", "tcp/localhost:18535"))); - EXPECT_TRUE(compare(mirror, "*/*", SpecList().add("B/x", "tcp/localhost:18533"))); - EXPECT_TRUE(compare(mirror, "*/*/*", SpecList() - .add("A/x/w", "tcp/localhost:18532") - .add("C/x/z", "tcp/localhost:18534") - .add("D/y/z", "tcp/localhost:18535"))); - - TEST_FLUSH(); - e.reg(); - EXPECT_TRUE(compare(mirror, "E/y", SpecList().add("E/y", "tcp/localhost:18536"))); - EXPECT_TRUE(compare(mirror, "*/*", SpecList() - .add("B/x", "tcp/localhost:18533") - .add("E/y", "tcp/localhost:18536"))); - EXPECT_TRUE(compare(mirror, "*/*/*", SpecList() - .add("A/x/w", "tcp/localhost:18532") - .add("C/x/z", "tcp/localhost:18534") - .add("D/y/z", "tcp/localhost:18535"))); - - TEST_FLUSH(); - f.reg(); - EXPECT_TRUE(compare(mirror, "F/y/w", SpecList().add("F/y/w", "tcp/localhost:18537"))); - EXPECT_TRUE(compare(mirror, "*/*", SpecList() - .add("B/x", "tcp/localhost:18533") - .add("E/y", "tcp/localhost:18536"))); - EXPECT_TRUE(compare(mirror, "*/*/*", SpecList() - .add("A/x/w", "tcp/localhost:18532") - .add("C/x/z", "tcp/localhost:18534") - .add("D/y/z", "tcp/localhost:18535") - .add("F/y/w", "tcp/localhost:18537"))); - - - EXPECT_TRUE(compare(mirror, "*", SpecList())); - - EXPECT_TRUE(compare(mirror, "B/*", SpecList() - .add("B/x", "tcp/localhost:18533"))); - - EXPECT_TRUE(compare(mirror, "*/y", SpecList() - .add("E/y", "tcp/localhost:18536"))); - - EXPECT_TRUE(compare(mirror, "*/x/*", SpecList() - .add("A/x/w", "tcp/localhost:18532") - .add("C/x/z", "tcp/localhost:18534"))); - - EXPECT_TRUE(compare(mirror, "*/*/z", SpecList() - .add("C/x/z", "tcp/localhost:18534") - .add("D/y/z", "tcp/localhost:18535"))); - - EXPECT_TRUE(compare(mirror, "A/*/z", SpecList())); - - EXPECT_TRUE(compare(mirror, "A/*/w", SpecList() - .add("A/x/w", "tcp/localhost:18532"))); - - mock.stop(); - transport.ShutDown(true); - TEST_DONE(); -} |