From 46885b2f72030a887c2787858929c8ed088fdaaf Mon Sep 17 00:00:00 2001 From: Geir Storli Date: Thu, 9 May 2019 11:54:17 +0000 Subject: Remove the legacy protocol between logd and logserver. The RPC protocol has been the new default since 2019-04-12. --- logd/src/apps/logd/main.cpp | 2 +- logd/src/logd/CMakeLists.txt | 3 +- logd/src/logd/config_subscriber.cpp | 23 +-- logd/src/logd/config_subscriber.h | 2 - logd/src/logd/conn.cpp | 30 ---- logd/src/logd/conn.h | 9 -- logd/src/logd/empty_forwarder.cpp | 51 +++++++ logd/src/logd/empty_forwarder.h | 33 ++++ logd/src/logd/forwarder.h | 1 - logd/src/logd/legacy_forwarder.cpp | 168 --------------------- logd/src/logd/legacy_forwarder.h | 50 ------ logd/src/logd/rpc_forwarder.h | 1 - logd/src/logd/watcher.cpp | 2 - logd/src/main/resources/configdefinitions/logd.def | 4 +- logd/src/tests/empty_forwarder/.gitignore | 3 + logd/src/tests/empty_forwarder/CMakeLists.txt | 9 ++ .../tests/empty_forwarder/empty_forwarder_test.cpp | 59 ++++++++ logd/src/tests/legacy_forwarder/.gitignore | 5 - logd/src/tests/legacy_forwarder/CMakeLists.txt | 8 - .../legacy_forwarder/legacy_forwarder_test.cpp | 74 --------- logd/src/tests/watcher/watcher_test.cpp | 3 - 21 files changed, 164 insertions(+), 376 deletions(-) delete mode 100644 logd/src/logd/conn.cpp delete mode 100644 logd/src/logd/conn.h create mode 100644 logd/src/logd/empty_forwarder.cpp create mode 100644 logd/src/logd/empty_forwarder.h delete mode 100644 logd/src/logd/legacy_forwarder.cpp delete mode 100644 logd/src/logd/legacy_forwarder.h create mode 100644 logd/src/tests/empty_forwarder/.gitignore create mode 100644 logd/src/tests/empty_forwarder/CMakeLists.txt create mode 100644 logd/src/tests/empty_forwarder/empty_forwarder_test.cpp delete mode 100644 logd/src/tests/legacy_forwarder/.gitignore delete mode 100644 logd/src/tests/legacy_forwarder/CMakeLists.txt delete mode 100644 logd/src/tests/legacy_forwarder/legacy_forwarder_test.cpp (limited to 'logd/src') 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 +#include #include -#include #include #include #include diff --git a/logd/src/logd/CMakeLists.txt b/logd/src/logd/CMakeLists.txt index 629c7b1637a..4d5cb8b75a6 100644 --- a/logd/src/logd/CMakeLists.txt +++ b/logd/src/logd/CMakeLists.txt @@ -12,8 +12,7 @@ set_source_files_properties(${logd_PROTOBUF_SRCS} PROPERTIES COMPILE_FLAGS "-Wno 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 #include @@ -43,18 +42,10 @@ ConfigSubscriber::configure(std::unique_ptr 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 result; if (_use_logserver) { - if (_logserver_use_rpc) { - result = std::make_unique(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(metrics, _forward_filter, _supervisor, _logserver_host, + _logserver_rpc_port, 60.0, 100); } else { - result = LegacyForwarder::to_dev_null(metrics); + result = std::make_unique(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 - -#include -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 +#include + +#include +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 +#include + +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; 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 -#include -#include -#include -#include -#include -#include -#include - -#include -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 -#include - -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; - 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 +#include +#include +#include +#include + +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 metrics_mgr; + Metrics metrics; + EmptyForwarder forwarder; + + EmptyForwarderTest() + : metrics_mgr(std::make_shared()), + 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 -#include -#include -#include -#include -#include -#include -#include -#include - -using ns_log::Logger; -using namespace logdemon; - -std::shared_ptr 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 sendModeCount; std::vector 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); -- cgit v1.2.3