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