summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@vespa.ai>2024-03-11 16:27:20 +0100
committerGitHub <noreply@github.com>2024-03-11 16:27:20 +0100
commitc68f4e2b59dda7d38d68153c2e6b40ca927e6776 (patch)
tree5bfffbfee61c4b05efeddacddee96ad362f3fe12
parent1d09828108f484e754256da7eb430312f937454d (diff)
parente2243e0709e86b7a90ebcff1e0d863ed40bf65d9 (diff)
Merge pull request #30567 from vespa-engine/toregge/rewrite-messagebus-resender-unit-test-to-gtest
Rewrite messagebus resender unit test to gtest.
-rw-r--r--messagebus/src/tests/resender/CMakeLists.txt1
-rw-r--r--messagebus/src/tests/resender/resender.cpp152
2 files changed, 66 insertions, 87 deletions
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()