]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/test/test/framework-ts/message-in-datatestcase-test.cpp
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / boost / libs / test / test / framework-ts / message-in-datatestcase-test.cpp
1 // (C) Copyright Raffi Enficiaud 2017.
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
5
6 // See http://www.boost.org/libs/test for the library home page.
7
8 #define BOOST_TEST_MODULE message in dataset
9
10 #include <boost/test/unit_test.hpp>
11
12 #include <boost/test/unit_test_suite.hpp>
13 #include <boost/test/unit_test_log.hpp>
14 #include <boost/test/results_collector.hpp>
15 #include <boost/test/data/monomorphic.hpp>
16 #include <boost/test/data/test_case.hpp>
17
18 #include <boost/test/framework.hpp>
19 #include <boost/test/unit_test_parameters.hpp>
20 #include <boost/test/utils/nullstream.hpp>
21
22 #include "logger-for-tests.hpp"
23
24 // STL
25 #include <iostream>
26 #include <ios>
27
28
29 using boost::test_tools::output_test_stream;
30 using namespace boost::unit_test;
31
32
33
34 #line 34
35 std::string filenames[] = { "util/test_image1.jpg", "util/test_image2.jpg" };
36 BOOST_DATA_TEST_CASE(test_update,
37 boost::unit_test::data::make(filenames))
38 {
39 std::string field_name = "Volume";
40 int value = 100;
41
42 BOOST_TEST_MESSAGE("Testing update :");
43 BOOST_TEST_MESSAGE("Update " << field_name << " with " << value);
44 }
45
46 void check_pattern_loggers(
47 output_test_stream& output,
48 output_format log_format,
49 test_unit_id id,
50 bool bt_module_failed = false,
51 log_level ll = log_successful_tests )
52 {
53 {
54 log_setup_teardown holder(output, log_format, ll);
55
56 // output before fixture registration
57 output << "* " << log_format << "-format *******************************************************************";
58 output << std::endl;
59
60 framework::finalize_setup_phase( id );
61
62 bool setup_error_caught = false;
63 try {
64 framework::run( id, false ); // do not continue the test tree to have the test_log_start/end
65 }
66 catch (framework::setup_error&) {
67 BOOST_TEST_MESSAGE("Framework setup_error caught");
68 setup_error_caught = true;
69 }
70
71 output << std::endl;
72 }
73
74 BOOST_TEST( bt_module_failed == (( results_collector.results( id ).result_code() != 0 ) ));
75 BOOST_TEST( output.match_pattern(true) ); // flushes the stream at the end of the comparison.
76 }
77
78 void check_pattern_loggers(
79 output_test_stream& output,
80 test_suite* ts,
81 bool bt_module_failed = false)
82 {
83 ts->p_default_status.value = test_unit::RS_ENABLED;
84
85 check_pattern_loggers( output, OF_CLF, ts->p_id, bt_module_failed );
86 check_pattern_loggers( output, OF_XML, ts->p_id, bt_module_failed );
87 check_pattern_loggers( output, OF_JUNIT, ts->p_id, bt_module_failed, log_successful_tests );
88 check_pattern_loggers( output, OF_JUNIT, ts->p_id, bt_module_failed, log_cpp_exception_errors ); // should branch to the log log_all_errors
89 }
90
91 struct guard {
92 ~guard()
93 {
94 boost::unit_test::unit_test_log.set_format( runtime_config::get<output_format>( runtime_config::btrt_log_format ) );
95 boost::unit_test::unit_test_log.set_stream( std::cout );
96 }
97 };
98
99
100 //____________________________________________________________________________//
101
102
103 BOOST_AUTO_TEST_CASE( messages_in_datasets )
104 {
105 guard G;
106 boost::ignore_unused( G );
107
108 #define PATTERN_FILE_NAME "messages-in-datasets-test.pattern"
109
110 std::string pattern_file_name(
111 framework::master_test_suite().argc == 1
112 ? (runtime_config::save_pattern() ? PATTERN_FILE_NAME : "./baseline-outputs/" PATTERN_FILE_NAME )
113 : framework::master_test_suite().argv[1] );
114
115 output_test_stream_for_loggers test_output( pattern_file_name,
116 !runtime_config::save_pattern(),
117 true,
118 __FILE__ );
119
120 auto dataset = boost::unit_test::data::make(filenames);
121
122 test_unit_generator const& generator = boost::unit_test::data::ds_detail::test_case_gen<test_updatecase, decltype(dataset)>(
123 "fake_name",
124 __FILE__,
125 200,
126 std::forward<decltype(dataset)>(dataset) );
127 test_suite* ts = BOOST_TEST_SUITE( "fake_datatest_case" );
128 while(test_unit *tu = generator.next()) {
129 ts->add(tu);
130 }
131
132 check_pattern_loggers(test_output, ts);
133 }