diff options
author | Geir Storli <geirst@verizonmedia.com> | 2019-03-28 10:07:15 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2019-03-28 10:07:15 +0000 |
commit | 686936d12ded663c40fb4b0cb6ac28d48e11813e (patch) | |
tree | 5d189f997363224932f92bd99affcc70b92e4aa3 | |
parent | 5d22214d38aad75b0362cd64283394a0c02fb12f (diff) |
Count bad log lines.
-rw-r--r-- | logd/src/logd/rpc_forwarder.cpp | 7 | ||||
-rw-r--r-- | logd/src/logd/rpc_forwarder.h | 1 | ||||
-rw-r--r-- | logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp | 20 |
3 files changed, 26 insertions, 2 deletions
diff --git a/logd/src/logd/rpc_forwarder.cpp b/logd/src/logd/rpc_forwarder.cpp index 37436c713bd..4f637a34836 100644 --- a/logd/src/logd/rpc_forwarder.cpp +++ b/logd/src/logd/rpc_forwarder.cpp @@ -23,7 +23,8 @@ RpcForwarder::RpcForwarder(const vespalib::string &hostname, int rpc_port, _max_messages_per_request(max_messages_per_request), _supervisor(), _target(), - _messages() + _messages(), + _bad_lines(0) { _supervisor.Start(); _target = _supervisor.GetTarget(_connection_spec.c_str()); @@ -69,6 +70,7 @@ RpcForwarder::forwardLine(std::string_view line) message.parse_log_line(line); } catch (BadLogLineException &e) { LOG(spam, "Skipping bad logline: %s", e.what()); + ++_bad_lines; return; } _messages.push_back(std::move(message)); @@ -107,12 +109,13 @@ RpcForwarder::flush() int RpcForwarder::badLines() const { - return 0; + return _bad_lines; } void RpcForwarder::resetBadLines() { + _bad_lines = 0; } } diff --git a/logd/src/logd/rpc_forwarder.h b/logd/src/logd/rpc_forwarder.h index 65ac0b0af44..64ea0ebea64 100644 --- a/logd/src/logd/rpc_forwarder.h +++ b/logd/src/logd/rpc_forwarder.h @@ -21,6 +21,7 @@ private: FRT_Supervisor _supervisor; FRT_Target* _target; std::vector<ns_log::LogMessage> _messages; + int _bad_lines; public: RpcForwarder(const vespalib::string& logserver_host, int logserver_rpc_port, diff --git a/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp b/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp index 183132bb39d..be20d715c81 100644 --- a/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp +++ b/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp @@ -93,6 +93,9 @@ struct RpcForwarderTest : public ::testing::Test { void forward_line(const std::string& payload) { forwarder.forwardLine(make_log_line(payload)); } + void forward_bad_line() { + forwarder.forwardLine("badline"); + } void flush() { forwarder.flush(); } @@ -144,6 +147,23 @@ TEST_F(RpcForwarderTest, automatically_sends_rpc_when_max_messages_limit_is_reac expect_messages(2, {"a", "b", "c", "d", "e", "f"}); } +TEST_F(RpcForwarderTest, bad_log_lines_are_counted_but_not_sent) +{ + forward_line("a"); + forward_bad_line(); + EXPECT_EQ(1, forwarder.badLines()); + flush(); + expect_messages(1, {"a"}); +} + +TEST_F(RpcForwarderTest, bad_log_lines_count_can_be_reset) +{ + forward_bad_line(); + EXPECT_EQ(1, forwarder.badLines()); + forwarder.resetBadLines(); + EXPECT_EQ(0, forwarder.badLines()); +} + TEST_F(RpcForwarderTest, throws_when_rpc_reply_contains_errors) { server.reply_with_error = true; |