diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-06-30 08:30:22 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-06-30 08:30:22 +0000 |
commit | 65c0a35a100c29491a92be209c37a6bb43e4a695 (patch) | |
tree | 374ee6460ccf38fe37d1cd1d80ce55ed3c4ee2e1 /config | |
parent | f3832fc495cbdb9059573f12b7a0c515b284c9fd (diff) |
Add test for ConfigSystem.isUp
Diffstat (limited to 'config')
-rw-r--r-- | config/src/tests/misc/.gitignore | 1 | ||||
-rw-r--r-- | config/src/tests/misc/CMakeLists.txt | 7 | ||||
-rw-r--r-- | config/src/tests/misc/configsystem.cpp | 54 | ||||
-rw-r--r-- | config/src/vespa/config/common/CMakeLists.txt | 2 | ||||
-rw-r--r-- | config/src/vespa/config/common/configsystem.cpp | 13 | ||||
-rw-r--r-- | config/src/vespa/config/common/configsystem.h | 4 |
6 files changed, 77 insertions, 4 deletions
diff --git a/config/src/tests/misc/.gitignore b/config/src/tests/misc/.gitignore index d6c1f6760a4..91168ae6c44 100644 --- a/config/src/tests/misc/.gitignore +++ b/config/src/tests/misc/.gitignore @@ -1 +1,2 @@ config_misc_test_app +config_configsystem_test_app diff --git a/config/src/tests/misc/CMakeLists.txt b/config/src/tests/misc/CMakeLists.txt index 928fd41cd36..2c20a2e9b41 100644 --- a/config/src/tests/misc/CMakeLists.txt +++ b/config/src/tests/misc/CMakeLists.txt @@ -5,4 +5,11 @@ vespa_add_executable(config_misc_test_app TEST DEPENDS config_cloudconfig ) +vespa_add_executable(config_configsystem_test_app TEST + SOURCES + configsystem.cpp + DEPENDS + config_cloudconfig +) vespa_add_test(NAME config_misc_test_app COMMAND config_misc_test_app) +vespa_add_test(NAME config_configsystem_test_app COMMAND config_configsystem_test_app) diff --git a/config/src/tests/misc/configsystem.cpp b/config/src/tests/misc/configsystem.cpp new file mode 100644 index 00000000000..cef5a917732 --- /dev/null +++ b/config/src/tests/misc/configsystem.cpp @@ -0,0 +1,54 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/fastos/fastos.h> +#include <vespa/vespalib/testkit/test_kit.h> +#include <vespa/config/common/configsystem.h> +#include <vespa/defaults.h> + +using namespace config; + +namespace { + +const char *VESPA_HOME="VESPA_HOME"; +char cwd[1024]; + +} + +TEST("require that bad home directory fails") { + ASSERT_TRUE(nullptr != getcwd(cwd, sizeof(cwd))); + ASSERT_EQUAL(0, setenv(VESPA_HOME, "/nowhere/near/", 1)); + vespa::Defaults::bootstrap("/nowhere/near/"); + ConfigSystem configSystem; + ASSERT_FALSE(configSystem.isUp()); +} + +TEST("require that incorrect pid file type fails") { + ASSERT_TRUE(nullptr != getcwd(cwd, sizeof(cwd))); + FastOS_File::EmptyAndRemoveDirectory("var"); + FastOS_File::MakeDirIfNotPresentOrExit("var"); + FastOS_File::MakeDirIfNotPresentOrExit("var/run"); + FastOS_File::MakeDirIfNotPresentOrExit("var/run/configproxy.pid"); + + ASSERT_EQUAL(0, setenv(VESPA_HOME, cwd, 1)); + vespa::Defaults::bootstrap(cwd); + ConfigSystem configSystem; + ASSERT_FALSE(configSystem.isUp()); + FastOS_File::EmptyAndRemoveDirectory("var"); +} + +TEST("require that correct pid file succeeds") { + ASSERT_TRUE(nullptr != getcwd(cwd, sizeof(cwd))); + FastOS_File::EmptyAndRemoveDirectory("var"); + FastOS_File::MakeDirIfNotPresentOrExit("var"); + FastOS_File::MakeDirIfNotPresentOrExit("var/run"); + FastOS_File pid_file("var/run/configproxy.pid"); + pid_file.OpenWriteOnlyTruncate(); + pid_file.Close(); + + ASSERT_EQUAL(0, setenv(VESPA_HOME, cwd, 1)); + vespa::Defaults::bootstrap(cwd); + ConfigSystem configSystem; + ASSERT_TRUE(configSystem.isUp()); + FastOS_File::EmptyAndRemoveDirectory("var"); +} + +TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/config/src/vespa/config/common/CMakeLists.txt b/config/src/vespa/config/common/CMakeLists.txt index ee654cc8eb6..378e666770d 100644 --- a/config/src/vespa/config/common/CMakeLists.txt +++ b/config/src/vespa/config/common/CMakeLists.txt @@ -10,7 +10,7 @@ vespa_add_library(config_common OBJECT configholder.cpp configcontext.cpp configkey.cpp - configsytem.cpp + configsystem.cpp configvalue.cpp trace.cpp payload_converter.cpp diff --git a/config/src/vespa/config/common/configsystem.cpp b/config/src/vespa/config/common/configsystem.cpp index 548c0c39bce..373dfa83b4b 100644 --- a/config/src/vespa/config/common/configsystem.cpp +++ b/config/src/vespa/config/common/configsystem.cpp @@ -2,15 +2,22 @@ #include <vespa/fastos/fastos.h> #include "configsystem.h" -#include <vespalib/stllike/string.h> #include <vespa/defaults.h> namespace config { namespace { -vespalib::string CONFIG_PROXY_PID_FILE= vespa::Defaults::vespaHome() + vespalib::string("var/run/configproxy.pid"); +vespalib::string getConfigProxyFileName() { + vespalib::string root(vespa::Defaults::vespaHome()); + return root + "var/run/configproxy.pid"; +} + +} +ConfigSystem::ConfigSystem() : + _configProxyPidFile(getConfigProxyFileName()) +{ } bool ConfigSystem::isUp() const { @@ -20,7 +27,7 @@ bool ConfigSystem::isUp() const { bool ConfigSystem::isConfigProxyRunning() const { struct stat fs; - int retval = stat(CONFIG_PROXY_PID_FILE, &fs); + int retval = stat(_configProxyPidFile.c_str(), &fs); if (retval == 0) { if (S_ISREG(fs.st_mode)) { return true; diff --git a/config/src/vespa/config/common/configsystem.h b/config/src/vespa/config/common/configsystem.h index 1f04f5eaee8..55ed98796fe 100644 --- a/config/src/vespa/config/common/configsystem.h +++ b/config/src/vespa/config/common/configsystem.h @@ -1,13 +1,17 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once +#include <vespa/vespalib/stllike/string.h> + namespace config { class ConfigSystem { public: + ConfigSystem(); bool isUp() const; private: bool isConfigProxyRunning() const; + vespalib::string _configProxyPidFile; }; } |