Skip to content

Commit bdcb152

Browse files
authored
Benchmarks changes required for monitoring tests (#14)
1 parent 2a4eaa9 commit bdcb152

File tree

3 files changed

+68
-13
lines changed

3 files changed

+68
-13
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ set(EXAMPLES
163163
examples/4-RateDerivedMetric.cxx
164164
examples/5-Benchmark.cxx
165165
examples/6-DedicatedInstance.cxx
166+
examples/7-Latency.cxx
166167
)
167168

168169
foreach (example ${EXAMPLES})

examples/5-Benchmark.cxx

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,20 @@ using Monitoring = AliceO2::Monitoring::MonitoringFactory;
1111

1212
int main(int argc, char *argv[]) {
1313
int sleep = 1000000;
14-
std::string stringMetric = "stringMetric";
15-
std::string doubleMetric = "doubleMetric";
16-
std::string intMetric = "intMetric";
14+
int count = 0;
1715

1816
std::random_device rd;
1917
std::mt19937 mt(rd());
2018

2119
std::uniform_real_distribution<double> doubleDist(1.0, 100.0);
2220
std::uniform_int_distribution<> intDist(1, 100);
2321

24-
double doubleValue = doubleDist(mt);
25-
std::string stringValue = "sampleString" + std::to_string(intDist(mt));
26-
int intValue = intDist(mt);
27-
2822
boost::program_options::options_description desc("Allowed options");
2923
desc.add_options()
3024
("sleep", boost::program_options::value<int>(), "Thread sleep in microseconds")
3125
("config", boost::program_options::value<std::string>()->required(), "Config file path")
3226
("id", boost::program_options::value<std::string>(), "Instance ID")
27+
("count", boost::program_options::value<int>(), "Number of metric bunches (x3)")
3328
;
3429

3530
boost::program_options::variables_map vm;
@@ -40,17 +35,27 @@ int main(int argc, char *argv[]) {
4035
sleep = vm["sleep"].as<int>();
4136
}
4237

38+
if (vm.count("count")) {
39+
count = vm["count"].as<int>();
40+
}
41+
4342
try {
4443
Monitoring::Configure("file://" + vm["config"].as<std::string>());
4544
} catch (std::string &e) {
4645
std::cout << "Configuration file not found.\n" << e << std::endl;
4746
std::exit(EXIT_FAILURE);
48-
}
47+
}
48+
49+
int add = 0;
50+
if (count != 0) {
51+
count--;
52+
add = 1;
53+
}
4954

50-
for (;;) {
51-
Monitoring::Get().send(stringValue, stringMetric);
52-
Monitoring::Get().send(doubleValue, doubleMetric);
53-
Monitoring::Get().send(intValue, intMetric);
55+
for (int i = 0; i <= count; i += add) {
56+
Monitoring::Get().send({"string" + std::to_string(intDist(mt)), "stringMetric"});
57+
Monitoring::Get().send({doubleDist(mt), "doubleMetric"});
58+
Monitoring::Get().send({intDist(mt), "intMetric"});
5459
std::this_thread::sleep_for(std::chrono::microseconds(sleep));
5560
}
56-
}
61+
}

examples/7-Latency.cxx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
///
2+
/// \file 7-Latency.cxx
3+
/// \author Adam Wegrzynek <[email protected]>
4+
///
5+
6+
#include "Monitoring/MonitoringFactory.h"
7+
#include "ExampleBoilerplate.cxx"
8+
#include <boost/program_options.hpp>
9+
#include <random>
10+
11+
using Monitoring = AliceO2::Monitoring::MonitoringFactory;
12+
using namespace AliceO2::Monitoring;
13+
14+
int main(int argc, char *argv[]) {
15+
int sleep = 10000;
16+
boost::program_options::options_description desc("Allowed options");
17+
desc.add_options()
18+
("sleep", boost::program_options::value<int>(), "Thread sleep in microseconds")
19+
("config", boost::program_options::value<std::string>()->required(), "Config file path")
20+
;
21+
22+
boost::program_options::variables_map vm;
23+
boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), vm);
24+
boost::program_options::notify(vm);
25+
26+
if (vm.count("sleep")) {
27+
sleep = vm["sleep"].as<int>();
28+
}
29+
30+
try {
31+
Monitoring::Configure("file://" + vm["config"].as<std::string>());
32+
} catch (std::string &e) {
33+
std::cout << "Configuration file not found.\n" << e << std::endl;
34+
std::exit(EXIT_FAILURE);
35+
}
36+
37+
auto timestamp = std::chrono::system_clock::now();
38+
39+
for (;;) {
40+
Monitoring::Get().send(
41+
Metric{999, "latencyTestMetric"}.addTags(
42+
{{"libraryTimestamp", std::to_string(
43+
std::chrono::duration_cast <std::chrono::nanoseconds>(timestamp.time_since_epoch()).count()
44+
)}}
45+
)
46+
);
47+
std::this_thread::sleep_for(std::chrono::microseconds(sleep));
48+
}
49+
}

0 commit comments

Comments
 (0)