summaryrefslogtreecommitdiffstats
path: root/logd/src/tests/legacy_forwarder
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-03-21 14:08:39 +0000
committerGeir Storli <geirst@verizonmedia.com>2019-03-21 14:08:39 +0000
commit22af1049211b69490223aeec835d2aa6f052d564 (patch)
treecac10ead0db7b5a447e4f79a26b215c57f3328f7 /logd/src/tests/legacy_forwarder
parent40f7f32cda15d3d144975546169c1bcf0e4f78ae (diff)
Rename Forwarder -> LegacyForwarder in preparation for something new and better.
Diffstat (limited to 'logd/src/tests/legacy_forwarder')
-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.cpp72
3 files changed, 85 insertions, 0 deletions
diff --git a/logd/src/tests/legacy_forwarder/.gitignore b/logd/src/tests/legacy_forwarder/.gitignore
new file mode 100644
index 00000000000..a6c6ba525b6
--- /dev/null
+++ b/logd/src/tests/legacy_forwarder/.gitignore
@@ -0,0 +1,5 @@
+/.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
new file mode 100644
index 00000000000..3dba5c76f52
--- /dev/null
+++ b/logd/src/tests/legacy_forwarder/CMakeLists.txt
@@ -0,0 +1,8 @@
+# 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
new file mode 100644
index 00000000000..3af35f9aa09
--- /dev/null
+++ b/logd/src/tests/legacy_forwarder/legacy_forwarder_test.cpp
@@ -0,0 +1,72 @@
+// 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;
+
+struct ForwardFixture {
+ LegacyForwarder &forwarder;
+ int fd;
+ const std::string fname;
+ const std::string logLine;
+ ForwardFixture(LegacyForwarder &fw, const std::string &fileName)
+ : forwarder(fw),
+ fd(-1),
+ fname(fileName),
+ logLine(createLogLine())
+ {
+ fd = open(fileName.c_str(), O_CREAT | O_TRUNC | O_WRONLY, 0777);
+ forwarder.setLogserverFD(fd);
+ }
+ ~ForwardFixture() {
+ close(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\"\n";
+ return ss.str();
+ }
+
+ void verifyForward(bool doForward) {
+ const std::string & line(logLine);
+ forwarder.forwardLine(line.c_str(), line.c_str() + line.length());
+ fsync(fd);
+ int rfd = open(fname.c_str(), O_RDONLY);
+ char *buffer[2048];
+ ssize_t bytes = read(rfd, buffer, 2048);
+ ssize_t expected = doForward ? line.length() : 0;
+ EXPECT_EQUAL(expected, bytes);
+ close(rfd);
+ }
+};
+
+std::shared_ptr<vespalib::metrics::MetricsManager> dummy = vespalib::metrics::DummyMetricsManager::create();
+Metrics m(dummy);
+
+TEST_FF("require that forwarder forwards if set", LegacyForwarder(m), ForwardFixture(f1, "forward.txt")) {
+ ForwardMap forwardMap;
+ forwardMap[Logger::event] = true;
+ f1.setForwardMap(forwardMap);
+ f2.verifyForward(true);
+}
+
+TEST_FF("require that forwarder does not forward if not set", LegacyForwarder(m), ForwardFixture(f1, "forward.txt")) {
+ ForwardMap forwardMap;
+ forwardMap[Logger::event] = false;
+ f1.setForwardMap(forwardMap);
+ f2.verifyForward(false);
+}
+
+TEST_MAIN() { TEST_RUN_ALL(); }