obmon  0.0.0
 All Classes Functions Variables Enumerations Groups Pages
obmon-test.cpp
1 #include <ObSensorSystem.h>
2 #include <ObSensorTest.h>
3 #include <czmq.h>
4 #include <glibtop/cpu.h>
5 #include <spdlog/fmt/ostr.h>
6 #include <spdlog/spdlog.h>
7 
8 std::shared_ptr<spdlog::logger> logger = nullptr;
9 
10 int main() {
11 
12  // creating logger
13  auto console = spdlog::stdout_logger_mt("console");
14  logger = spdlog::get("console");
15  spdlog::set_level(spdlog::level::trace);
16 
17  char *hostname = zsys_hostname();
18 
19  zsock_t *writer = zsock_new_push("@tcp://127.0.0.1:5560");
20  assert(writer);
21  assert(zsock_resolve(writer) != writer);
22  assert(streq(zsock_type_str(writer), "PUSH"));
23 
24  zsock_t *reader = zsock_new_pull(">tcp://127.0.0.1:5560");
25  assert(reader);
26  assert(zsock_resolve(reader) != reader);
27  assert(streq(zsock_type_str(reader), "PULL"));
28 
29  glibtop_init();
30 
31  // measure cpu
32  glibtop_cpu cpu1;
33  glibtop_get_cpu(&cpu1);
34 
35  // sleep 1 sec
36  zclock_sleep(1000);
37 
38  // measure cpu after 1 sec
39  glibtop_cpu cpu2;
40  glibtop_get_cpu(&cpu2);
41 
42  // double cpu_usage = (double)(cpu2.user - cpu1.user)/(cpu2.total)*100;
43  double cpu_usage =
44  (double)(cpu2.user - cpu1.user) / (cpu2.total - cpu1.total) * 100;
45 
46  logger->info("Sending 'cpu total : {:.2f}' ...", cpu_usage);
47 
48  zstr_sendf(writer, "cpu total : %.2f", cpu_usage);
49  zmsg_t *msg = zmsg_recv(reader);
50  assert(msg);
51  char *string = zmsg_popstr(msg);
52  logger->info("Received : '{}'", string);
53  free(string);
54  zmsg_destroy(&msg);
55 
56  glibtop_close();
57 
58  zsock_destroy(&writer);
59  zsock_destroy(&reader);
60 
61  logger->info("Running ObSensorTest ...");
62  ObSensor s("ctp3");
63  s.sensors().push_back(new ObSensorTest("test"));
64  s.sensors().push_back(new ObSensorTest("test2"));
65  s.sensors().push_back(new ObSensorSystem("sys"));
66 
67  // init sensors
68  s.init();
69 
70  const int timeout = 1000;
71  s.update(timeout);
72  zclock_sleep(timeout);
73 
74  for (int i = 0; i < 3; ++i) {
75  s.update(timeout);
76  std::string json = s.json();
77  logger->info("json={}", json.data());
78  zclock_sleep(timeout);
79  }
80 
81  logger->info("Done running ObSensorTest ...");
82 
83  zsock_t* sub = zsock_new_sub(">tcp://localhost:10001", "");
84  assert(sub);
85 
86  while (!zsys_interrupted) {
87  zmsg_t* msg = zmsg_recv(sub);
88  if (!msg)
89  break;
90 
91  char* sub_str = zmsg_popstr(msg);
92  char* cluster = zmsg_popstr(msg);
93  char* host = zmsg_popstr(msg);
94  char* json_str = zmsg_popstr(msg);
95 
96  logger->info("sub={} cluster={} host={} json={}\n", sub_str, cluster,host, json_str);
97  free(sub_str);
98  free(json_str);
99  free(cluster);
100  zmsg_destroy(&msg);
101  }
102  zsock_destroy(&sub);
103 
104 
105 
106 
107  // cleaning spdlog
108  spdlog::drop_all();
109 
110  free(hostname);
111 
112  return 0;
113 }
System Obmon sensor class.
Tesing Obmon sensor class.
Definition: ObSensorTest.h:20
Base Obmon sensor class.
Definition: ObSensor.h:19