summaryrefslogtreecommitdiffstats
path: root/jrt_test
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2024-06-04 00:57:18 +0200
committerTor Egge <Tor.Egge@online.no>2024-06-04 01:36:59 +0200
commita434ad67c080420b6261666acc2d27beaf421b3b (patch)
tree30a37e6354f96e75310e9fdb7982e9dd8d19ce29 /jrt_test
parenta94cd1b1b3976f69eb46c5468b3dbaf80e2bd22e (diff)
Rewrite jrt_test rpc-error test-errors unit test to gtest.
Diffstat (limited to 'jrt_test')
-rw-r--r--jrt_test/src/tests/rpc-error/CMakeLists.txt1
-rw-r--r--jrt_test/src/tests/rpc-error/test-errors.cpp149
2 files changed, 71 insertions, 79 deletions
diff --git a/jrt_test/src/tests/rpc-error/CMakeLists.txt b/jrt_test/src/tests/rpc-error/CMakeLists.txt
index a86289c73bb..b0aab8a0eb9 100644
--- a/jrt_test/src/tests/rpc-error/CMakeLists.txt
+++ b/jrt_test/src/tests/rpc-error/CMakeLists.txt
@@ -3,6 +3,7 @@ vespa_add_executable(jrt_test_test-errors_app TEST
SOURCES
test-errors.cpp
DEPENDS
+ GTest::gtest
)
vespa_add_test(NAME jrt_test_test-errors_app NO_VALGRIND COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/rpc-error_test.sh
DEPENDS jrt_test_test-errors_app)
diff --git a/jrt_test/src/tests/rpc-error/test-errors.cpp b/jrt_test/src/tests/rpc-error/test-errors.cpp
index f7b8ff10185..59c32b796ab 100644
--- a/jrt_test/src/tests/rpc-error/test-errors.cpp
+++ b/jrt_test/src/tests/rpc-error/test-errors.cpp
@@ -1,171 +1,162 @@
// 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/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
#include <vespa/fnet/frt/rpcrequest.h>
+#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/vespalib/util/ref_counted.h>
+
+vespalib::string spec;
-class TestErrors : public vespalib::TestApp
+class TestErrors : public ::testing::Test
{
-private:
- fnet::frt::StandaloneFRT server;
- FRT_Supervisor *client;
- FRT_Target *target;
+protected:
+ static std::unique_ptr<fnet::frt::StandaloneFRT> server;
+ static vespalib::ref_counted<FRT_Target> target;
+ vespalib::ref_counted<FRT_RPCRequest> alloc_rpc_request() {
+ return vespalib::ref_counted<FRT_RPCRequest>::internal_attach(server->supervisor().AllocRPCRequest());
+ }
public:
TestErrors();
~TestErrors() override;
- void init(const char *spec) {
- client = & server.supervisor();
- target = client->GetTarget(spec);
- }
- void fini() {
- target->internal_subref();
- target = nullptr;
- client = nullptr;
- }
+ static void SetUpTestSuite();
+ static void TearDownTestSuite();
void testNoError();
void testNoSuchMethod();
void testWrongParameters();
void testWrongReturnValues();
void testMethodFailed();
- int Main() override;
};
+std::unique_ptr<fnet::frt::StandaloneFRT> TestErrors::server;
+vespalib::ref_counted<FRT_Target> TestErrors::target;
+
TestErrors::TestErrors() = default;
TestErrors::~TestErrors() = default;
void
-TestErrors::testNoError()
+TestErrors::SetUpTestSuite()
+{
+ server = std::make_unique<fnet::frt::StandaloneFRT>();
+ target = vespalib::ref_counted<FRT_Target>::internal_attach(server->supervisor().GetTarget(spec.c_str()));
+}
+
+void
+TestErrors::TearDownTestSuite()
+{
+ target.reset();
+ server.reset();
+}
+
+TEST_F(TestErrors, no_error)
{
- FRT_RPCRequest *req1 = client->AllocRPCRequest();
+ auto req1 = alloc_rpc_request();
req1->SetMethodName("test");
req1->GetParams()->AddInt32(42);
req1->GetParams()->AddInt32(0);
req1->GetParams()->AddInt8(0);
- target->InvokeSync(req1, 60.0);
+ target->InvokeSync(&*req1, 60.0);
EXPECT_TRUE(!req1->IsError());
- if (EXPECT_TRUE(1 == req1->GetReturn()->GetNumValues())) {
- EXPECT_TRUE(42 == req1->GetReturn()->GetValue(0)._intval32);
- } else {
- EXPECT_TRUE(false);
- }
- req1->internal_subref();
+ ASSERT_EQ(1, req1->GetReturn()->GetNumValues());
+ ASSERT_EQ(42, req1->GetReturn()->GetValue(0)._intval32);
}
-void
-TestErrors::testNoSuchMethod()
+TEST_F(TestErrors, no_such_method)
{
- FRT_RPCRequest *req1 = client->AllocRPCRequest();
+ auto req1 = alloc_rpc_request();
req1->SetMethodName("bogus");
- target->InvokeSync(req1, 60.0);
+ target->InvokeSync(&*req1, 60.0);
EXPECT_TRUE(req1->IsError());
EXPECT_TRUE(0 == req1->GetReturn()->GetNumValues());
EXPECT_TRUE(FRTE_RPC_NO_SUCH_METHOD == req1->GetErrorCode());
- req1->internal_subref();
}
-void
-TestErrors::testWrongParameters()
+TEST_F(TestErrors, wrong_parameters)
{
- FRT_RPCRequest *req1 = client->AllocRPCRequest();
+ auto req1 = alloc_rpc_request();
req1->SetMethodName("test");
req1->GetParams()->AddInt32(42);
req1->GetParams()->AddInt32(0);
req1->GetParams()->AddInt32(0);
- target->InvokeSync(req1, 60.0);
+ target->InvokeSync(&*req1, 60.0);
EXPECT_TRUE(req1->IsError());
- EXPECT_TRUE(0 == req1->GetReturn()->GetNumValues());
+ EXPECT_EQ(0, req1->GetReturn()->GetNumValues());
EXPECT_TRUE(FRTE_RPC_WRONG_PARAMS == req1->GetErrorCode());
- req1->internal_subref();
+ req1.reset();
- FRT_RPCRequest *req2 = client->AllocRPCRequest();
+ auto req2 = alloc_rpc_request();
req2->SetMethodName("test");
req2->GetParams()->AddInt32(42);
req2->GetParams()->AddInt32(0);
- target->InvokeSync(req2, 60.0);
+ target->InvokeSync(&*req2, 60.0);
EXPECT_TRUE(req2->IsError());
- EXPECT_TRUE(0 == req2->GetReturn()->GetNumValues());
+ EXPECT_EQ(0, req2->GetReturn()->GetNumValues());
EXPECT_TRUE(FRTE_RPC_WRONG_PARAMS == req2->GetErrorCode());
- req2->internal_subref();
+ req2.reset();
- FRT_RPCRequest *req3 = client->AllocRPCRequest();
+ auto req3 = alloc_rpc_request();
req3->SetMethodName("test");
req3->GetParams()->AddInt32(42);
req3->GetParams()->AddInt32(0);
req3->GetParams()->AddInt8(0);
req3->GetParams()->AddInt8(0);
- target->InvokeSync(req3, 60.0);
+ target->InvokeSync(&*req3, 60.0);
EXPECT_TRUE(req3->IsError());
- EXPECT_TRUE(0 == req3->GetReturn()->GetNumValues());
+ EXPECT_EQ(0, req3->GetReturn()->GetNumValues());
EXPECT_TRUE(FRTE_RPC_WRONG_PARAMS == req3->GetErrorCode());
- req3->internal_subref();
}
-void
-TestErrors::testWrongReturnValues()
+TEST_F(TestErrors, wrong_return_values)
{
- FRT_RPCRequest *req1 = client->AllocRPCRequest();
+ auto req1 = alloc_rpc_request();
req1->SetMethodName("test");
req1->GetParams()->AddInt32(42);
req1->GetParams()->AddInt32(0);
req1->GetParams()->AddInt8(1);
- target->InvokeSync(req1, 60.0);
+ target->InvokeSync(&*req1, 60.0);
EXPECT_TRUE(req1->IsError());
- EXPECT_TRUE(0 == req1->GetReturn()->GetNumValues());
- EXPECT_TRUE(FRTE_RPC_WRONG_RETURN == req1->GetErrorCode());
- req1->internal_subref();
+ EXPECT_EQ(0, req1->GetReturn()->GetNumValues());
+ EXPECT_TRUE(FRTE_RPC_WRONG_RETURN == req1->GetErrorCode());
}
-void
-TestErrors::testMethodFailed()
+TEST_F(TestErrors, method_failed)
{
- FRT_RPCRequest *req1 = client->AllocRPCRequest();
+ auto req1 = alloc_rpc_request();
req1->SetMethodName("test");
req1->GetParams()->AddInt32(42);
req1->GetParams()->AddInt32(75000);
req1->GetParams()->AddInt8(0);
- target->InvokeSync(req1, 60.0);
+ target->InvokeSync(&*req1, 60.0);
EXPECT_TRUE(req1->IsError());
- EXPECT_TRUE(0 == req1->GetReturn()->GetNumValues());
- EXPECT_TRUE(75000 == req1->GetErrorCode());
- req1->internal_subref();
+ EXPECT_EQ(0, req1->GetReturn()->GetNumValues());
+ EXPECT_EQ(75000, req1->GetErrorCode());
- FRT_RPCRequest *req2 = client->AllocRPCRequest();
+ auto req2 = alloc_rpc_request();
req2->SetMethodName("test");
req2->GetParams()->AddInt32(42);
req2->GetParams()->AddInt32(75000);
req2->GetParams()->AddInt8(1);
- target->InvokeSync(req2, 60.0);
+ target->InvokeSync(&*req2, 60.0);
EXPECT_TRUE(req2->IsError());
- EXPECT_TRUE(0 == req2->GetReturn()->GetNumValues());
- EXPECT_TRUE(75000 == req2->GetErrorCode());
- req2->internal_subref();
+ EXPECT_EQ(0, req2->GetReturn()->GetNumValues());
+ EXPECT_EQ(75000, req2->GetErrorCode());
}
-
int
-TestErrors::Main()
+main(int argc, char* argv[])
{
- if (_argc != 2) {
- fprintf(stderr, "usage: %s spec", _argv[0]);
+ if (argc != 2) {
+ fprintf(stderr, "usage: %s spec\n", argv[0]);
return 1;
}
- TEST_INIT("test_errors");
- init(_argv[1]);
- testNoError();
- testNoSuchMethod();
- testWrongParameters();
- testWrongReturnValues();
- testMethodFailed();
- fini();
- TEST_DONE();
+ spec = argv[1];
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
}
-
-
-TEST_APPHOOK(TestErrors);