diff options
Diffstat (limited to 'logd/src')
-rw-r--r-- | logd/src/logd/rpc_forwarder.cpp | 8 | ||||
-rw-r--r-- | logd/src/logd/rpc_forwarder.h | 4 | ||||
-rw-r--r-- | logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp | 19 |
3 files changed, 23 insertions, 8 deletions
diff --git a/logd/src/logd/rpc_forwarder.cpp b/logd/src/logd/rpc_forwarder.cpp index 4dbf9e768bc..e515f463db4 100644 --- a/logd/src/logd/rpc_forwarder.cpp +++ b/logd/src/logd/rpc_forwarder.cpp @@ -17,26 +17,24 @@ using vespalib::make_string; namespace logdemon { -RpcForwarder::RpcForwarder(Metrics& metrics, const vespalib::string &hostname, int rpc_port, +RpcForwarder::RpcForwarder(Metrics& metrics, FRT_Supervisor& supervisor, + const vespalib::string &hostname, int rpc_port, double rpc_timeout_secs, size_t max_messages_per_request) : _metrics(metrics), _connection_spec(make_string("tcp/%s:%d", hostname.c_str(), rpc_port)), _rpc_timeout_secs(rpc_timeout_secs), _max_messages_per_request(max_messages_per_request), - _supervisor(), _target(), _messages(), _bad_lines(0), _forward_filter() { - _supervisor.Start(); - _target = _supervisor.GetTarget(_connection_spec.c_str()); + _target = supervisor.GetTarget(_connection_spec.c_str()); } RpcForwarder::~RpcForwarder() { _target->SubRef(); - _supervisor.ShutDown(true); } namespace { diff --git a/logd/src/logd/rpc_forwarder.h b/logd/src/logd/rpc_forwarder.h index 79ffb2154bc..3212da08195 100644 --- a/logd/src/logd/rpc_forwarder.h +++ b/logd/src/logd/rpc_forwarder.h @@ -21,14 +21,14 @@ private: vespalib::string _connection_spec; double _rpc_timeout_secs; size_t _max_messages_per_request; - FRT_Supervisor _supervisor; FRT_Target* _target; std::vector<ns_log::LogMessage> _messages; int _bad_lines; ForwardMap _forward_filter; public: - RpcForwarder(Metrics& metrics, const vespalib::string& logserver_host, int logserver_rpc_port, + RpcForwarder(Metrics& metrics, FRT_Supervisor& supervisor, + const vespalib::string& logserver_host, int logserver_rpc_port, double rpc_timeout_secs, size_t max_messages_per_request); ~RpcForwarder() override; void set_forward_filter(const ForwardMap& forward_filter) { _forward_filter = forward_filter; } diff --git a/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp b/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp index 4c87f5a025e..30ca5e19d44 100644 --- a/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp +++ b/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp @@ -94,16 +94,33 @@ struct MockMetricsManager : public DummyMetricsManager { } }; +class ClientSupervisor { +private: + FRT_Supervisor _supervisor; +public: + ClientSupervisor() + : _supervisor() + { + _supervisor.Start(); + } + ~ClientSupervisor() { + _supervisor.ShutDown(true); + } + FRT_Supervisor& get() { return _supervisor; } + +}; + struct RpcForwarderTest : public ::testing::Test { RpcServer server; std::shared_ptr<MockMetricsManager> metrics_mgr; Metrics metrics; + ClientSupervisor supervisor; RpcForwarder forwarder; RpcForwarderTest() : server(), metrics_mgr(std::make_shared<MockMetricsManager>()), metrics(metrics_mgr), - forwarder(metrics, "localhost", server.get_listen_port(), 60.0, 3) + forwarder(metrics, supervisor.get(), "localhost", server.get_listen_port(), 60.0, 3) { ForwardMap forward_filter; forward_filter[ns_log::Logger::error] = true; |