diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 46750ffa5..5fce79833 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -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 index 000000000..bb3b1c710 --- /dev/null +++ b/test/icingaapplication-fixture.cpp @@ -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(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 index 000000000..d79836b8b --- /dev/null +++ b/test/icingaapplication-fixture.hpp @@ -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 + +using namespace icinga; + +struct IcingaApplicationFixture +{ + IcingaApplicationFixture(); + + void InitIcingaApplication(); + + ~IcingaApplicationFixture(); +}; + +#endif // ICINGAAPPLICATION_FIXTURE_H diff --git a/test/test-runner.cpp b/test/test-runner.cpp index f950c4834..4ed6aa30a 100644 --- a/test/test-runner.cpp +++ b/test/test-runner.cpp @@ -19,28 +19,4 @@ #define BOOST_TEST_MAIN -#include "icinga/icingaapplication.hpp" -#include "base/application.hpp" #include - -using namespace icinga; - -struct TestIcingaApplication -{ - TestIcingaApplication() - { - Application::InitializeBase(); - - IcingaApplication::Ptr appInst; - - appInst = new IcingaApplication(); - static_pointer_cast(appInst)->OnConfigLoaded(); - } - - ~TestIcingaApplication() - { - IcingaApplication::GetInstance().reset(); - } -}; - -BOOST_GLOBAL_FIXTURE(TestIcingaApplication);