aboutsummaryrefslogtreecommitdiffstats
path: root/logd
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-05-09 15:13:25 +0200
committerGitHub <noreply@github.com>2019-05-09 15:13:25 +0200
commitb15422b415f6bb29c55d217d631a421d3c3c862f (patch)
tree006af8076e9c7f46d6adfacfdc09e10bbb1dc31a /logd
parent54e9c858d1aa62dbcb97dcb2743e79d03d784334 (diff)
parent46885b2f72030a887c2787858929c8ed088fdaaf (diff)
Merge pull request #9342 from vespa-engine/geirst/remove-legacy-protocol-between-logd-and-logserver
Remove the legacy protocol between logd and logserver.
Diffstat (limited to 'logd')
-rw-r--r--logd/CMakeLists.txt2
-rw-r--r--logd/src/apps/logd/main.cpp2
-rw-r--r--logd/src/logd/CMakeLists.txt3
-rw-r--r--logd/src/logd/config_subscriber.cpp23
-rw-r--r--logd/src/logd/config_subscriber.h2
-rw-r--r--logd/src/logd/conn.cpp30
-rw-r--r--logd/src/logd/conn.h9
-rw-r--r--logd/src/logd/empty_forwarder.cpp51
-rw-r--r--logd/src/logd/empty_forwarder.h33
-rw-r--r--logd/src/logd/forwarder.h1
-rw-r--r--logd/src/logd/legacy_forwarder.cpp168
-rw-r--r--logd/src/logd/legacy_forwarder.h50
-rw-r--r--logd/src/logd/rpc_forwarder.h1
-rw-r--r--logd/src/logd/watcher.cpp2
-rw-r--r--logd/src/main/resources/configdefinitions/logd.def4
-rw-r--r--logd/src/tests/empty_forwarder/.gitignore3
-rw-r--r--logd/src/tests/empty_forwarder/CMakeLists.txt9
-rw-r--r--logd/src/tests/empty_forwarder/empty_forwarder_test.cpp59
-rw-r--r--logd/src/tests/legacy_forwarder/.gitignore5
-rw-r--r--logd/src/tests/legacy_forwarder/CMakeLists.txt8
-rw-r--r--logd/src/tests/legacy_forwarder/legacy_forwarder_test.cpp74
-rw-r--r--logd/src/tests/watcher/watcher_test.cpp3
22 files changed, 165 insertions, 377 deletions
diff --git a/logd/CMakeLists.txt b/logd/CMakeLists.txt
index 55afaf9d126..c49632351dc 100644
--- a/logd/CMakeLists.txt
+++ b/logd/CMakeLists.txt
@@ -14,7 +14,7 @@ vespa_define_module(
src/logd
TESTS
- src/tests/legacy_forwarder
+ src/tests/empty_forwarder
src/tests/proto_converter
src/tests/rotate
src/tests/rpc_forwarder
diff --git a/logd/src/apps/logd/main.cpp b/logd/src/apps/logd/main.cpp
index 067894e96d9..db34c38847e 100644
--- a/logd/src/apps/logd/main.cpp
+++ b/logd/src/apps/logd/main.cpp
@@ -1,8 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <logd/config_subscriber.h>
+#include <logd/empty_forwarder.h>
#include <logd/exceptions.h>
-#include <logd/legacy_forwarder.h>
#include <logd/metrics.h>
#include <logd/state_reporter.h>
#include <logd/watcher.h>
diff --git a/logd/src/logd/CMakeLists.txt b/logd/src/logd/CMakeLists.txt
index 1b2b078ac94..49644f1b199 100644
--- a/logd/src/logd/CMakeLists.txt
+++ b/logd/src/logd/CMakeLists.txt
@@ -14,8 +14,7 @@ endif()
vespa_add_library(logd STATIC
SOURCES
config_subscriber.cpp
- conn.cpp
- legacy_forwarder.cpp
+ empty_forwarder.cpp
metrics.cpp
proto_converter.cpp
rpc_forwarder.cpp
diff --git a/logd/src/logd/config_subscriber.cpp b/logd/src/logd/config_subscriber.cpp
index ce29c808742..ddcfcd38aae 100644
--- a/logd/src/logd/config_subscriber.cpp
+++ b/logd/src/logd/config_subscriber.cpp
@@ -1,8 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config_subscriber.h"
-#include "conn.h"
-#include "legacy_forwarder.h"
+#include "empty_forwarder.h"
#include "rpc_forwarder.h"
#include <fcntl.h>
#include <unistd.h>
@@ -43,18 +42,10 @@ ConfigSubscriber::configure(std::unique_ptr<LogdConfig> cfg)
_need_new_forwarder = true;
}
- if (newconf.logserver.port != _logserver_port) {
- _logserver_port = newconf.logserver.port;
- _need_new_forwarder = true;
- }
if (newconf.logserver.rpcport != _logserver_rpc_port) {
_logserver_rpc_port = newconf.logserver.rpcport;
_need_new_forwarder = true;
}
- if (newconf.logserver.userpc != _logserver_use_rpc) {
- _logserver_use_rpc = newconf.logserver.userpc;
- _need_new_forwarder = true;
- }
if (newconf.rotate.size > 0) {
_rotate_size = newconf.rotate.size;
} else {
@@ -97,9 +88,7 @@ ConfigSubscriber::latch()
ConfigSubscriber::ConfigSubscriber(const config::ConfigUri& configUri)
: _logserver_host(),
- _logserver_port(0),
_logserver_rpc_port(0),
- _logserver_use_rpc(false),
_state_port(0),
_forward_filter(),
_rotate_size(INT_MAX),
@@ -134,14 +123,10 @@ ConfigSubscriber::make_forwarder(Metrics& metrics)
{
std::unique_ptr<Forwarder> result;
if (_use_logserver) {
- if (_logserver_use_rpc) {
- result = std::make_unique<RpcForwarder>(metrics, _forward_filter, _supervisor, _logserver_host,
- _logserver_rpc_port, 60.0, 100);
- } else {
- result = LegacyForwarder::to_logserver(metrics, _forward_filter, _logserver_host, _logserver_port);
- }
+ result = std::make_unique<RpcForwarder>(metrics, _forward_filter, _supervisor, _logserver_host,
+ _logserver_rpc_port, 60.0, 100);
} else {
- result = LegacyForwarder::to_dev_null(metrics);
+ result = std::make_unique<EmptyForwarder>(metrics);
}
_need_new_forwarder = false;
return result;
diff --git a/logd/src/logd/config_subscriber.h b/logd/src/logd/config_subscriber.h
index db4630beb77..4d0938dfa3b 100644
--- a/logd/src/logd/config_subscriber.h
+++ b/logd/src/logd/config_subscriber.h
@@ -16,9 +16,7 @@ class Metrics;
class ConfigSubscriber {
private:
std::string _logserver_host;
- int _logserver_port;
int _logserver_rpc_port;
- bool _logserver_use_rpc;
int _state_port;
ForwardMap _forward_filter;
int _rotate_size;
diff --git a/logd/src/logd/conn.cpp b/logd/src/logd/conn.cpp
deleted file mode 100644
index 2ad9093011a..00000000000
--- a/logd/src/logd/conn.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "conn.h"
-#include <vespa/vespalib/net/socket_address.h>
-
-#include <vespa/log/log.h>
-LOG_SETUP("");
-
-namespace logdemon {
-
-static int retryBeforeWarningCount = 20;
-
-int makeconn(const char *logSrvHost, int logPort)
-{
- auto handle = vespalib::SocketAddress::select_remote(logPort, logSrvHost).connect();
- if (!handle) {
- const char *msgfmt = "Cannot connect to logserver on %s:%d: %s";
- if (retryBeforeWarningCount > 0) {
- --retryBeforeWarningCount;
- LOG(debug, msgfmt, logSrvHost, logPort, strerror(errno));
- } else {
- LOG(warning, msgfmt, logSrvHost, logPort, strerror(errno));
- }
- return -1;
- }
- LOG(debug, "Made new connection to port %d. Connected to daemon.", logPort);
- return handle.release();
-}
-
-} // namespace
diff --git a/logd/src/logd/conn.h b/logd/src/logd/conn.h
deleted file mode 100644
index e6e3409796d..00000000000
--- a/logd/src/logd/conn.h
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#pragma once
-// simple utility function
-
-namespace logdemon {
-
-extern int makeconn(const char *logSrvHost, int logSrvPort);
-
-}
diff --git a/logd/src/logd/empty_forwarder.cpp b/logd/src/logd/empty_forwarder.cpp
new file mode 100644
index 00000000000..ca43950f56a
--- /dev/null
+++ b/logd/src/logd/empty_forwarder.cpp
@@ -0,0 +1,51 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "empty_forwarder.h"
+#include "metrics.h"
+#include <vespa/log/exceptions.h>
+#include <vespa/log/log_message.h>
+
+#include <vespa/log/log.h>
+LOG_SETUP(".logd.empty_forwarder");
+
+using LogLevel = ns_log::Logger::LogLevel;
+using ns_log::BadLogLineException;
+using ns_log::LogMessage;
+using ns_log::Logger;
+using LogLevel = Logger::LogLevel;
+
+namespace logdemon {
+
+EmptyForwarder::EmptyForwarder(Metrics& metrics)
+ :
+ _metrics(metrics),
+ _badLines(0)
+{
+}
+
+EmptyForwarder::~EmptyForwarder() = default;
+
+void
+EmptyForwarder::forwardLine(std::string_view line)
+{
+ assert (line.size() < 1024*1024);
+
+ LogMessage message;
+ try {
+ message.parse_log_line(line);
+ } catch (BadLogLineException& e) {
+ LOG(spam, "bad logline: %s", e.what());
+ ++_badLines;
+ return;
+ }
+
+ std::string logLevelName;
+ if (message.level() >= LogLevel::NUM_LOGLEVELS) {
+ logLevelName = "unknown";
+ } else {
+ logLevelName = Logger::logLevelNames[message.level()];
+ }
+ _metrics.countLine(logLevelName, message.service());
+}
+
+}
diff --git a/logd/src/logd/empty_forwarder.h b/logd/src/logd/empty_forwarder.h
new file mode 100644
index 00000000000..4cf17160051
--- /dev/null
+++ b/logd/src/logd/empty_forwarder.h
@@ -0,0 +1,33 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#pragma once
+
+#include "forwarder.h"
+#include <vespa/vespalib/stllike/string.h>
+#include <memory>
+
+namespace logdemon {
+
+struct Metrics;
+
+/**
+ * Class that does not forward log lines, but tracks metrics.
+ *
+ * Used when forwarding to logserver is turned off.
+ */
+class EmptyForwarder : public Forwarder {
+private:
+ Metrics& _metrics;
+ int _badLines;
+
+public:
+ EmptyForwarder(Metrics& metrics);
+ ~EmptyForwarder();
+
+ // Implements Forwarder
+ void forwardLine(std::string_view line) override;
+ void flush() override {}
+ int badLines() const override { return _badLines; }
+ void resetBadLines() override { _badLines = 0; }
+};
+
+}
diff --git a/logd/src/logd/forwarder.h b/logd/src/logd/forwarder.h
index c43a3263bf0..3c3ff32ac39 100644
--- a/logd/src/logd/forwarder.h
+++ b/logd/src/logd/forwarder.h
@@ -19,7 +19,6 @@ class Forwarder {
public:
using UP = std::unique_ptr<Forwarder>;
virtual ~Forwarder() {}
- virtual void sendMode() = 0;
virtual void forwardLine(std::string_view log_line) = 0;
virtual void flush() = 0;
virtual int badLines() const = 0;
diff --git a/logd/src/logd/legacy_forwarder.cpp b/logd/src/logd/legacy_forwarder.cpp
deleted file mode 100644
index 851e4458f77..00000000000
--- a/logd/src/logd/legacy_forwarder.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "conn.h"
-#include "exceptions.h"
-#include "legacy_forwarder.h"
-#include "metrics.h"
-#include <vespa/log/log_message.h>
-#include <vespa/log/exceptions.h>
-#include <vespa/vespalib/component/vtag.h>
-#include <vespa/vespalib/locale/c.h>
-#include <vespa/vespalib/util/stringfmt.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sstream>
-
-#include <vespa/log/log.h>
-LOG_SETUP("");
-
-using LogLevel = ns_log::Logger::LogLevel;
-using ns_log::BadLogLineException;
-using ns_log::LogMessage;
-using ns_log::Logger;
-using LogLevel = Logger::LogLevel;
-using vespalib::make_string;
-
-namespace logdemon {
-
-void
-LegacyForwarder::connect_to_logserver(const vespalib::string& logserver_host, int logserver_port)
-{
- int new_fd = makeconn(logserver_host.c_str(), logserver_port);
- if (new_fd >= 0) {
- LOG(debug, "Connected to logserver at %s:%d", logserver_host.c_str(), logserver_port);
- _logserver_fd = new_fd;
- } else {
- auto error_msg = make_string("Could not connect to %s:%d", logserver_host.c_str(), logserver_port);
- LOG(debug, "%s", error_msg.c_str());
- throw ConnectionException(error_msg);
- }
-}
-
-void
-LegacyForwarder::connect_to_dev_null()
-{
- int new_fd = open("/dev/null", O_RDWR);
- if (new_fd >= 0) {
- LOG(debug, "Opened /dev/null for read/write");
- _logserver_fd = new_fd;
- } else {
- auto error_msg = make_string("Error opening /dev/null (%d): %s", new_fd, strerror(new_fd));
- LOG(debug, "%s", error_msg.c_str());
- throw ConnectionException(error_msg);
- }
-}
-
-LegacyForwarder::LegacyForwarder(Metrics &metrics, const ForwardMap& forward_filter)
- :
- _metrics(metrics),
- _logserver_fd(-1),
- _forward_filter(forward_filter),
- _badLines(0)
-{
-}
-
-LegacyForwarder::UP
-LegacyForwarder::to_logserver(Metrics& metrics, const ForwardMap& forward_filter,
- const vespalib::string& logserver_host, int logserver_port)
-{
- LegacyForwarder::UP result(new LegacyForwarder(metrics, forward_filter));
- result->connect_to_logserver(logserver_host, logserver_port);
- return result;
-}
-
-LegacyForwarder::UP
-LegacyForwarder::to_dev_null(Metrics& metrics)
-{
- LegacyForwarder::UP result(new LegacyForwarder(metrics, ForwardMap()));
- result->connect_to_dev_null();
- return result;
-}
-
-LegacyForwarder::UP
-LegacyForwarder::to_open_file(Metrics& metrics, const ForwardMap& forward_filter, int file_desc)
-{
- LegacyForwarder::UP result(new LegacyForwarder(metrics, forward_filter));
- result->_logserver_fd = file_desc;
- return result;
-}
-
-LegacyForwarder::~LegacyForwarder()
-{
- if (_logserver_fd >= 0) {
- close(_logserver_fd);
- }
-}
-
-void
-LegacyForwarder::forwardText(const char *text, int len)
-{
- int wsize = write(_logserver_fd, text, len);
-
- if (wsize != len) {
- if (wsize > 0) {
- LOG(warning, "only wrote %d of %d bytes to logserver", wsize, len);
- } else {
- LOG(warning, "problem sending data to logserver: %s", strerror(errno));
- }
-
- throw ConnectionException("problem sending data");
- }
-}
-
-void
-LegacyForwarder::sendMode()
-{
- char buf[1024];
- snprintf(buf, 1024, "mode logd %s\n", vespalib::VersionTag);
- int len = strlen(buf);
- if (len < 100) {
- forwardText(buf, len);
- } else {
- LOG(warning, "too long mode line: %s", buf);
- }
-}
-
-void
-LegacyForwarder::forwardLine(std::string_view line)
-{
- assert(_logserver_fd >= 0);
- assert (line.size() < 1024*1024);
-
- if (parseLine(line)) {
- std::ostringstream line_copy;
- line_copy << line << std::endl;
- forwardText(line_copy.str().data(), line_copy.str().size());
- }
-}
-
-bool
-LegacyForwarder::parseLine(std::string_view line)
-{
- LogMessage message;
- try {
- message.parse_log_line(line);
- } catch (BadLogLineException &e) {
- LOG(spam, "bad logline: %s", e.what());
- ++_badLines;
- return false;
- }
-
- std::string logLevelName;
- if (message.level() >= LogLevel::NUM_LOGLEVELS) {
- logLevelName = "unknown";
- } else {
- logLevelName = Logger::logLevelNames[message.level()];
- }
- _metrics.countLine(logLevelName, message.service());
-
- // Check overrides
- auto found = _forward_filter.find(message.level());
- if (found != _forward_filter.end()) {
- return found->second;
- }
- return false; // Unknown log level
-}
-
-
-} // namespace
diff --git a/logd/src/logd/legacy_forwarder.h b/logd/src/logd/legacy_forwarder.h
deleted file mode 100644
index 52c946754f8..00000000000
--- a/logd/src/logd/legacy_forwarder.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#pragma once
-
-#include "forwarder.h"
-#include <vespa/vespalib/stllike/string.h>
-#include <memory>
-
-namespace logdemon {
-
-struct Metrics;
-
-/**
- * Class used to forward log lines to the logserver via a one-way text protocol.
- */
-class LegacyForwarder : public Forwarder {
-private:
- Metrics &_metrics;
- int _logserver_fd;
- ForwardMap _forward_filter;
- int _badLines;
- const char *copystr(const char *b, const char *e) {
- int len = e - b;
- char *ret = new char[len+1];
- strncpy(ret, b, len);
- ret[len] = '\0';
- return ret;
- }
- void connect_to_logserver(const vespalib::string& logserver_host, int logserver_port);
- void connect_to_dev_null();
- bool parseLine(std::string_view line);
- void forwardText(const char *text, int len);
- LegacyForwarder(Metrics &metrics, const ForwardMap& forward_filter);
-
-public:
- using UP = std::unique_ptr<LegacyForwarder>;
- static LegacyForwarder::UP to_logserver(Metrics& metrics, const ForwardMap& forward_filter,
- const vespalib::string& logserver_host, int logserver_port);
- static LegacyForwarder::UP to_dev_null(Metrics& metrics);
- static LegacyForwarder::UP to_open_file(Metrics& metrics, const ForwardMap& forward_filter, int file_desc);
- ~LegacyForwarder();
-
- // Implements Forwarder
- void forwardLine(std::string_view line) override;
- void flush() override {}
- void sendMode() override;
- int badLines() const override { return _badLines; }
- void resetBadLines() override { _badLines = 0; }
-};
-
-}
diff --git a/logd/src/logd/rpc_forwarder.h b/logd/src/logd/rpc_forwarder.h
index 7ab1506d881..404041156bf 100644
--- a/logd/src/logd/rpc_forwarder.h
+++ b/logd/src/logd/rpc_forwarder.h
@@ -35,7 +35,6 @@ public:
~RpcForwarder() override;
// Implements Forwarder
- void sendMode() override {}
void forwardLine(std::string_view line) override;
void flush() override;
int badLines() const override;
diff --git a/logd/src/logd/watcher.cpp b/logd/src/logd/watcher.cpp
index fca9cd648bb..103432e0136 100644
--- a/logd/src/logd/watcher.cpp
+++ b/logd/src/logd/watcher.cpp
@@ -161,8 +161,6 @@ Watcher::watchfile()
already.valid = true;
}
- _forwarder.sendMode();
-
vespalib::SigCatch catcher;
int sleepcount = 0;
time_t created = 0;
diff --git a/logd/src/main/resources/configdefinitions/logd.def b/logd/src/main/resources/configdefinitions/logd.def
index a439560efff..bb5f487c47e 100644
--- a/logd/src/main/resources/configdefinitions/logd.def
+++ b/logd/src/main/resources/configdefinitions/logd.def
@@ -11,10 +11,12 @@ logserver.host string default="localhost"
logserver.rpcport int default=5822
## Legacy port to contact the logserver on.
+## Deprecated (not used). TODO: Remove on Vespa 8.
logserver.port int default=5821
## Use RPC protocol
-logserver.userpc bool default=false
+## Deprecated (always true). TODO: Remove on Vespa 8.
+logserver.userpc bool default=true
## Forward to a logserver. Other logserver configuration is irrelevant if false.
logserver.use bool default=true
diff --git a/logd/src/tests/empty_forwarder/.gitignore b/logd/src/tests/empty_forwarder/.gitignore
new file mode 100644
index 00000000000..266a9726498
--- /dev/null
+++ b/logd/src/tests/empty_forwarder/.gitignore
@@ -0,0 +1,3 @@
+.depend
+Makefile
+logd_empty_forwarder_test_app
diff --git a/logd/src/tests/empty_forwarder/CMakeLists.txt b/logd/src/tests/empty_forwarder/CMakeLists.txt
new file mode 100644
index 00000000000..4c4ab8efa40
--- /dev/null
+++ b/logd/src/tests/empty_forwarder/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(logd_empty_forwarder_test_app TEST
+ SOURCES
+ empty_forwarder_test.cpp
+ DEPENDS
+ logd
+ gtest
+)
+vespa_add_test(NAME logd_empty_forwarder_test_app COMMAND logd_empty_forwarder_test_app)
diff --git a/logd/src/tests/empty_forwarder/empty_forwarder_test.cpp b/logd/src/tests/empty_forwarder/empty_forwarder_test.cpp
new file mode 100644
index 00000000000..d1194f30c40
--- /dev/null
+++ b/logd/src/tests/empty_forwarder/empty_forwarder_test.cpp
@@ -0,0 +1,59 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <logd/empty_forwarder.h>
+#include <logd/metrics.h>
+#include <vespa/log/log.h>
+#include <vespa/vespalib/metrics/dummy_metrics_manager.h>
+#include <vespa/vespalib/gtest/gtest.h>
+
+using namespace logdemon;
+using vespalib::metrics::DummyMetricsManager;
+
+struct MockMetricsManager : public DummyMetricsManager {
+ int add_count;
+ MockMetricsManager() : DummyMetricsManager(), add_count(0) {}
+ void add(Counter::Increment) override {
+ ++add_count;
+ }
+};
+
+std::string
+make_log_line(const std::string& level, const std::string& payload)
+{
+ return "1234.5678\tmy_host\t10/20\tmy_service\tmy_component\t" + level + "\t" + payload;
+}
+
+struct EmptyForwarderTest : public ::testing::Test {
+ std::shared_ptr<MockMetricsManager> metrics_mgr;
+ Metrics metrics;
+ EmptyForwarder forwarder;
+
+ EmptyForwarderTest()
+ : metrics_mgr(std::make_shared<MockMetricsManager>()),
+ metrics(metrics_mgr),
+ forwarder(metrics) {
+ }
+
+ void forward_line(const std::string &payload) {
+ forwarder.forwardLine(make_log_line("info", payload));
+ }
+ void forward_bad_line() {
+ forwarder.forwardLine("badline");
+ }
+};
+
+TEST_F(EmptyForwarderTest, bad_log_lines_are_counted)
+{
+ forward_bad_line();
+ EXPECT_EQ(1, forwarder.badLines());
+}
+
+TEST_F(EmptyForwarderTest, metrics_are_updated_for_each_log_message)
+{
+ forward_line("a");
+ EXPECT_EQ(1, metrics_mgr->add_count);
+ forward_line("b");
+ EXPECT_EQ(2, metrics_mgr->add_count);
+}
+
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/logd/src/tests/legacy_forwarder/.gitignore b/logd/src/tests/legacy_forwarder/.gitignore
deleted file mode 100644
index a6c6ba525b6..00000000000
--- a/logd/src/tests/legacy_forwarder/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/.depend
-/Makefile
-/forward.txt
-/forward_test
-logd_forward_test_app
diff --git a/logd/src/tests/legacy_forwarder/CMakeLists.txt b/logd/src/tests/legacy_forwarder/CMakeLists.txt
deleted file mode 100644
index 3dba5c76f52..00000000000
--- a/logd/src/tests/legacy_forwarder/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-vespa_add_executable(logd_legacy_forwarder_test_app TEST
- SOURCES
- legacy_forwarder_test.cpp
- DEPENDS
- logd
-)
-vespa_add_test(NAME logd_legacy_forwarder_test_app COMMAND logd_legacy_forwarder_test_app)
diff --git a/logd/src/tests/legacy_forwarder/legacy_forwarder_test.cpp b/logd/src/tests/legacy_forwarder/legacy_forwarder_test.cpp
deleted file mode 100644
index 67d47a49384..00000000000
--- a/logd/src/tests/legacy_forwarder/legacy_forwarder_test.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <logd/legacy_forwarder.h>
-#include <logd/metrics.h>
-#include <vespa/fastos/time.h>
-#include <vespa/log/log.h>
-#include <vespa/vespalib/metrics/dummy_metrics_manager.h>
-#include <vespa/vespalib/testkit/testapp.h>
-#include <fcntl.h>
-#include <sstream>
-#include <unistd.h>
-
-using ns_log::Logger;
-using namespace logdemon;
-
-std::shared_ptr<vespalib::metrics::MetricsManager> dummy = vespalib::metrics::DummyMetricsManager::create();
-Metrics m(dummy);
-
-struct ForwardFixture {
- LegacyForwarder::UP forwarder;
- int fd;
- const std::string fname;
- const std::string logLine;
- ForwardFixture(const std::string& fileName)
- : forwarder(),
- fd(-1),
- fname(fileName),
- logLine(createLogLine())
- {
- fd = open(fileName.c_str(), O_CREAT | O_TRUNC | O_WRONLY, 0777);
- }
- ~ForwardFixture() {
- }
-
- void make_forwarder(const ForwardMap& forwarder_filter) {
- forwarder = LegacyForwarder::to_open_file(m, forwarder_filter, fd);
- }
-
- const std::string createLogLine() {
- FastOS_Time timer;
- timer.SetNow();
- std::stringstream ss;
- ss << std::fixed << timer.Secs();
- ss << "\texample.yahoo.com\t7518/34779\tlogd\tlogdemon\tevent\tstarted/1 name=\"logdemon\"";
- return ss.str();
- }
-
- void verifyForward(bool doForward) {
- forwarder->forwardLine(logLine);
- fsync(fd);
- int rfd = open(fname.c_str(), O_RDONLY);
- char *buffer[2048];
- ssize_t bytes = read(rfd, buffer, 2048);
- ssize_t expected = doForward ? logLine.length() + 1 : 0;
- EXPECT_EQUAL(expected, bytes);
- close(rfd);
- }
-};
-
-
-TEST_F("require that forwarder forwards if set", ForwardFixture("forward.txt")) {
- ForwardMap forward_filter;
- forward_filter[Logger::event] = true;
- f1.make_forwarder(forward_filter);
- f1.verifyForward(true);
-}
-
-TEST_F("require that forwarder does not forward if not set", ForwardFixture("forward.txt")) {
- ForwardMap forward_filter;
- forward_filter[Logger::event] = false;
- f1.make_forwarder(forward_filter);
- f1.verifyForward(false);
-}
-
-TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/logd/src/tests/watcher/watcher_test.cpp b/logd/src/tests/watcher/watcher_test.cpp
index fffaac17058..9f7c476e101 100644
--- a/logd/src/tests/watcher/watcher_test.cpp
+++ b/logd/src/tests/watcher/watcher_test.cpp
@@ -57,18 +57,15 @@ ConfigFixture::~ConfigFixture() = default;
struct DummyForwarder : public Forwarder {
std::mutex lock;
std::condition_variable cond;
- std::atomic<int> sendModeCount;
std::vector<std::string> lines;
DummyForwarder()
: Forwarder(),
lock(),
cond(),
- sendModeCount(0),
lines()
{
}
~DummyForwarder() override = default;
- void sendMode() override { ++sendModeCount; }
void forwardLine(std::string_view log_line) override {
std::lock_guard guard(lock);
lines.emplace_back(log_line);