]> granicus.if.org Git - icinga2/commitdiff
tests: Move IcingaApplicationFixture out of test-runner
authorMarkus Frosch <markus.frosch@icinga.com>
Fri, 23 Mar 2018 12:30:12 +0000 (13:30 +0100)
committerMarkus Frosch <markus.frosch@icinga.com>
Mon, 26 Mar 2018 11:58:12 +0000 (13:58 +0200)
And make it basically a singleton that would be callable by other test
units.

test/CMakeLists.txt
test/icingaapplication-fixture.cpp [new file with mode: 0644]
test/icingaapplication-fixture.hpp [new file with mode: 0644]
test/test-runner.cpp

index 46750ffa52022df1ef66d61fda9a8b93a9a08b5b..5fce798331e252cc45ca411ae953dba3de7b0527 100644 (file)
@@ -18,6 +18,7 @@
 include(BoostTestTargets)
 
 set(base_test_SOURCES
+  icingaapplication-fixture.cpp
   base-array.cpp
   base-base64.cpp
   base-convert.cpp
@@ -56,7 +57,7 @@ endif()
 add_boost_test(base
   SOURCES test-runner.cpp ${base_test_SOURCES}
   LIBRARIES ${base_DEPS}
-  TESTS 
+  TESTS
     base_array/construct
     base_array/getset
     base_array/resize
@@ -145,6 +146,7 @@ add_boost_test(base
 
 if(ICINGA2_WITH_LIVESTATUS)
   set(livestatus_test_SOURCES
+    icingaapplication-fixture.cpp
     livestatus-fixture.cpp
     livestatus.cpp
     ${base_OBJS}
@@ -167,6 +169,7 @@ if(ICINGA2_WITH_LIVESTATUS)
 endif()
 
 set(icinga_checkable_test_SOURCES
+  icingaapplication-fixture.cpp
   icinga-checkable-fixture.cpp
   icinga-checkable-flapping.cpp
   ${base_OBJS}
diff --git a/test/icingaapplication-fixture.cpp b/test/icingaapplication-fixture.cpp
new file mode 100644 (file)
index 0000000..bb3b1c7
--- /dev/null
@@ -0,0 +1,49 @@
+/******************************************************************************
+* Icinga 2                                                                   *
+* Copyright (C) 2012-2018 Icinga Development Team (https://www.icinga.com/)  *
+*                                                                            *
+* This program is free software; you can redistribute it and/or              *
+* modify it under the terms of the GNU General Public License                *
+* as published by the Free Software Foundation; either version 2             *
+* of the License, or (at your option) any later version.                     *
+*                                                                            *
+* This program is distributed in the hope that it will be useful,            *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of             *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              *
+* GNU General Public License for more details.                               *
+*                                                                            *
+* You should have received a copy of the GNU General Public License          *
+* along with this program; if not, write to the Free Software Foundation     *
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.             *
+******************************************************************************/
+
+#include "icingaapplication-fixture.hpp"
+
+using namespace icinga;
+
+static bool IcingaInitialized = false;
+
+IcingaApplicationFixture::IcingaApplicationFixture()
+{
+       if (!IcingaInitialized)
+               InitIcingaApplication();
+}
+
+void IcingaApplicationFixture::InitIcingaApplication()
+{
+       BOOST_TEST_MESSAGE("Initializing Application...");
+       Application::InitializeBase();
+
+       BOOST_TEST_MESSAGE("Initializing IcingaApplication...");
+       IcingaApplication::Ptr appInst = new IcingaApplication();
+       static_pointer_cast<ConfigObject>(appInst)->OnConfigLoaded();
+
+       IcingaInitialized = true;
+}
+
+IcingaApplicationFixture::~IcingaApplicationFixture()
+{
+       IcingaApplication::GetInstance().reset();
+}
+
+BOOST_GLOBAL_FIXTURE(IcingaApplicationFixture);
diff --git a/test/icingaapplication-fixture.hpp b/test/icingaapplication-fixture.hpp
new file mode 100644 (file)
index 0000000..d79836b
--- /dev/null
@@ -0,0 +1,38 @@
+/******************************************************************************
+* Icinga 2                                                                   *
+* Copyright (C) 2012-2018 Icinga Development Team (https://www.icinga.com/)  *
+*                                                                            *
+* This program is free software; you can redistribute it and/or              *
+* modify it under the terms of the GNU General Public License                *
+* as published by the Free Software Foundation; either version 2             *
+* of the License, or (at your option) any later version.                     *
+*                                                                            *
+* This program is distributed in the hope that it will be useful,            *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of             *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              *
+* GNU General Public License for more details.                               *
+*                                                                            *
+* You should have received a copy of the GNU General Public License          *
+* along with this program; if not, write to the Free Software Foundation     *
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.             *
+******************************************************************************/
+
+#ifndef ICINGAAPPLICATION_FIXTURE_H
+#define ICINGAAPPLICATION_FIXTURE_H
+
+#include "icinga/icingaapplication.hpp"
+#include "base/application.hpp"
+#include <BoostTestTargetConfig.h>
+
+using namespace icinga;
+
+struct IcingaApplicationFixture
+{
+       IcingaApplicationFixture();
+
+       void InitIcingaApplication();
+
+       ~IcingaApplicationFixture();
+};
+
+#endif // ICINGAAPPLICATION_FIXTURE_H
index f950c48342fb054eb8c8095f1f6a6191609cf68a..4ed6aa30a235ec8128fc5f042308b596288151e0 100644 (file)
 
 #define BOOST_TEST_MAIN
 
-#include "icinga/icingaapplication.hpp"
-#include "base/application.hpp"
 #include <BoostTestTargetConfig.h>
-
-using namespace icinga;
-
-struct TestIcingaApplication
-{
-       TestIcingaApplication()
-       {
-               Application::InitializeBase();
-
-               IcingaApplication::Ptr appInst;
-
-               appInst = new IcingaApplication();
-               static_pointer_cast<ConfigObject>(appInst)->OnConfigLoaded();
-       }
-
-       ~TestIcingaApplication()
-       {
-               IcingaApplication::GetInstance().reset();
-       }
-};
-
-BOOST_GLOBAL_FIXTURE(TestIcingaApplication);