7 #include "artdaq-core/Utilities/configureMessageFacility.hh"
8 #include "artdaq/DAQdata/Globals.hh"
10 #include <boost/program_options.hpp>
13 namespace bpo = boost::program_options;
15 std::string formatTime(
double time)
18 o << std::fixed << std::setprecision(3);
21 o << static_cast<int>(time / 60) <<
" m " << time - 60 * static_cast<int>(time / 60) <<
" s";
52 int main(
int argc,
char *argv[])
55 std::ostringstream descstr;
57 <<
" <-l test loops> [csutdi]";
58 bpo::options_description desc(descstr.str());
59 desc.add_options()(
"loops,l", bpo::value<size_t>(),
"Number of times to run each test")(
"C,c",
"Run TRACEC test")(
"S,s",
"Run TRACES test")(
"U,u",
"Run TRACE_ test")(
"T,t",
"Run TRACE_STREAMER test")(
"D,d",
"Run TLOG_DEBUG test")(
"I,i",
"Run TLOG_INFO test")(
"console,x",
"Enable MessageFacility output to console")(
"help,h",
"produce help message");
60 bpo::variables_map vm;
63 bpo::store(bpo::command_line_parser(argc, argv).options(desc).run(), vm);
66 catch (bpo::error
const &e)
68 std::cerr <<
"Exception from command line processing in " << *argv
69 <<
": " << e.what() <<
"\n";
72 if (vm.count(
"help") != 0u)
74 std::cout << desc << std::endl;
77 if (vm.count(
"loops") == 0u)
79 std::cerr <<
"Exception from command line processing in " << *argv
80 <<
": no loop count given.\n"
81 <<
"For usage and an options list, please do '"
86 size_t loops = vm[
"loops"].as<
size_t>();
88 artdaq::configureMessageFacility(
"tracemf", vm.count(
"console") != 0u);
90 if (vm.count(
"C") != 0u)
92 std::cout <<
"Starting TRACEC test" << std::endl;
93 auto start = std::chrono::steady_clock::now();
94 for (
size_t l = 0; l < loops; ++l)
96 TRACE(TLVL_DEBUG,
"Test TRACEC with an int %i and a float %.1f", 42, 5.56);
98 auto time = std::chrono::duration_cast<std::chrono::duration<double>>(std::chrono::steady_clock::now() - start).count();
99 std::cout <<
"TRACEC test took " << formatTime(time) <<
", avg: " << formatTime(time / loops) << std::endl;
102 if (vm.count(
"S") != 0u)
104 std::cout <<
"Starting TRACES test" << std::endl;
105 auto start = std::chrono::steady_clock::now();
106 for (
size_t l = 0; l < loops; ++l)
108 std::string test =
"Test TRACE with an int %d";
109 std::string test2 =
" and a float %.1f";
110 TRACE(TLVL_DEBUG, test + test2, 42, 5.56);
112 auto time = std::chrono::duration_cast<std::chrono::duration<double>>(std::chrono::steady_clock::now() - start).count();
113 std::cout <<
"TRACES test took " << formatTime(time) <<
", avg: " << formatTime(time / loops) << std::endl;
116 if (vm.count(
"U") != 0u)
118 std::cout <<
"Starting TRACE_ test" << std::endl;
119 auto start = std::chrono::steady_clock::now();
120 for (
size_t l = 0; l < loops; ++l)
122 TRACEN_(
"tracemf", TLVL_DEBUG,
"Test TRACE_ with an int " << 42 <<
" and a float %.1f", 5.56);
124 auto time = std::chrono::duration_cast<std::chrono::duration<double>>(std::chrono::steady_clock::now() - start).count();
125 std::cout <<
"TRACE_ test took " << formatTime(time) <<
", avg: " << formatTime(time / loops) << std::endl;
128 if (vm.count(
"D") != 0u)
130 std::cout <<
"Starting TLOG_DEBUG test" << std::endl;
131 auto start = std::chrono::steady_clock::now();
132 for (
size_t l = 0; l < loops; ++l)
134 TLOG_DEBUG(
"tracemf") <<
"Test TLOG_DEBUG with an int " << 42 <<
" and a float " << std::setprecision(1) << 5.56 <<
", and another float " << 7.3 << TRACE_ENDL;
136 auto time = std::chrono::duration_cast<std::chrono::duration<double>>(std::chrono::steady_clock::now() - start).count();
137 std::cout <<
"TLOG_DEBUG test took " << formatTime(time) <<
", avg: " << formatTime(time / loops) << std::endl;
140 if (vm.count(
"I") != 0u)
142 std::cout <<
"Starting TLOG_INFO test" << std::endl;
143 auto start = std::chrono::steady_clock::now();
144 for (
size_t l = 0; l < loops; ++l)
146 TLOG_INFO(
"tracemf") <<
"Test TLOG_INFO with an int " << 42 <<
" and a float " << std::setprecision(1) << 5.56 <<
", and another float " << std::fixed << 7.3 << TRACE_ENDL;
148 auto time = std::chrono::duration_cast<std::chrono::duration<double>>(std::chrono::steady_clock::now() - start).count();
149 std::cout <<
"TLOG_INFO test took " << formatTime(time) <<
", avg: " << formatTime(time / loops) << std::endl;