summaryrefslogtreecommitdiffstats
path: root/messagebus
diff options
context:
space:
mode:
Diffstat (limited to 'messagebus')
-rw-r--r--messagebus/src/tests/configagent/CMakeLists.txt1
-rw-r--r--messagebus/src/tests/configagent/configagent.cpp137
-rw-r--r--messagebus/src/tests/messagebus/CMakeLists.txt1
-rw-r--r--messagebus/src/tests/messagebus/messagebus.cpp112
-rw-r--r--messagebus/src/tests/resender/CMakeLists.txt1
-rw-r--r--messagebus/src/tests/resender/resender.cpp152
-rw-r--r--messagebus/src/tests/result/CMakeLists.txt1
-rw-r--r--messagebus/src/tests/result/result.cpp26
8 files changed, 190 insertions, 241 deletions
diff --git a/messagebus/src/tests/configagent/CMakeLists.txt b/messagebus/src/tests/configagent/CMakeLists.txt
index 9cc9eacbe1c..9b07222fc74 100644
--- a/messagebus/src/tests/configagent/CMakeLists.txt
+++ b/messagebus/src/tests/configagent/CMakeLists.txt
@@ -5,5 +5,6 @@ vespa_add_executable(messagebus_configagent_test_app TEST
DEPENDS
messagebus_messagebus-test
messagebus
+ GTest::gtest
)
vespa_add_test(NAME messagebus_configagent_test_app COMMAND messagebus_configagent_test_app)
diff --git a/messagebus/src/tests/configagent/configagent.cpp b/messagebus/src/tests/configagent/configagent.cpp
index f93bfd6c841..e8cab1e679a 100644
--- a/messagebus/src/tests/configagent/configagent.cpp
+++ b/messagebus/src/tests/configagent/configagent.cpp
@@ -1,109 +1,113 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/configagent.h>
#include <vespa/messagebus/iconfighandler.h>
#include <vespa/messagebus/routing/routingspec.h>
#include <vespa/messagebus/config-messagebus.h>
#include <vespa/config/print/fileconfigreader.hpp>
+#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/vespalib/testkit/test_path.h>
using namespace mbus;
using namespace messagebus;
using namespace config;
-class Test : public vespalib::TestApp, public IConfigHandler {
-private:
+class ConfigAgentTest : public testing::Test, public IConfigHandler {
+protected:
RoutingSpec _spec;
+ ConfigAgentTest();
+ ~ConfigAgentTest() override;
bool checkHalf();
bool checkFull();
- bool checkTables(uint32_t numTables);
-
-public:
- ~Test() override;
- int Main() override;
+ void checkTables(uint32_t numTables, bool& success);
bool setupRouting(RoutingSpec spec) override;
};
-Test::~Test() = default;
+ConfigAgentTest::ConfigAgentTest()
+ : testing::Test(),
+ IConfigHandler(),
+ _spec()
+{
+}
-TEST_APPHOOK(Test);
+ConfigAgentTest::~ConfigAgentTest() = default;
bool
-Test::setupRouting(RoutingSpec spec)
+ConfigAgentTest::setupRouting(RoutingSpec spec)
{
_spec = std::move(spec);
return true;
}
-bool
-Test::checkTables(uint32_t numTables)
+void
+ConfigAgentTest::checkTables(uint32_t numTables, bool& success)
{
- if (!EXPECT_EQUAL(numTables, _spec.getNumTables())) return false;
+ ASSERT_EQ(numTables, _spec.getNumTables());
if (numTables > 0) {
- if (!EXPECT_EQUAL("foo", _spec.getTable(0).getProtocol())) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(0).getNumHops())) return false;
- if (!EXPECT_EQUAL("foo-h1", _spec.getTable(0).getHop(0).getName())) return false;
- if (!EXPECT_EQUAL("foo-h1-sel", _spec.getTable(0).getHop(0).getSelector())) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(0).getHop(0).getNumRecipients())) return false;
- if (!EXPECT_EQUAL("foo-h1-r1", _spec.getTable(0).getHop(0).getRecipient(0))) return false;
- if (!EXPECT_EQUAL("foo-h1-r2", _spec.getTable(0).getHop(0).getRecipient(1))) return false;
- if (!EXPECT_EQUAL(true, _spec.getTable(0).getHop(0).getIgnoreResult())) return false;
- if (!EXPECT_EQUAL("foo-h2", _spec.getTable(0).getHop(1).getName())) return false;
- if (!EXPECT_EQUAL("foo-h2-sel", _spec.getTable(0).getHop(1).getSelector())) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(0).getHop(1).getNumRecipients())) return false;
- if (!EXPECT_EQUAL("foo-h2-r1", _spec.getTable(0).getHop(1).getRecipient(0))) return false;
- if (!EXPECT_EQUAL("foo-h2-r2", _spec.getTable(0).getHop(1).getRecipient(1))) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(0).getNumRoutes())) return false;
- if (!EXPECT_EQUAL("foo-r1", _spec.getTable(0).getRoute(0).getName())) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(0).getRoute(0).getNumHops())) return false;
- if (!EXPECT_EQUAL("foo-h1", _spec.getTable(0).getRoute(0).getHop(0))) return false;
- if (!EXPECT_EQUAL("foo-h2", _spec.getTable(0).getRoute(0).getHop(1))) return false;
- if (!EXPECT_EQUAL("foo-r2", _spec.getTable(0).getRoute(1).getName())) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(0).getRoute(1).getNumHops())) return false;
- if (!EXPECT_EQUAL("foo-h2", _spec.getTable(0).getRoute(1).getHop(0))) return false;
- if (!EXPECT_EQUAL("foo-h1", _spec.getTable(0).getRoute(1).getHop(1))) return false;
+ ASSERT_EQ("foo", _spec.getTable(0).getProtocol());
+ ASSERT_EQ(2u, _spec.getTable(0).getNumHops());
+ ASSERT_EQ("foo-h1", _spec.getTable(0).getHop(0).getName());
+ ASSERT_EQ("foo-h1-sel", _spec.getTable(0).getHop(0).getSelector());
+ ASSERT_EQ(2u, _spec.getTable(0).getHop(0).getNumRecipients());
+ ASSERT_EQ("foo-h1-r1", _spec.getTable(0).getHop(0).getRecipient(0));
+ ASSERT_EQ("foo-h1-r2", _spec.getTable(0).getHop(0).getRecipient(1));
+ ASSERT_EQ(true, _spec.getTable(0).getHop(0).getIgnoreResult());
+ ASSERT_EQ("foo-h2", _spec.getTable(0).getHop(1).getName());
+ ASSERT_EQ("foo-h2-sel", _spec.getTable(0).getHop(1).getSelector());
+ ASSERT_EQ(2u, _spec.getTable(0).getHop(1).getNumRecipients());
+ ASSERT_EQ("foo-h2-r1", _spec.getTable(0).getHop(1).getRecipient(0));
+ ASSERT_EQ("foo-h2-r2", _spec.getTable(0).getHop(1).getRecipient(1));
+ ASSERT_EQ(2u, _spec.getTable(0).getNumRoutes());
+ ASSERT_EQ("foo-r1", _spec.getTable(0).getRoute(0).getName());
+ ASSERT_EQ(2u, _spec.getTable(0).getRoute(0).getNumHops());
+ ASSERT_EQ("foo-h1", _spec.getTable(0).getRoute(0).getHop(0));
+ ASSERT_EQ("foo-h2", _spec.getTable(0).getRoute(0).getHop(1));
+ ASSERT_EQ("foo-r2", _spec.getTable(0).getRoute(1).getName());
+ ASSERT_EQ(2u, _spec.getTable(0).getRoute(1).getNumHops());
+ ASSERT_EQ("foo-h2", _spec.getTable(0).getRoute(1).getHop(0));
+ ASSERT_EQ("foo-h1", _spec.getTable(0).getRoute(1).getHop(1));
}
if (numTables > 1) {
- if (!EXPECT_EQUAL("bar", _spec.getTable(1).getProtocol())) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(1).getNumHops())) return false;
- if (!EXPECT_EQUAL("bar-h1", _spec.getTable(1).getHop(0).getName())) return false;
- if (!EXPECT_EQUAL("bar-h1-sel", _spec.getTable(1).getHop(0).getSelector())) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(1).getHop(0).getNumRecipients())) return false;
- if (!EXPECT_EQUAL("bar-h1-r1", _spec.getTable(1).getHop(0).getRecipient(0))) return false;
- if (!EXPECT_EQUAL("bar-h1-r2", _spec.getTable(1).getHop(0).getRecipient(1))) return false;
- if (!EXPECT_EQUAL("bar-h2", _spec.getTable(1).getHop(1).getName())) return false;
- if (!EXPECT_EQUAL("bar-h2-sel", _spec.getTable(1).getHop(1).getSelector())) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(1).getHop(1).getNumRecipients())) return false;
- if (!EXPECT_EQUAL("bar-h2-r1", _spec.getTable(1).getHop(1).getRecipient(0))) return false;
- if (!EXPECT_EQUAL("bar-h2-r2", _spec.getTable(1).getHop(1).getRecipient(1))) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(1).getNumRoutes())) return false;
- if (!EXPECT_EQUAL("bar-r1", _spec.getTable(1).getRoute(0).getName())) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(1).getRoute(0).getNumHops())) return false;
- if (!EXPECT_EQUAL("bar-h1", _spec.getTable(1).getRoute(0).getHop(0))) return false;
- if (!EXPECT_EQUAL("bar-h2", _spec.getTable(1).getRoute(0).getHop(1))) return false;
- if (!EXPECT_EQUAL("bar-r2", _spec.getTable(1).getRoute(1).getName())) return false;
- if (!EXPECT_EQUAL(2u, _spec.getTable(1).getRoute(1).getNumHops())) return false;
- if (!EXPECT_EQUAL("bar-h2", _spec.getTable(1).getRoute(1).getHop(0))) return false;
- if (!EXPECT_EQUAL("bar-h1", _spec.getTable(1).getRoute(1).getHop(1))) return false;
+ ASSERT_EQ("bar", _spec.getTable(1).getProtocol());
+ ASSERT_EQ(2u, _spec.getTable(1).getNumHops());
+ ASSERT_EQ("bar-h1", _spec.getTable(1).getHop(0).getName());
+ ASSERT_EQ("bar-h1-sel", _spec.getTable(1).getHop(0).getSelector());
+ ASSERT_EQ(2u, _spec.getTable(1).getHop(0).getNumRecipients());
+ ASSERT_EQ("bar-h1-r1", _spec.getTable(1).getHop(0).getRecipient(0));
+ ASSERT_EQ("bar-h1-r2", _spec.getTable(1).getHop(0).getRecipient(1));
+ ASSERT_EQ("bar-h2", _spec.getTable(1).getHop(1).getName());
+ ASSERT_EQ("bar-h2-sel", _spec.getTable(1).getHop(1).getSelector());
+ ASSERT_EQ(2u, _spec.getTable(1).getHop(1).getNumRecipients());
+ ASSERT_EQ("bar-h2-r1", _spec.getTable(1).getHop(1).getRecipient(0));
+ ASSERT_EQ("bar-h2-r2", _spec.getTable(1).getHop(1).getRecipient(1));
+ ASSERT_EQ(2u, _spec.getTable(1).getNumRoutes());
+ ASSERT_EQ("bar-r1", _spec.getTable(1).getRoute(0).getName());
+ ASSERT_EQ(2u, _spec.getTable(1).getRoute(0).getNumHops());
+ ASSERT_EQ("bar-h1", _spec.getTable(1).getRoute(0).getHop(0));
+ ASSERT_EQ("bar-h2", _spec.getTable(1).getRoute(0).getHop(1));
+ ASSERT_EQ("bar-r2", _spec.getTable(1).getRoute(1).getName());
+ ASSERT_EQ(2u, _spec.getTable(1).getRoute(1).getNumHops());
+ ASSERT_EQ("bar-h2", _spec.getTable(1).getRoute(1).getHop(0));
+ ASSERT_EQ("bar-h1", _spec.getTable(1).getRoute(1).getHop(1));
}
- return true;
+ success = true;
}
bool
-Test::checkHalf()
+ConfigAgentTest::checkHalf()
{
- return _spec.getNumTables() == 1 && EXPECT_TRUE(checkTables(1));
+ bool success = false;
+ return _spec.getNumTables() == 1 && (checkTables(1, success), success);
}
bool
-Test::checkFull()
+ConfigAgentTest::checkFull()
{
- return _spec.getNumTables() == 2 && EXPECT_TRUE(checkTables(2));
+ bool success = false;
+ return _spec.getNumTables() == 2 && (checkTables(2, success), success);
}
-int
-Test::Main()
+TEST_F(ConfigAgentTest, test_config_agent)
{
- TEST_INIT("configagent_test");
EXPECT_TRUE(!checkHalf());
EXPECT_TRUE(!checkFull());
ConfigAgent agent(*this);
@@ -118,5 +122,6 @@ Test::Main()
agent.configure(FileConfigReader<MessagebusConfig>(TEST_PATH("full.cfg")).read());
EXPECT_TRUE(checkFull());
EXPECT_TRUE(!checkHalf());
- TEST_DONE();
}
+
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/messagebus/src/tests/messagebus/CMakeLists.txt b/messagebus/src/tests/messagebus/CMakeLists.txt
index 3f79e2ed851..f05141ca28f 100644
--- a/messagebus/src/tests/messagebus/CMakeLists.txt
+++ b/messagebus/src/tests/messagebus/CMakeLists.txt
@@ -5,5 +5,6 @@ vespa_add_executable(messagebus_messagebus_test_app TEST
DEPENDS
messagebus_messagebus-test
messagebus
+ GTest::gtest
)
vespa_add_test(NAME messagebus_messagebus_test_app COMMAND messagebus_messagebus_test_app)
diff --git a/messagebus/src/tests/messagebus/messagebus.cpp b/messagebus/src/tests/messagebus/messagebus.cpp
index 5c1bdc54f00..e4d90a3c198 100644
--- a/messagebus/src/tests/messagebus/messagebus.cpp
+++ b/messagebus/src/tests/messagebus/messagebus.cpp
@@ -11,8 +11,8 @@
#include <vespa/messagebus/testlib/simpleprotocol.h>
#include <vespa/messagebus/testlib/slobrok.h>
#include <vespa/messagebus/testlib/testserver.h>
-#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/stringfmt.h>
+#include <vespa/vespalib/gtest/gtest.h>
#include <thread>
using namespace mbus;
@@ -98,8 +98,8 @@ struct Search : public Server {
//-----------------------------------------------------------------------------
-class Test : public vespalib::TestApp {
-private:
+class MessageBusTest : public testing::Test {
+protected:
Slobrok::UP slobrok;
Client::UP client;
DocProc::UP dp0;
@@ -112,44 +112,21 @@ private:
std::vector<DocProc*> dpVec;
std::vector<Search*> searchVec;
-public:
- Test();
- ~Test();
- int Main() override;
- void testSendToCol();
- void testDirectHop();
- void testDirectRoute();
- void testRoutingPolicyCache();
-
-private:
- void setup();
- void teardown();
+ MessageBusTest();
+ ~MessageBusTest();
+ void SetUp() override;
+ void TearDown() override;
void assertSrc(Client& src);
void assertItr(DocProc& itr);
void assertDst(Search& dst);
};
-TEST_APPHOOK(Test);
-
-Test::Test() = default;
-Test::~Test() = default;
-
-int
-Test::Main()
-{
- TEST_INIT("messagebus_test");
-
- testSendToCol(); TEST_FLUSH();
- testDirectHop(); TEST_FLUSH();
- testDirectRoute(); TEST_FLUSH();
- testRoutingPolicyCache(); TEST_FLUSH();
-
- TEST_DONE();
-}
+MessageBusTest::MessageBusTest() = default;
+MessageBusTest::~MessageBusTest() = default;
void
-Test::setup()
+MessageBusTest::SetUp()
{
slobrok.reset(new Slobrok());
client.reset(new Client(*slobrok));
@@ -188,7 +165,8 @@ Test::setup()
ASSERT_TRUE(dp2->server.waitSlobrok("search/r.1/c.1/session"));
}
-void Test::teardown()
+void
+MessageBusTest::TearDown()
{
dpVec.clear();
searchVec.clear();
@@ -203,10 +181,8 @@ void Test::teardown()
slobrok.reset();
}
-void
-Test::testSendToCol()
+TEST_F(MessageBusTest, test_send_to_col)
{
- setup();
ASSERT_TRUE(SimpleMessage("msg").getHash() % 2 == 0);
for (uint32_t i = 0; i < 150; ++i) {
Message::UP msg(new SimpleMessage("msg"));
@@ -244,13 +220,10 @@ Test::testSendToCol()
ASSERT_TRUE(reply->isReply());
EXPECT_TRUE(static_cast<Reply&>(*reply).getNumErrors() == 0);
}
- teardown();
}
-void
-Test::testDirectHop()
+TEST_F(MessageBusTest, test_direct_hop)
{
- setup();
for (int row = 0; row < 2; row++) {
for (int col = 0; col < 2; col++) {
Search* dst = searchVec[row * 2 + col];
@@ -260,25 +233,22 @@ Test::testDirectHop()
Message::UP(new SimpleMessage("empty")),
Route().addHop(vespalib::make_string("search/r.%d/c.%d/session", row, col)))
.isAccepted());
- assertDst(*dst);
- assertSrc(*client);
+ ASSERT_NO_FATAL_FAILURE(assertDst(*dst));
+ ASSERT_NO_FATAL_FAILURE(assertSrc(*client));
// Send using address.
ASSERT_TRUE(client->session->send(
Message::UP(new SimpleMessage("empty")),
Route().addHop(Hop(dst->session->getConnectionSpec().c_str())))
.isAccepted());
- assertDst(*dst);
- assertSrc(*client);
+ ASSERT_NO_FATAL_FAILURE(assertDst(*dst));
+ ASSERT_NO_FATAL_FAILURE(assertSrc(*client));
}
}
- teardown();
}
-void
-Test::testDirectRoute()
+TEST_F(MessageBusTest, test_direct_route)
{
- setup();
ASSERT_TRUE(client->session->send(
Message::UP(new SimpleMessage("empty")),
Route()
@@ -290,26 +260,24 @@ Test::testDirectRoute()
.addHop(Hop(dp2->session->getConnectionSpec()))
.addHop(Hop("search/r.0/c.0/session")))
.isAccepted());
- assertItr(*dp0);
- assertItr(*dp0);
- assertItr(*dp1);
- assertItr(*dp1);
- assertItr(*dp2);
- assertItr(*dp2);
- assertDst(*search00);
- assertItr(*dp2);
- assertItr(*dp2);
- assertItr(*dp1);
- assertItr(*dp1);
- assertItr(*dp0);
- assertItr(*dp0);
- assertSrc(*client);
-
- teardown();
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp0));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp0));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp1));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp1));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp2));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp2));
+ ASSERT_NO_FATAL_FAILURE(assertDst(*search00));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp2));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp2));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp1));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp1));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp0));
+ ASSERT_NO_FATAL_FAILURE(assertItr(*dp0));
+ ASSERT_NO_FATAL_FAILURE(assertSrc(*client));
}
void
-Test::assertDst(Search& dst)
+MessageBusTest::assertDst(Search& dst)
{
ASSERT_TRUE(dst.waitQueueSize(1));
Routable::UP msg = dst.queue.dequeue();
@@ -318,7 +286,7 @@ Test::assertDst(Search& dst)
}
void
-Test::assertItr(DocProc& itr)
+MessageBusTest::assertItr(DocProc& itr)
{
ASSERT_TRUE(itr.waitQueueSize(1));
Routable::UP msg = itr.queue.dequeue();
@@ -327,17 +295,15 @@ Test::assertItr(DocProc& itr)
}
void
-Test::assertSrc(Client& src)
+MessageBusTest::assertSrc(Client& src)
{
ASSERT_TRUE(src.waitQueueSize(1));
Routable::UP msg = src.queue.dequeue();
ASSERT_TRUE(msg);
}
-void
-Test::testRoutingPolicyCache()
+TEST_F(MessageBusTest, test_routing_policy_cache)
{
- setup();
MessageBus &bus = client->server.mb;
IRoutingPolicy::SP all = bus.getRoutingPolicy(SimpleProtocol::NAME, "All", "");
@@ -354,6 +320,6 @@ Test::testRoutingPolicyCache()
IRoutingPolicy::SP refArg = bus.getRoutingPolicy(SimpleProtocol::NAME, "All", "Arg");
ASSERT_TRUE(refArg.get() != NULL);
ASSERT_TRUE(allArg.get() == refArg.get());
-
- teardown();
}
+
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/messagebus/src/tests/resender/CMakeLists.txt b/messagebus/src/tests/resender/CMakeLists.txt
index 2d0e5dbbb61..c364806b2dd 100644
--- a/messagebus/src/tests/resender/CMakeLists.txt
+++ b/messagebus/src/tests/resender/CMakeLists.txt
@@ -5,5 +5,6 @@ vespa_add_executable(messagebus_resender_test_app TEST
DEPENDS
messagebus_messagebus-test
messagebus
+ GTest::gtest
)
vespa_add_test(NAME messagebus_resender_test_app COMMAND messagebus_resender_test_app)
diff --git a/messagebus/src/tests/resender/resender.cpp b/messagebus/src/tests/resender/resender.cpp
index b9c75c36dd0..e61d3704909 100644
--- a/messagebus/src/tests/resender/resender.cpp
+++ b/messagebus/src/tests/resender/resender.cpp
@@ -9,26 +9,11 @@
#include <vespa/messagebus/testlib/simpleprotocol.h>
#include <vespa/messagebus/testlib/slobrok.h>
#include <vespa/messagebus/testlib/testserver.h>
-#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/vespalib/gtest/gtest.h>
using namespace mbus;
-////////////////////////////////////////////////////////////////////////////////
-//
-// Utilities
-//
-////////////////////////////////////////////////////////////////////////////////
-
-class StringList : public std::vector<string> {
-public:
- StringList &add(const string &str);
-};
-
-StringList &
-StringList::add(const string &str)
-{
- std::vector<string>::push_back(str); return *this;
-}
+namespace {
static const duration GET_MESSAGE_TIMEOUT = 60s;
@@ -55,35 +40,17 @@ public:
bool start();
};
-class Test : public vespalib::TestApp {
-private:
- Message::UP createMessage(const string &msg);
- void replyFromDestination(TestData &data, Message::UP msg, uint32_t errorCode, double retryDelay);
-
-public:
- int Main() override;
- void testRetryTag(TestData &data);
- void testRetryEnabledTag(TestData &data);
- void testTransientError(TestData &data);
- void testFatalError(TestData &data);
- void testDisableRetry(TestData &data);
- void testRetryDelay(TestData &data);
- void testRequestRetryDelay(TestData &data);
-};
-
-TEST_APPHOOK(Test);
-
-TestData::TestData() :
- _slobrok(),
- _retryPolicy(new RetryTransientErrorsPolicy()),
- _srcServer(MessageBusParams().setRetryPolicy(_retryPolicy).addProtocol(std::make_shared<SimpleProtocol>()),
- RPCNetworkParams(_slobrok.config())),
- _srcSession(),
- _srcHandler(),
- _dstServer(MessageBusParams().addProtocol(std::make_shared<SimpleProtocol>()),
- RPCNetworkParams(_slobrok.config()).setIdentity(Identity("dst"))),
- _dstSession(),
- _dstHandler()
+TestData::TestData()
+ : _slobrok(),
+ _retryPolicy(new RetryTransientErrorsPolicy()),
+ _srcServer(MessageBusParams().setRetryPolicy(_retryPolicy).addProtocol(std::make_shared<SimpleProtocol>()),
+ RPCNetworkParams(_slobrok.config())),
+ _srcSession(),
+ _srcHandler(),
+ _dstServer(MessageBusParams().addProtocol(std::make_shared<SimpleProtocol>()),
+ RPCNetworkParams(_slobrok.config()).setIdentity(Identity("dst"))),
+ _dstSession(),
+ _dstHandler()
{ }
TestData::~TestData() = default;
@@ -105,35 +72,16 @@ TestData::start()
return true;
}
-Message::UP
-Test::createMessage(const string &msg)
+std::unique_ptr<Message>
+createMessage(const string &msg)
{
Message::UP ret(new SimpleMessage(msg));
ret->getTrace().setLevel(9);
return ret;
}
-int
-Test::Main()
-{
- TEST_INIT("resender_test");
-
- TestData data;
- ASSERT_TRUE(data.start());
-
- testRetryTag(data); TEST_FLUSH();
- testRetryEnabledTag(data); TEST_FLUSH();
- testTransientError(data); TEST_FLUSH();
- testFatalError(data); TEST_FLUSH();
- testDisableRetry(data); TEST_FLUSH();
- testRetryDelay(data); TEST_FLUSH();
- testRequestRetryDelay(data); TEST_FLUSH();
-
- TEST_DONE();
-}
-
void
-Test::replyFromDestination(TestData &data, Message::UP msg, uint32_t errorCode, double retryDelay)
+replyFromDestination(TestData &data, Message::UP msg, uint32_t errorCode, double retryDelay)
{
Reply::UP reply(new EmptyReply());
reply->swapState(*msg);
@@ -144,22 +92,51 @@ Test::replyFromDestination(TestData &data, Message::UP msg, uint32_t errorCode,
data._dstSession->reply(std::move(reply));
}
+}
+
+class ResenderTest : public testing::Test {
+protected:
+ static std::shared_ptr<TestData> _data;
+ ResenderTest();
+ ~ResenderTest() override;
+ static void SetUpTestSuite();
+ static void TearDownTestSuite();
+};
+
+std::shared_ptr<TestData> ResenderTest::_data;
+
+ResenderTest::ResenderTest() = default;
+ResenderTest::~ResenderTest() = default;
+
+void
+ResenderTest::SetUpTestSuite()
+{
+ _data = std::make_shared<TestData>();
+ ASSERT_TRUE(_data->start());
+}
+
+void
+ResenderTest::TearDownTestSuite()
+{
+ _data.reset();
+}
+
////////////////////////////////////////////////////////////////////////////////
//
// Tests
//
////////////////////////////////////////////////////////////////////////////////
-void
-Test::testRetryTag(TestData &data)
+TEST_F(ResenderTest, test_retry_tag)
{
+ auto& data = *_data;
data._retryPolicy->setEnabled(true);
EXPECT_TRUE(data._srcSession->send(createMessage("msg"), Route::parse("dst/session")).isAccepted());
Message::UP msg = data._dstHandler.getMessage(GET_MESSAGE_TIMEOUT);
ASSERT_TRUE(msg);
for (uint32_t i = 0; i < 5; ++i) {
- EXPECT_EQUAL(i, msg->getRetry());
- EXPECT_EQUAL(true, msg->getRetryEnabled());
+ EXPECT_EQ(i, msg->getRetry());
+ EXPECT_EQ(true, msg->getRetryEnabled());
replyFromDestination(data, std::move(msg), ErrorCode::APP_TRANSIENT_ERROR, 0);
msg = data._dstHandler.getMessage(GET_MESSAGE_TIMEOUT);
ASSERT_TRUE(msg);
@@ -173,16 +150,16 @@ Test::testRetryTag(TestData &data)
printf("%s", reply->getTrace().toString().c_str());
}
-void
-Test::testRetryEnabledTag(TestData &data)
+TEST_F(ResenderTest, test_retry_enabled_tag)
{
+ auto& data = *_data;
data._retryPolicy->setEnabled(true);
Message::UP msg = createMessage("msg");
msg->setRetryEnabled(false);
EXPECT_TRUE(data._srcSession->send(std::move(msg), Route::parse("dst/session")).isAccepted());
msg = data._dstHandler.getMessage(GET_MESSAGE_TIMEOUT);
ASSERT_TRUE(msg);
- EXPECT_EQUAL(false, msg->getRetryEnabled());
+ EXPECT_EQ(false, msg->getRetryEnabled());
replyFromDestination(data, std::move(msg), ErrorCode::APP_TRANSIENT_ERROR, 0);
Reply::UP reply = data._srcHandler.getReply();
ASSERT_TRUE(reply);
@@ -192,9 +169,9 @@ Test::testRetryEnabledTag(TestData &data)
printf("%s", reply->getTrace().toString().c_str());
}
-void
-Test::testTransientError(TestData &data)
+TEST_F(ResenderTest, test_transient_error)
{
+ auto& data = *_data;
data._retryPolicy->setEnabled(true);
EXPECT_TRUE(data._srcSession->send(createMessage("msg"), Route::parse("dst/session")).isAccepted());
Message::UP msg = data._dstHandler.getMessage(GET_MESSAGE_TIMEOUT);
@@ -211,9 +188,9 @@ Test::testTransientError(TestData &data)
printf("%s", reply->getTrace().toString().c_str());
}
-void
-Test::testFatalError(TestData &data)
+TEST_F(ResenderTest, test_fatal_error)
{
+ auto& data = *_data;
data._retryPolicy->setEnabled(true);
EXPECT_TRUE(data._srcSession->send(createMessage("msg"), Route::parse("dst/session")).isAccepted());
Message::UP msg = data._dstHandler.getMessage(GET_MESSAGE_TIMEOUT);
@@ -227,9 +204,9 @@ Test::testFatalError(TestData &data)
printf("%s", reply->getTrace().toString().c_str());
}
-void
-Test::testDisableRetry(TestData &data)
+TEST_F(ResenderTest, test_disable_retry)
{
+ auto& data = *_data;
data._retryPolicy->setEnabled(false);
EXPECT_TRUE(data._srcSession->send(createMessage("msg"), Route::parse("dst/session")).isAccepted());
Message::UP msg = data._dstHandler.getMessage(GET_MESSAGE_TIMEOUT);
@@ -244,16 +221,16 @@ Test::testDisableRetry(TestData &data)
printf("%s", reply->getTrace().toString().c_str());
}
-void
-Test::testRetryDelay(TestData &data)
+TEST_F(ResenderTest, test_retry_delay)
{
+ auto& data = *_data;
data._retryPolicy->setEnabled(true);
data._retryPolicy->setBaseDelay(0.01);
EXPECT_TRUE(data._srcSession->send(createMessage("msg"), Route::parse("dst/session")).isAccepted());
Message::UP msg = data._dstHandler.getMessage(GET_MESSAGE_TIMEOUT);
ASSERT_TRUE(msg);
for (uint32_t i = 0; i < 5; ++i) {
- EXPECT_EQUAL(i, msg->getRetry());
+ EXPECT_EQ(i, msg->getRetry());
replyFromDestination(data, std::move(msg), ErrorCode::APP_TRANSIENT_ERROR, -1);
msg = data._dstHandler.getMessage(GET_MESSAGE_TIMEOUT);
ASSERT_TRUE(msg);
@@ -273,16 +250,16 @@ Test::testRetryDelay(TestData &data)
EXPECT_TRUE(trace.find("retry 5 in 0.160") != string::npos);
}
-void
-Test::testRequestRetryDelay(TestData &data)
+TEST_F(ResenderTest, test_request_retry_delay)
{
+ auto& data = *_data;
data._retryPolicy->setEnabled(true);
data._retryPolicy->setBaseDelay(1);
EXPECT_TRUE(data._srcSession->send(createMessage("msg"), Route::parse("dst/session")).isAccepted());
Message::UP msg = data._dstHandler.getMessage(GET_MESSAGE_TIMEOUT);
ASSERT_TRUE(msg);
for (uint32_t i = 0; i < 5; ++i) {
- EXPECT_EQUAL(i, msg->getRetry());
+ EXPECT_EQ(i, msg->getRetry());
replyFromDestination(data, std::move(msg), ErrorCode::APP_TRANSIENT_ERROR, i / 50.0);
msg = data._dstHandler.getMessage(GET_MESSAGE_TIMEOUT);
ASSERT_TRUE(msg);
@@ -302,3 +279,4 @@ Test::testRequestRetryDelay(TestData &data)
EXPECT_TRUE(trace.find("retry 5 in 0.080") != string::npos);
}
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/messagebus/src/tests/result/CMakeLists.txt b/messagebus/src/tests/result/CMakeLists.txt
index 6aba63fdc41..d4360f3826b 100644
--- a/messagebus/src/tests/result/CMakeLists.txt
+++ b/messagebus/src/tests/result/CMakeLists.txt
@@ -5,5 +5,6 @@ vespa_add_executable(messagebus_result_test_app TEST
DEPENDS
messagebus_messagebus-test
messagebus
+ GTest::gtest
)
vespa_add_test(NAME messagebus_result_test_app COMMAND messagebus_result_test_app)
diff --git a/messagebus/src/tests/result/result.cpp b/messagebus/src/tests/result/result.cpp
index 4140e26db95..ce6e19b7dcb 100644
--- a/messagebus/src/tests/result/result.cpp
+++ b/messagebus/src/tests/result/result.cpp
@@ -1,13 +1,15 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/result.h>
#include <vespa/messagebus/error.h>
#include <vespa/messagebus/errorcode.h>
#include <vespa/messagebus/testlib/simplemessage.h>
+#include <vespa/vespalib/gtest/gtest.h>
using namespace mbus;
+namespace {
+
struct MyMessage : public SimpleMessage
{
static int ctorCnt;
@@ -22,28 +24,23 @@ struct MyMessage : public SimpleMessage
int MyMessage::ctorCnt = 0;
int MyMessage::dtorCnt = 0;
-struct Test : public vespalib::TestApp
-{
- Result sendOk(Message::UP msg);
- Result sendFail(Message::UP msg);
- int Main() override;
-};
-
Result
-Test::sendOk(Message::UP msg) {
+sendOk(Message::UP msg)
+{
(void) msg;
return Result();
}
Result
-Test::sendFail(Message::UP msg) {
+sendFail(Message::UP msg)
+{
return Result(Error(ErrorCode::FATAL_ERROR, "error"), std::move(msg));
}
-int
-Test::Main()
+}
+
+TEST(ResultTest, test_result)
{
- TEST_INIT("result_test");
{ // test accepted
Message::UP msg(new MyMessage("test"));
Result res = sendOk(std::move(msg));
@@ -68,7 +65,6 @@ Test::Main()
}
EXPECT_TRUE(MyMessage::ctorCnt == 2);
EXPECT_TRUE(MyMessage::dtorCnt == 2);
- TEST_DONE();
}
-TEST_APPHOOK(Test);
+GTEST_MAIN_RUN_ALL_TESTS()