summaryrefslogtreecommitdiffstats
path: root/logd
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-03-28 10:07:15 +0000
committerGeir Storli <geirst@verizonmedia.com>2019-03-28 10:07:15 +0000
commit686936d12ded663c40fb4b0cb6ac28d48e11813e (patch)
tree5d189f997363224932f92bd99affcc70b92e4aa3 /logd
parent5d22214d38aad75b0362cd64283394a0c02fb12f (diff)
Count bad log lines.
Diffstat (limited to 'logd')
-rw-r--r--logd/src/logd/rpc_forwarder.cpp7
-rw-r--r--logd/src/logd/rpc_forwarder.h1
-rw-r--r--logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp20
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;