diff options
author | Geir Storli <geirst@verizonmedia.com> | 2019-03-29 08:45:50 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2019-03-29 08:45:50 +0000 |
commit | 24e3f9a0da95f11d0603a727e1ea0c860422de2e (patch) | |
tree | 6086fe8449745f148e5b86615fba029608064d24 /logd | |
parent | d0dd5320ca4d41847b5b789d2a8c6f7c21061b5b (diff) |
Move ownership of supervisor out of rpc forwarder.
Diffstat (limited to 'logd')
-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; |