[icinga-checkins] icinga.org: icinga2/master: Fix livestatus unit tests on OS X

git at icinga.org git at icinga.org
Sun Aug 28 08:20:06 CEST 2016


Module: icinga2
Branch: master
Commit: 2c8be90232b2787d8a6b294655acd6e0f50ad743
URL:    https://git.icinga.org/?p=icinga2.git;a=commit;h=2c8be90232b2787d8a6b294655acd6e0f50ad743

Author: Gunnar Beutner <gunnar.beutner at netways.de>
Date:   Sun Aug 28 08:18:40 2016 +0200

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 df9bf32..7ad2542 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 66ee617..61d88ee 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<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);



More information about the icinga-checkins mailing list