/******************************************************************************
* Icinga 2 *
- * Copyright (C) 2012-2015 Icinga Development Team (http://www.icinga.org) *
+ * 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 *
******************************************************************************/
#include "livestatus/livestatusquery.hpp"
-#include "config/configcompiler.hpp"
-#include "config/configitem.hpp"
#include "base/application.hpp"
#include "base/stdiostream.hpp"
#include "base/json.hpp"
-#include "base/loader.hpp"
-#include "cli/daemonutility.hpp"
-#include <boost/test/unit_test.hpp>
-#include <fstream>
+#include <BoostTestTargetConfig.h>
using namespace icinga;
-struct GlobalConfigFixture {
- GlobalConfigFixture()
- : TestConfig("test-config.conf")
- {
- BOOST_TEST_MESSAGE("setup global config fixture");
-
- 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 << " execute = PluginCheck\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);
- }
-
- ~GlobalConfigFixture()
- {
- BOOST_TEST_MESSAGE("cleanup global config fixture");
-
- unlink(TestConfig.CStr());
- }
-
- String TestConfig;
-};
-
-BOOST_GLOBAL_FIXTURE(GlobalConfigFixture);
-
-struct LocalFixture {
- LocalFixture() { }
- ~LocalFixture() { }
-};
-
String LivestatusQueryHelper(const std::vector<String>& lines)
{
LivestatusQuery::Ptr query = new LivestatusQuery(lines, "");
//____________________________________________________________________________//
-BOOST_FIXTURE_TEST_SUITE(livestatus, LocalFixture)
+BOOST_AUTO_TEST_SUITE(livestatus)
BOOST_AUTO_TEST_CASE(hosts)
{
BOOST_TEST_MESSAGE( "Querying Livestatus...");
std::vector<String> lines;
- lines.push_back("GET hosts");
- lines.push_back("Columns: host_name address check_command");
- lines.push_back("OutputFormat: json");
- lines.push_back("\n");
+ lines.emplace_back("GET hosts");
+ lines.emplace_back("Columns: host_name address check_command");
+ lines.emplace_back("OutputFormat: json");
+ lines.emplace_back("\n");
/* use our query helper */
String output = LivestatusQueryHelper(lines);
BOOST_TEST_MESSAGE( "Querying Livestatus...");
std::vector<String> lines;
- lines.push_back("GET services");
- lines.push_back("Columns: host_name service_description check_command notes");
- lines.push_back("OutputFormat: json");
- lines.push_back("\n");
+ lines.emplace_back("GET services");
+ lines.emplace_back("Columns: host_name service_description check_command notes");
+ lines.emplace_back("OutputFormat: json");
+ lines.emplace_back("\n");
/* use our query helper */
String output = LivestatusQueryHelper(lines);