From 2c8be90232b2787d8a6b294655acd6e0f50ad743 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Sun, 28 Aug 2016 08:18:40 +0200 Subject: [PATCH] Fix livestatus unit tests on OS X fixes #8806 --- test/CMakeLists.txt | 2 +- test/livestatus-test.cpp | 89 +++++++++++++--------------------------- 2 files changed, 30 insertions(+), 61 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index df9bf3235..7ad25426d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -120,7 +120,7 @@ if(ICINGA2_WITH_LIVESTATUS) add_boost_test(livestatus SOURCES livestatus-test.cpp ${livestatus_test_SOURCES} - LIBRARIES base config icinga cli livestatus + LIBRARIES base config icinga methods livestatus DEPENDENCIES methods TESTS livestatus/hosts livestatus/services ) diff --git a/test/livestatus-test.cpp b/test/livestatus-test.cpp index 66ee617bd..61d88eeb0 100644 --- a/test/livestatus-test.cpp +++ b/test/livestatus-test.cpp @@ -20,7 +20,6 @@ #define BOOST_TEST_MAIN #define BOOST_TEST_MODULE icinga2_test -#include "cli/daemonutility.hpp" #include "config/configcompiler.hpp" #include "config/configitem.hpp" #include "base/application.hpp" @@ -33,81 +32,51 @@ using namespace icinga; struct LivestatusFixture { LivestatusFixture(void) - : TestConfig("test-config.conf") { BOOST_TEST_MESSAGE("setup global config fixture"); Application::InitializeBase(); - String cfg_file_path = TestConfig; - String cfg_file_path_tmp = TestConfig + ".tmp"; - - std::ofstream cfgfp; - cfgfp.open(cfg_file_path_tmp.CStr(), std::ofstream::out | std::ofstream::trunc); - cfgfp << std::fixed; - cfgfp << "object CheckCommand \"dummy\" {\n"; - cfgfp << " import \"plugin-check-command\"\n"; - cfgfp << " command = \"/bin/echo\"\n"; - cfgfp << "}\n"; - cfgfp << "object Host \"test-01\" {\n"; - cfgfp << " address = \"127.0.0.1\"\n"; - cfgfp << " check_command = \"dummy\"\n"; - cfgfp << "}\n"; - cfgfp << "object Host \"test-02\" {\n"; - cfgfp << " address = \"127.0.0.2\"\n"; - cfgfp << " check_command = \"dummy\"\n"; - cfgfp << "}\n"; - cfgfp << "apply Service \"livestatus\"{\n"; - cfgfp << " check_command = \"dummy\"\n"; - cfgfp << " notes = \"test livestatus\"\n"; - cfgfp << " assign where match(\"test-*\", host.name)\n"; - cfgfp << "}\n"; - - cfgfp.close(); -#ifdef _WIN32 - _unlink(cfg_file_path.CStr()); -#endif /* _WIN32 */ - - if (rename(cfg_file_path_tmp.CStr(), cfg_file_path.CStr()) < 0) { - BOOST_THROW_EXCEPTION(posix_error() - << boost::errinfo_api_function("rename") - << boost::errinfo_errno(errno) - << boost::errinfo_file_name(cfg_file_path_tmp)); - } - BOOST_TEST_MESSAGE( "Preparing config objects..."); - /* start the Icinga application and load the configuration */ - Application::DeclareSysconfDir("etc"); - Application::DeclareLocalStateDir("var"); - - ActivationScope ascope; - - Loader::LoadExtensionLibrary("icinga"); - Loader::LoadExtensionLibrary("methods"); //loaded by ITL - - std::vector configs; - configs.push_back(TestConfig); - - std::vector newItems; - - DaemonUtility::LoadConfigFiles(configs, newItems, "icinga2.debug", "icinga2.vars"); - - /* ignore config errors */ - WorkQueue upq; - ConfigItem::ActivateItems(upq, newItems); + ConfigItem::RunWithActivationContext(new Function("CreateTestObjects", WrapFunction(CreateTestObjects))); } ~LivestatusFixture(void) { BOOST_TEST_MESSAGE("cleanup global config fixture"); - unlink(TestConfig.CStr()); - Application::UninitializeBase(); } - String TestConfig; + static void CreateTestObjects(void) + { + String config = R"CONFIG( +object CheckCommand "dummy" { + import "plugin-check-command" + command = "/bin/echo" +} + +object Host "test-01" { + address = "127.0.0.1" + check_command = "dummy" +} + +object Host "test-02" { + address = "127.0.0.2" + check_command = "dummy" +} + +apply Service "livestatus"{ + check_command = "dummy" + notes = "test livestatus" + assign where match("test-*", host.name) +} +)CONFIG"; + + Expression *expr = ConfigCompiler::CompileText("", config); + expr->Evaluate(*ScriptFrame::GetCurrentFrame()); + } }; BOOST_GLOBAL_FIXTURE(LivestatusFixture); -- 2.40.0