Fix for delta values reported by vFW vLB
[demo.git] / vnfs / VES5.0 / evel / evel-library / code / evel_training / 07-raise-measurement / hello_evel_world.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4
5 #include "evel.h"
6
7 /*****************************************************************************/
8 /* Local prototypes.                                                         */
9 /*****************************************************************************/
10 static void demo_measurement(void);
11
12 int main(int argc, char ** argv)
13 {
14   EVEL_ERR_CODES evel_rc = EVEL_SUCCESS;
15   EVENT_HEADER * heartbeat = NULL;
16
17   printf("\nHello AT&T Vendor Event world!\n");
18   fflush(stdout);
19
20   if (argc != 5)
21   {
22     fprintf(stderr,
23             "Usage: %s <FQDN>|<IP address> <port> "
24             "<username> <password>\n", argv[0]);
25     exit(-1);
26   }
27
28   /***************************************************************************/
29   /* Initialize                                                              */
30   /***************************************************************************/
31   if (evel_initialize(argv[1],                      /* FQDN                  */
32                       atoi(argv[2]),                /* Port                  */
33                       NULL,                         /* optional path         */
34                       NULL,                         /* optional topic        */
35                       0,                            /* HTTPS?                */
36                       argv[3],                      /* Username              */
37                       argv[4],                      /* Password              */
38                       EVEL_SOURCE_VIRTUAL_MACHINE,  /* Source type           */
39                       "EVEL training demo",         /* Role                  */
40                       0))                           /* Verbosity             */
41   {
42     fprintf(stderr, "\nFailed to initialize the EVEL library!!!\n");
43     exit(-1);
44   }
45   else
46   {
47     printf("\nInitialization completed\n");
48   }
49
50   /***************************************************************************/
51   /* Send a heartbeat just to show we're alive!                              */
52   /***************************************************************************/
53   heartbeat = evel_new_heartbeat();
54   if (heartbeat != NULL)
55   {
56     evel_rc = evel_post_event(heartbeat);
57     if (evel_rc != EVEL_SUCCESS)
58     {
59       printf("Post failed %d (%s)", evel_rc, evel_error_string());
60     }
61   }
62   else
63   {
64     printf("New heartbeat failed");
65   }
66
67   /***************************************************************************/
68   /* Raise a measurement                                                     */
69   /***************************************************************************/
70   demo_measurement();
71
72   /***************************************************************************/
73   /* Terminate                                                               */
74   /***************************************************************************/
75   sleep(1);
76   evel_terminate();
77   printf("Terminated\n");
78
79   return 0;
80 }
81
82 /**************************************************************************//**
83  * Create and send a measurement event.
84  *****************************************************************************/
85 void demo_measurement(void)
86 {
87   EVENT_MEASUREMENT * measurement = NULL;
88   MEASUREMENT_LATENCY_BUCKET * bucket = NULL;
89   MEASUREMENT_VNIC_PERFORMANCE * vnic_use = NULL;
90   EVEL_ERR_CODES evel_rc = EVEL_SUCCESS;
91   MEASUREMENT_CPU_USE * cpu_use = NULL;
92
93   /***************************************************************************/
94   /* Measurement                                                             */
95   /***************************************************************************/
96   measurement = evel_new_measurement(5.5);
97   if (measurement != NULL)
98   {
99     printf("New measurement created...\n");
100     evel_measurement_type_set(measurement, "Perf management...");
101     evel_measurement_conc_sess_set(measurement, 1);
102     evel_measurement_cfg_ents_set(measurement, 2);
103     evel_measurement_mean_req_lat_set(measurement, 4.4);
104     evel_measurement_request_rate_set(measurement, 6);
105
106   cpu_use = evel_measurement_new_cpu_use_add(measurement, "cpu1", 11.11);
107   evel_measurement_cpu_use_idle_set(cpu_use,22.22);
108   evel_measurement_cpu_use_interrupt_set(cpu_use,33.33);
109   evel_measurement_cpu_use_nice_set(cpu_use,44.44);
110   evel_measurement_cpu_use_softirq_set(cpu_use,55.55);
111   evel_measurement_cpu_use_steal_set(cpu_use,66.66);
112   evel_measurement_cpu_use_system_set(cpu_use,77.77);
113   evel_measurement_cpu_use_usageuser_set(cpu_use,88.88);
114   evel_measurement_cpu_use_wait_set(cpu_use,99.99);
115
116   cpu_use = evel_measurement_new_cpu_use_add(measurement, "cpu2", 22.22);
117   evel_measurement_cpu_use_idle_set(cpu_use,12.22);
118   evel_measurement_cpu_use_interrupt_set(cpu_use,33.33);
119   evel_measurement_cpu_use_nice_set(cpu_use,44.44);
120   evel_measurement_cpu_use_softirq_set(cpu_use,55.55);
121   evel_measurement_cpu_use_steal_set(cpu_use,66.66);
122   evel_measurement_cpu_use_system_set(cpu_use,77.77);
123   evel_measurement_cpu_use_usageuser_set(cpu_use,88.88);
124   evel_measurement_cpu_use_wait_set(cpu_use,19.99);
125
126     evel_measurement_fsys_use_add(measurement,"00-11-22",100.11, 100.22, 33,
127                                   200.11, 200.22, 44);
128     evel_measurement_fsys_use_add(measurement,"33-44-55",300.11, 300.22, 55,
129                                   400.11, 400.22, 66);
130
131     bucket = evel_new_meas_latency_bucket(20);
132     evel_meas_latency_bucket_low_end_set(bucket, 0.0);
133     evel_meas_latency_bucket_high_end_set(bucket, 10.0);
134     evel_meas_latency_bucket_add(measurement, bucket);
135
136     bucket = evel_new_meas_latency_bucket(30);
137     evel_meas_latency_bucket_low_end_set(bucket, 10.0);
138     evel_meas_latency_bucket_high_end_set(bucket, 20.0);
139     evel_meas_latency_bucket_add(measurement, bucket);
140
141     vnic_use = evel_measurement_new_vnic_performance("eth0", "true");
142   evel_vnic_performance_rx_octets_delta_set(vnic_use, 47656465465);
143   evel_vnic_performance_rx_total_pkt_acc_set(vnic_use, 4765764654444);
144   evel_vnic_performance_rx_total_pkt_delta_set(vnic_use, 4545665656);
145   evel_vnic_performance_rx_ucast_pkt_acc_set(vnic_use, 4765745546.);
146   evel_vnic_performance_rx_ucast_pkt_delta_set(vnic_use, 4768765.78347856);
147   evel_vnic_performance_tx_bcast_pkt_acc_set(vnic_use, 747665.347647);
148   evel_vnic_performance_tx_bcast_pkt_delta_set(vnic_use, 3468765.4774);
149   evel_vnic_performance_tx_discarded_pkt_acc_set(vnic_use, 53625345.53);
150   evel_vnic_performance_tx_discarded_pkt_delta_set(vnic_use, 5465345.72455);
151     evel_meas_vnic_performance_add(measurement, vnic_use);
152
153     vnic_use = evel_measurement_new_vnic_performance("eth1", "false");
154   evel_vnic_performance_rx_total_pkt_acc_set(vnic_use, 4765764654444);
155   evel_vnic_performance_rx_total_pkt_delta_set(vnic_use, 4545665656);
156   evel_vnic_performance_rx_ucast_pkt_acc_set(vnic_use, 4765745546.);
157   evel_vnic_performance_rx_ucast_pkt_delta_set(vnic_use, 4768765.78347856);
158   evel_vnic_performance_tx_bcast_pkt_acc_set(vnic_use, 747665.347647);
159     evel_meas_vnic_performance_add(measurement, vnic_use);
160
161     evel_measurement_errors_set(measurement, 1, 0, 2, 1);
162
163     evel_measurement_feature_use_add(measurement, "FeatureA", 123);
164     evel_measurement_feature_use_add(measurement, "FeatureB", 567);
165
166     evel_measurement_codec_use_add(measurement, "G711a", 91);
167     evel_measurement_codec_use_add(measurement, "G729ab", 92);
168
169     evel_measurement_media_port_use_set(measurement, 1234);
170
171     evel_measurement_vnfc_scaling_metric_set(measurement, 1234.5678);
172
173     evel_measurement_custom_measurement_add(measurement,
174                                             "Group1", "Name1", "Value1");
175     evel_measurement_custom_measurement_add(measurement,
176                                             "Group2", "Name1", "Value1");
177     evel_measurement_custom_measurement_add(measurement,
178                                             "Group2", "Name2", "Value2");
179
180     evel_rc = evel_post_event((EVENT_HEADER *)measurement);
181     if (evel_rc == EVEL_SUCCESS)
182     {
183       printf("Post OK!\n");
184     }
185     else
186     {
187       printf("Post Failed %d (%s)\n", evel_rc, evel_error_string());
188     }
189   }
190   else
191   {
192     printf("Failed to create event (%s)\n", evel_error_string());
193   }
194
195   printf("   Processed Measurement\n");
196 }