@@ -22,17 +22,43 @@ namespace monitoring
2222namespace Test
2323{
2424
25- BOOST_AUTO_TEST_CASE (createProcessMonitor)
25+ std::stringstream coutRedirect;
26+ std::streambuf* coutBuffer;
27+
28+ void enableRedirect ()
29+ {
30+ coutBuffer = std::cout.rdbuf (coutRedirect.rdbuf ());
31+ }
32+
33+ void disableRedirect ()
2634{
27- o2::monitoring::ProcessMonitor processMonitor ;
28- processMonitor. getPerformanceMetrics ( );
35+ coutRedirect. str ( std::string ()) ;
36+ std::cout. rdbuf (coutBuffer );
2937}
3038
39+
3140BOOST_AUTO_TEST_CASE (monitorProcess)
3241{
33- auto monitoring = o2::monitoring::MonitoringFactory::Get (" stdout://" );
34- monitoring->enableProcessMonitoring (1 );
35- std::this_thread::sleep_for (std::chrono::milliseconds (2100 ));
42+ std::array<std::string, 14 > names = {" memoryUsagePercentage" , " virtualMemorySize" , " residentSetSize" ,
43+ " cpuUsedPercentage" , " involuntaryContextSwitches" , " voluntaryContextSwitches" , " cpuUsedAbsolute" ,
44+ " averageResidentSetSize" , " averageVirtualMemorySize" , " averageCpuUsedPercentage" ,
45+ " cpuTimeConsumedByProcess" , " proportionalSetSize" , " memoryPrivateClean" , " memoryPrivateDirty" };
46+ {
47+ auto monitoring = o2::monitoring::MonitoringFactory::Get (" influxdb-stdout://" );
48+ monitoring->enableProcessMonitoring (1 );
49+ enableRedirect ();
50+ std::this_thread::sleep_for (std::chrono::milliseconds (200 ));
51+ }
52+
53+ std::istringstream returned (coutRedirect.str ());
54+ disableRedirect ();
55+ unsigned short int countMetrics = 0 ;
56+ for (std::string line; std::getline (returned, line); ) {
57+ BOOST_CHECK (std::find (names.begin (), names.end (), line.substr (0 , line.find (' ,' ))) != names.end ());
58+ countMetrics++;
59+ }
60+ // On linux 14 and macOS 6
61+ BOOST_CHECK (countMetrics == 14 || countMetrics == 6 );
3662}
3763
3864BOOST_AUTO_TEST_CASE (monitorProcessMetricName)
0 commit comments