]> granicus.if.org Git - icinga2/commitdiff
Fix livestatus unit tests on OS X
authorGunnar Beutner <gunnar.beutner@netways.de>
Sun, 28 Aug 2016 06:18:40 +0000 (08:18 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Sun, 28 Aug 2016 06:18:40 +0000 (08:18 +0200)
fixes #8806

test/CMakeLists.txt
test/livestatus-test.cpp

index df9bf3235af11ea782d8b73aad3e2b8cd6e84503..7ad25426d80564c1365bd331659f935f07caa50e 100644 (file)
@@ -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
   )
index 66ee617bd880d21edfe3c355e7fb55d7707cb2f1..61d88eeb04845c24f5bff2f1141b79cefd9bba75 100644 (file)
@@ -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<std::string> configs;
-               configs.push_back(TestConfig);
-
-               std::vector<ConfigItem::Ptr> 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("<livestatus>", config);
+               expr->Evaluate(*ScriptFrame::GetCurrentFrame());
+       }
 };
 
 BOOST_GLOBAL_FIXTURE(LivestatusFixture);