summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-06-30 08:30:22 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2016-06-30 08:30:22 +0000
commit65c0a35a100c29491a92be209c37a6bb43e4a695 (patch)
tree374ee6460ccf38fe37d1cd1d80ce55ed3c4ee2e1 /config
parentf3832fc495cbdb9059573f12b7a0c515b284c9fd (diff)
Add test for ConfigSystem.isUp
Diffstat (limited to 'config')
-rw-r--r--config/src/tests/misc/.gitignore1
-rw-r--r--config/src/tests/misc/CMakeLists.txt7
-rw-r--r--config/src/tests/misc/configsystem.cpp54
-rw-r--r--config/src/vespa/config/common/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/common/configsystem.cpp13
-rw-r--r--config/src/vespa/config/common/configsystem.h4
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;
};
}