diff options
author | Tor Egge <Tor.Egge@online.no> | 2024-06-04 00:57:18 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2024-06-04 01:36:59 +0200 |
commit | a434ad67c080420b6261666acc2d27beaf421b3b (patch) | |
tree | 30a37e6354f96e75310e9fdb7982e9dd8d19ce29 /jrt_test | |
parent | a94cd1b1b3976f69eb46c5468b3dbaf80e2bd22e (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.txt | 1 | ||||
-rw-r--r-- | jrt_test/src/tests/rpc-error/test-errors.cpp | 149 |
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); |