diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
commit | 72231250ed81e10d66bfe70701e64fa5fe50f712 (patch) | |
tree | 2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /searchcore/src/tests/proton/server/feeddebugger_test.cpp |
Publish
Diffstat (limited to 'searchcore/src/tests/proton/server/feeddebugger_test.cpp')
-rw-r--r-- | searchcore/src/tests/proton/server/feeddebugger_test.cpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/searchcore/src/tests/proton/server/feeddebugger_test.cpp b/searchcore/src/tests/proton/server/feeddebugger_test.cpp new file mode 100644 index 00000000000..dfb1e7aa5ef --- /dev/null +++ b/searchcore/src/tests/proton/server/feeddebugger_test.cpp @@ -0,0 +1,85 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Unit tests for feeddebugger. + +#include <vespa/log/log.h> +LOG_SETUP("feeddebugger_test"); +#include <vespa/fastos/fastos.h> + +#include <vespa/document/base/documentid.h> +#include <vespa/searchcore/proton/common/feeddebugger.h> +#include <vespa/vespalib/testkit/testapp.h> + +using document::DocumentId; +using std::string; +using namespace proton; + +namespace { + +const char lid_env_name[] = "VESPA_PROTON_DEBUG_FEED_LID_LIST"; +const char docid_env_name[] = "VESPA_PROTON_DEBUG_FEED_DOCID_LIST"; + +class EnvSaver { + const char *_name; + string _value; + bool _is_set; + +public: + EnvSaver(const char *name) : _name(name) { + char *val = getenv(_name); + _is_set = val; + if (val) { + _value = val; + } + } + ~EnvSaver() { + if (_is_set) { + setenv(_name, _value.c_str(), true); + } else { + unsetenv(_name); + } + } +}; + +TEST("require that when environment variable is not set, debugging is off") { + EnvSaver save_lid_env(lid_env_name); + EnvSaver save_docid_env(docid_env_name); + FeedDebugger debugger; + EXPECT_FALSE(debugger.isDebugging()); +} + +TEST("require that setting an environment variable turns on lid-specific" + " debugging.") { + EnvSaver save_lid_env(lid_env_name); + EnvSaver save_docid_env(docid_env_name); + setenv(lid_env_name, "1,3,5", true); + + FeedDebugger debugger; + EXPECT_TRUE(debugger.isDebugging()); + EXPECT_EQUAL(ns_log::Logger::info, debugger.getDebugLevel(1, 0)); + EXPECT_EQUAL(ns_log::Logger::spam, debugger.getDebugLevel(2, 0)); + EXPECT_EQUAL(ns_log::Logger::info, debugger.getDebugLevel(3, 0)); + EXPECT_EQUAL(ns_log::Logger::spam, debugger.getDebugLevel(4, 0)); + EXPECT_EQUAL(ns_log::Logger::info, debugger.getDebugLevel(5, 0)); +} + +TEST("require that setting an environment variable turns on docid-specific" + " debugging.") { + EnvSaver save_lid_env(lid_env_name); + EnvSaver save_docid_env(docid_env_name); + setenv(docid_env_name, "doc:test:foo,doc:test:bar,doc:test:baz", true); + + FeedDebugger debugger; + EXPECT_TRUE(debugger.isDebugging()); + EXPECT_EQUAL(ns_log::Logger::info, + debugger.getDebugLevel(1, DocumentId("doc:test:foo"))); + EXPECT_EQUAL(ns_log::Logger::info, + debugger.getDebugLevel(1, DocumentId("doc:test:bar"))); + EXPECT_EQUAL(ns_log::Logger::info, + debugger.getDebugLevel(1, DocumentId("doc:test:baz"))); + EXPECT_EQUAL(ns_log::Logger::spam, + debugger.getDebugLevel(1, DocumentId("doc:test:qux"))); +} + +} // namespace + +TEST_MAIN() { TEST_RUN_ALL(); } |