diff options
Diffstat (limited to 'searchlib/src/tests/engine/transportserver')
3 files changed, 0 insertions, 249 deletions
diff --git a/searchlib/src/tests/engine/transportserver/.gitignore b/searchlib/src/tests/engine/transportserver/.gitignore deleted file mode 100644 index 09d836e0004..00000000000 --- a/searchlib/src/tests/engine/transportserver/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.depend -Makefile -transportserver_test -vlog.txt -searchlib_transportserver_test_app diff --git a/searchlib/src/tests/engine/transportserver/CMakeLists.txt b/searchlib/src/tests/engine/transportserver/CMakeLists.txt deleted file mode 100644 index b4f94884ce4..00000000000 --- a/searchlib/src/tests/engine/transportserver/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(searchlib_transportserver_test_app TEST - SOURCES - transportserver_test.cpp - DEPENDS - searchlib -) -vespa_add_test( - NAME searchlib_transportserver_test_app - COMMAND searchlib_transportserver_test_app - ENVIRONMENT "VESPA_LOG_TARGET=file:vlog.txt;VESPA_LOG_LEVEL=\"all -spam\"" -) diff --git a/searchlib/src/tests/engine/transportserver/transportserver_test.cpp b/searchlib/src/tests/engine/transportserver/transportserver_test.cpp deleted file mode 100644 index baa581c65f9..00000000000 --- a/searchlib/src/tests/engine/transportserver/transportserver_test.cpp +++ /dev/null @@ -1,232 +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 <vespa/document/base/documentid.h> -#include <vespa/searchlib/common/packets.h> -#include <vespa/searchlib/engine/transportserver.h> -#include <vespa/vespalib/util/stringfmt.h> -#include <vespa/fnet/fnet.h> -#include <vespa/searchlib/engine/errorcodes.h> -#include <thread> -#include <chrono> -#include <vespa/log/log.h> -LOG_SETUP("transportserver_test"); - -using namespace document; -using namespace vespalib; -using namespace search::engine; -using namespace search::fs4transport; - -class SyncServer : public search::engine::SearchServer, - public search::engine::DocsumServer, - public search::engine::MonitorServer -{ -private: - virtual SearchReply::UP search(SearchRequest::Source request, SearchClient &client) override; - virtual DocsumReply::UP getDocsums(DocsumRequest::Source request, DocsumClient &client) override; - virtual MonitorReply::UP ping(MonitorRequest::UP request, MonitorClient &client) override; - - SyncServer(const SyncServer &); - SyncServer &operator=(const SyncServer &); -public: - SyncServer() {} - virtual ~SyncServer() {} -}; - -SearchReply::UP -SyncServer::search(SearchRequest::Source request, SearchClient &) -{ - // fastos should use steady clock (this may fail) - std::this_thread::sleep_for(std::chrono::milliseconds(20)); - fastos::TimeStamp my_time = fastos::ClockSystem::now(); - std::this_thread::sleep_for(std::chrono::milliseconds(20)); - EXPECT_GREATER_EQUAL(my_time.val(), request->getStartTime()); - const SearchRequest &req = *request.get(); - SearchReply::UP reply(new SearchReply()); - SearchReply &ret = *reply; - ret.request = request.release(); - LOG(info, "responding to search request..."); - ret.offset = req.offset; - return reply; -} - -DocsumReply::UP -SyncServer::getDocsums(DocsumRequest::Source request, DocsumClient &) -{ - // fastos should use steady clock (this may fail) - std::this_thread::sleep_for(std::chrono::milliseconds(20)); - fastos::TimeStamp my_time = fastos::ClockSystem::now(); - std::this_thread::sleep_for(std::chrono::milliseconds(20)); - EXPECT_GREATER_EQUAL(my_time.val(), request->getStartTime()); - DocsumReply::UP reply(new DocsumReply()); - DocsumReply &ret = *reply; - ret.request = request.release(); - LOG(info, "responding to docsum request..."); - ret.docsums.resize(1); - ret.docsums[0].setData("data", strlen("data")); - ret.docsums[0].gid = DocumentId(vespalib::make_string("id:ns:type::100")).getGlobalId(); - return reply; -} - -MonitorReply::UP -SyncServer::ping(MonitorRequest::UP request, MonitorClient &) -{ - MonitorRequest &req = *request; - MonitorReply::UP reply(new MonitorReply()); - MonitorReply &ret = *reply; - LOG(info, "responding to monitor request..."); - ret.timestamp = req.flags; - return reply; -} - -TEST("transportserver") { - { - SyncServer server; - TransportServer transport(server, server, server, 0, - TransportServer::DEBUG_ALL); - ASSERT_TRUE(transport.start()); - int port = transport.getListenPort(); - ASSERT_TRUE(port > 0); - { - FNET_Context ctx; - FastOS_ThreadPool pool(128 * 1024); - FNET_Transport client; - ASSERT_TRUE(client.Start(&pool)); - - FNET_PacketQueue adminQ; - FNET_Connection *conn = client.Connect(make_string("tcp/localhost:%d", port).c_str(), - &FS4PersistentPacketStreamer::Instance, &adminQ); - ASSERT_TRUE(conn != 0); - { - FS4Packet_MONITORQUERYX *mq = new FS4Packet_MONITORQUERYX(); - mq->_qflags = 30; - mq->_features |= MQF_QFLAGS; - conn->PostPacket(mq, FNET_NOID); - FNET_Packet *p = adminQ.DequeuePacket(60000, &ctx); - ASSERT_TRUE(p != 0); - ASSERT_TRUE(p->GetPCODE() == PCODE_MONITORRESULTX); - FS4Packet_MONITORRESULTX *r = (FS4Packet_MONITORRESULTX*)p; - EXPECT_EQUAL(r->_timestamp, 30u); - p->Free(); - } - { - FNET_PacketQueue q; - FNET_Channel *ch = conn->OpenChannel(&q, FNET_Context()); - FS4Packet_QUERYX *qx = new FS4Packet_QUERYX(); - qx->_features |= QF_PARSEDQUERY; - qx->_offset = 100; - ch->Send(qx); - FNET_Packet *p = q.DequeuePacket(60000, &ctx); - ASSERT_TRUE(p != 0); - ASSERT_TRUE(p->GetPCODE() == PCODE_QUERYRESULTX); - FS4Packet_QUERYRESULTX *r = (FS4Packet_QUERYRESULTX*)p; - EXPECT_EQUAL(r->_offset, 100u); - p->Free(); - ch->CloseAndFree(); - } - { - FS4Packet_MONITORQUERYX *mq = new FS4Packet_MONITORQUERYX(); - mq->_qflags = 40; - mq->_features |= MQF_QFLAGS; - conn->PostPacket(mq, FNET_NOID); - FNET_Packet *p = adminQ.DequeuePacket(60000, &ctx); - ASSERT_TRUE(p != 0); - ASSERT_TRUE(p->GetPCODE() == PCODE_MONITORRESULTX); - FS4Packet_MONITORRESULTX *r = (FS4Packet_MONITORRESULTX*)p; - EXPECT_EQUAL(r->_timestamp, 40u); - p->Free(); - } - { - FNET_PacketQueue q; - FNET_Channel *ch = conn->OpenChannel(&q, FNET_Context()); - FS4Packet_GETDOCSUMSX *qdx = new FS4Packet_GETDOCSUMSX(); - ch->Send(qdx); - FNET_Packet *p = q.DequeuePacket(60000, &ctx); - ASSERT_TRUE(p != 0); - ASSERT_TRUE(p->GetPCODE() == PCODE_DOCSUM); - FS4Packet_DOCSUM *r = (FS4Packet_DOCSUM*)p; - EXPECT_EQUAL(r->getGid(), DocumentId("id:ns:type::100").getGlobalId()); - p->Free(); - p = q.DequeuePacket(60000, &ctx); - ASSERT_TRUE(p != 0); - ASSERT_TRUE(p->GetPCODE() == PCODE_EOL); - p->Free(); - ch->CloseAndFree(); - } - { - FS4Packet_MONITORQUERYX *mq = new FS4Packet_MONITORQUERYX(); - mq->_qflags = 50; - mq->_features |= MQF_QFLAGS; - conn->PostPacket(mq, FNET_NOID); - FNET_Packet *p = adminQ.DequeuePacket(60000, &ctx); - ASSERT_TRUE(p != 0); - ASSERT_TRUE(p->GetPCODE() == PCODE_MONITORRESULTX); - FS4Packet_MONITORRESULTX *r = (FS4Packet_MONITORRESULTX*)p; - EXPECT_EQUAL(r->_timestamp, 50u); - p->Free(); - } - // shut down client - conn->CloseAdminChannel(); - client.Close(conn); - conn->SubRef(); - client.sync(); - client.ShutDown(true); - pool.Close(); - } - - } -} - -void printError(ErrorCode ecode) { - fprintf(stderr, "error code %u: '%s'\n", ecode, getStringFromErrorCode(ecode)); -} - -TEST("print errors") { - printError(ECODE_NO_ERROR); - printError(ECODE_GENERAL_ERROR); - printError(ECODE_QUERY_PARSE_ERROR); - printError(ECODE_ALL_PARTITIONS_DOWN); - printError(ECODE_ILLEGAL_DATASET); - printError(ECODE_OVERLOADED); - printError(ECODE_NOT_IMPLEMENTED); - printError(ECODE_QUERY_NOT_ALLOWED); - printError(ECODE_TIMEOUT); -} - -TEST("test SearchReply::Coverage") { - SearchReply::Coverage c; - EXPECT_EQUAL(0u, c.getActive()); - EXPECT_EQUAL(0u, c.getSoonActive()); - EXPECT_EQUAL(0u, c.getCovered()); - EXPECT_EQUAL(0u, c.getDegradeReason()); -} - -TEST("test SearchReply::Coverage(7)") { - SearchReply::Coverage c(7); - EXPECT_EQUAL(7u, c.getActive()); - EXPECT_EQUAL(7u, c.getSoonActive()); - EXPECT_EQUAL(7u, c.getCovered()); - EXPECT_EQUAL(0u, c.getDegradeReason()); -} - -TEST("test SearchReply::Coverage(7, 19)") { - SearchReply::Coverage c(19, 7); - EXPECT_EQUAL(19u, c.getActive()); - EXPECT_EQUAL(19u, c.getSoonActive()); - EXPECT_EQUAL(7u, c.getCovered()); - EXPECT_EQUAL(0u, c.getDegradeReason()); -} - -TEST("test SearchReply::Coverage set and get") { - SearchReply::Coverage c; - EXPECT_EQUAL(7u, c.setActive(7).getActive()); - EXPECT_EQUAL(9u, c.setSoonActive(9).getSoonActive()); - EXPECT_EQUAL(19u, c.setCovered(19).getCovered()); - EXPECT_EQUAL(5u, c.setDegradeReason(5).getDegradeReason()); - EXPECT_EQUAL(1u, SearchReply::Coverage().degradeMatchPhase().getDegradeReason()); - EXPECT_EQUAL(2u, SearchReply::Coverage().degradeTimeout().getDegradeReason()); - EXPECT_EQUAL(4u, SearchReply::Coverage().degradeAdaptiveTimeout().getDegradeReason()); - EXPECT_EQUAL(7u, SearchReply::Coverage().degradeAdaptiveTimeout().degradeTimeout().degradeMatchPhase().getDegradeReason()); -} - -TEST_MAIN() { TEST_RUN_ALL(); } |