7 #include "evel_test_control.h"
9 /*****************************************************************************/
10 /* Local prototypes. */
11 /*****************************************************************************/
12 static void demo_heartbeat();
13 static void demo_measurement(const int interval);
15 unsigned long long epoch_start = 0;
17 int main(int argc, char ** argv)
19 printf("\nHello AT&T Vendor Event world!\n");
25 "Usage: %s <FQDN>|<IP address> <port> "
26 "<username> <password>\n", argv[0]);
30 char * api_fqdn = argv[1];
31 int api_port = atoi(argv[2]);
34 /***************************************************************************/
36 /***************************************************************************/
37 if (evel_initialize(api_fqdn, /* FQDN */
39 NULL, /* optional path */
40 NULL, /* optional topic */
41 api_secure, /* HTTPS? */
42 argv[3], /* Username */
43 argv[4], /* Password */
44 EVEL_SOURCE_VIRTUAL_MACHINE, /* Source type */
45 "EVEL training demo", /* Role */
48 fprintf(stderr, "\nFailed to initialize the EVEL library!!!\n");
53 printf("\nInitialization completed\n");
56 /***************************************************************************/
57 /* Work out a start time for measurements, and sleep for initial period. */
58 /***************************************************************************/
60 struct timeval tv_start;
61 gettimeofday(&tv_start, NULL);
62 epoch_start = tv_start.tv_usec + 1000000 * tv_start.tv_sec;
66 for (index = 0; index < 10; index++)
68 /*************************************************************************/
69 /* On the second and fifth iteration, get the test_collector to change */
71 /*************************************************************************/
74 printf("TestControl: measurement interval -> 2s\n");
75 evel_test_control_meas_interval(2, api_secure, api_fqdn, api_port);
79 printf("TestControl: measurement interval -> 5s\n");
80 evel_test_control_meas_interval(5, api_secure, api_fqdn, api_port);
83 /*************************************************************************/
84 /* Heartbeat to pick up the suppression change. */
85 /*************************************************************************/
88 /*************************************************************************/
89 /* Raise a measurement and sleep. */
90 /*************************************************************************/
91 printf("Report measurements\n");
93 demo_measurement(sleep_time);
94 printf("Sleeping for %ds\n", sleep_time);
98 /*************************************************************************/
99 /* Update measurement interval. */
100 /*************************************************************************/
101 int measurement_interval;
102 measurement_interval = evel_get_measurement_interval();
103 if (measurement_interval == EVEL_MEASUREMENT_INTERVAL_UKNOWN)
109 sleep_time = measurement_interval;
111 printf("EVEL measurement interval = %d\n\n", measurement_interval);
114 /***************************************************************************/
116 /***************************************************************************/
119 printf("Terminated\n");
124 /**************************************************************************//**
125 * Create and send a heatbeat.
126 *****************************************************************************/
127 void demo_heartbeat()
129 EVENT_HEADER * heartbeat = NULL;
130 EVEL_ERR_CODES evel_rc = EVEL_SUCCESS;
132 heartbeat = evel_new_heartbeat();
133 if (heartbeat != NULL)
135 evel_rc = evel_post_event(heartbeat);
136 if (evel_rc != EVEL_SUCCESS)
138 printf("Post failed %d (%s)", evel_rc, evel_error_string());
143 printf("New heartbeat failed");
147 /**************************************************************************//**
148 * Create and send a measurement event.
149 *****************************************************************************/
150 void demo_measurement(const int interval)
152 EVENT_MEASUREMENT * measurement = NULL;
153 MEASUREMENT_LATENCY_BUCKET * bucket = NULL;
154 MEASUREMENT_VNIC_PERFORMANCE * vnic_performance = NULL;
155 EVEL_ERR_CODES evel_rc = EVEL_SUCCESS;
156 MEASUREMENT_CPU_USE *cpu_use;
158 /***************************************************************************/
160 /***************************************************************************/
161 measurement = evel_new_measurement(interval);
162 if (measurement != NULL)
164 printf("New measurement created...\n");
165 evel_measurement_type_set(measurement, "Perf management...");
166 evel_measurement_conc_sess_set(measurement, 1);
167 evel_measurement_cfg_ents_set(measurement, 2);
168 evel_measurement_mean_req_lat_set(measurement, 4.4);
169 evel_measurement_request_rate_set(measurement, 6);
171 cpu_use = evel_measurement_new_cpu_use_add(measurement, "cpu1", 11.11);
172 evel_measurement_cpu_use_idle_set(cpu_use,22.22);
173 evel_measurement_cpu_use_interrupt_set(cpu_use,33.33);
174 evel_measurement_cpu_use_nice_set(cpu_use,44.44);
175 evel_measurement_cpu_use_softirq_set(cpu_use,55.55);
176 evel_measurement_cpu_use_steal_set(cpu_use,66.66);
177 evel_measurement_cpu_use_system_set(cpu_use,77.77);
178 evel_measurement_cpu_use_usageuser_set(cpu_use,88.88);
179 evel_measurement_cpu_use_wait_set(cpu_use,99.99);
181 cpu_use = evel_measurement_new_cpu_use_add(measurement, "cpu2", 22.22);
182 evel_measurement_cpu_use_idle_set(cpu_use,12.22);
183 evel_measurement_cpu_use_interrupt_set(cpu_use,33.33);
184 evel_measurement_cpu_use_nice_set(cpu_use,44.44);
185 evel_measurement_cpu_use_softirq_set(cpu_use,55.55);
186 evel_measurement_cpu_use_steal_set(cpu_use,66.66);
187 evel_measurement_cpu_use_system_set(cpu_use,77.77);
188 evel_measurement_cpu_use_usageuser_set(cpu_use,88.88);
189 evel_measurement_cpu_use_wait_set(cpu_use,19.99);
191 evel_measurement_fsys_use_add(measurement,"00-11-22",100.11, 100.22, 33,
193 evel_measurement_fsys_use_add(measurement,"33-44-55",300.11, 300.22, 55,
196 bucket = evel_new_meas_latency_bucket(20);
197 evel_meas_latency_bucket_low_end_set(bucket, 0.0);
198 evel_meas_latency_bucket_high_end_set(bucket, 10.0);
199 evel_meas_latency_bucket_add(measurement, bucket);
201 bucket = evel_new_meas_latency_bucket(30);
202 evel_meas_latency_bucket_low_end_set(bucket, 10.0);
203 evel_meas_latency_bucket_high_end_set(bucket, 20.0);
204 evel_meas_latency_bucket_add(measurement, bucket);
206 vnic_performance = evel_measurement_new_vnic_performance("eth0", "true");
208 evel_vnic_performance_rx_bcast_pkt_acc_set(vnic_performance, 1000000.023);
209 evel_vnic_performance_rx_bcast_pkt_delta_set(vnic_performance,1234.767346);
210 evel_vnic_performance_rx_discard_pkt_acc_set(vnic_performance, 127146784.234738587);
211 evel_vnic_performance_rx_discard_pkt_delta_set(vnic_performance, 123445);
212 evel_vnic_performance_rx_error_pkt_acc_set(vnic_performance, 2736448376);
213 evel_vnic_performance_rx_error_pkt_delta_set(vnic_performance, 3474438764);
214 evel_vnic_performance_rx_mcast_pkt_acc_set(vnic_performance, 42464676);
215 evel_vnic_performance_rx_mcast_pkt_delta_set(vnic_performance, 42678657654);
216 evel_vnic_performance_rx_octets_acc_set(vnic_performance, 47658745);
217 evel_vnic_performance_rx_octets_delta_set(vnic_performance, 47656465465);
218 evel_vnic_performance_rx_total_pkt_acc_set(vnic_performance, 4765764654444);
219 evel_vnic_performance_rx_total_pkt_delta_set(vnic_performance, 4545665656);
220 evel_vnic_performance_rx_ucast_pkt_acc_set(vnic_performance, 4765745546.);
221 evel_vnic_performance_rx_ucast_pkt_delta_set(vnic_performance, 4768765.78347856);
222 evel_vnic_performance_tx_bcast_pkt_acc_set(vnic_performance, 747665.347647);
223 evel_vnic_performance_tx_bcast_pkt_delta_set(vnic_performance, 3468765.4774);
224 evel_vnic_performance_tx_discarded_pkt_acc_set(vnic_performance, 53625345.53);
225 evel_vnic_performance_tx_discarded_pkt_delta_set(vnic_performance, 5465345.72455);
226 evel_vnic_performance_tx_error_pkt_acc_set(vnic_performance, 7632754.754);
227 evel_vnic_performance_tx_error_pkt_delta_set(vnic_performance, 34646875444.);
228 evel_vnic_performance_tx_mcast_pkt_acc_set(vnic_performance, 2734875.5534);
229 evel_vnic_performance_tx_mcast_pkt_delta_set(vnic_performance, 562346534.654);
230 evel_vnic_performance_tx_octets_acc_set(vnic_performance, 2785845.76874);
231 evel_meas_vnic_performance_add(measurement, vnic_performance);
233 vnic_performance = evel_measurement_new_vnic_performance("eth1", "false");
234 evel_vnic_performance_rx_mcast_pkt_delta_set(vnic_performance, 42678657654);
235 evel_vnic_performance_rx_octets_acc_set(vnic_performance, 47658745);
236 evel_vnic_performance_rx_octets_delta_set(vnic_performance, 47656465465);
237 evel_vnic_performance_rx_total_pkt_acc_set(vnic_performance, 4765764654444);
238 evel_vnic_performance_rx_total_pkt_delta_set(vnic_performance, 4545665656);
239 evel_vnic_performance_rx_ucast_pkt_acc_set(vnic_performance, 4765745546.);
240 evel_vnic_performance_rx_ucast_pkt_delta_set(vnic_performance, 4768765.78347856);
241 evel_vnic_performance_tx_bcast_pkt_acc_set(vnic_performance, 747665.347647);
242 evel_vnic_performance_tx_bcast_pkt_delta_set(vnic_performance, 3468765.4774);
243 evel_vnic_performance_tx_discarded_pkt_acc_set(vnic_performance, 53625345.53);
244 evel_meas_vnic_performance_add(measurement, vnic_performance);
246 evel_measurement_errors_set(measurement, 1, 0, 2, 1);
248 evel_measurement_feature_use_add(measurement, "FeatureA", 123);
249 evel_measurement_feature_use_add(measurement, "FeatureB", 567);
251 evel_measurement_codec_use_add(measurement, "G711a", 91);
252 evel_measurement_codec_use_add(measurement, "G729ab", 92);
254 evel_measurement_media_port_use_set(measurement, 1234);
256 evel_measurement_vnfc_scaling_metric_set(measurement, 1234.5678);
258 evel_measurement_custom_measurement_add(measurement,
259 "Group1", "Name1", "Value1");
260 evel_measurement_custom_measurement_add(measurement,
261 "Group2", "Name1", "Value1");
262 evel_measurement_custom_measurement_add(measurement,
263 "Group2", "Name2", "Value2");
265 /*************************************************************************/
266 /* Work out the time, to use as end of measurement period. */
267 /*************************************************************************/
268 struct timeval tv_now;
269 gettimeofday(&tv_now, NULL);
270 unsigned long long epoch_now = tv_now.tv_usec + 1000000 * tv_now.tv_sec;
271 evel_start_epoch_set(&measurement->header, epoch_start);
272 evel_last_epoch_set(&measurement->header, epoch_now);
273 epoch_start = epoch_now;
274 evel_reporting_entity_name_set(&measurement->header, "measurer");
275 evel_reporting_entity_id_set(&measurement->header, "measurer_id");
277 evel_rc = evel_post_event((EVENT_HEADER *)measurement);
278 if (evel_rc == EVEL_SUCCESS)
280 printf("Post OK!\n");
284 printf("Post Failed %d (%s)\n", evel_rc, evel_error_string());
289 printf("Failed to create event (%s)\n", evel_error_string());
292 printf(" Processed Measurement\n");