aboutsummaryrefslogtreecommitdiffstats
path: root/VES5.0/evel/evel-library/code/evel_unit/evel_unit.c
diff options
context:
space:
mode:
Diffstat (limited to 'VES5.0/evel/evel-library/code/evel_unit/evel_unit.c')
-rw-r--r--VES5.0/evel/evel-library/code/evel_unit/evel_unit.c3498
1 files changed, 0 insertions, 3498 deletions
diff --git a/VES5.0/evel/evel-library/code/evel_unit/evel_unit.c b/VES5.0/evel/evel-library/code/evel_unit/evel_unit.c
deleted file mode 100644
index ba4739b0..00000000
--- a/VES5.0/evel/evel-library/code/evel_unit/evel_unit.c
+++ /dev/null
@@ -1,3498 +0,0 @@
-/**************************************************************************//**
- * @file
- * Unit tests for JSON encoding and throttling.
- *
- * This software is intended to show the essential elements of the library's
- * use.
- *
- * License
- * -------
- *
- * Copyright(c) <2016>, AT&T Intellectual Property. All other rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement: This product includes software
- * developed by the AT&T.
- * 4. Neither the name of AT&T nor the names of its contributors may be used to
- * endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY ''AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <sys/time.h>
-
-#include "evel.h"
-#include "evel_internal.h"
-#include "evel_throttle.h"
-#include "metadata.h"
-
-typedef enum {
- SERVICE_NONE,
- SERVICE_CODEC,
- SERVICE_TRANSCODING,
- SERVICE_RTCP,
- SERVICE_EOC_VQM,
- SERVICE_MARKER
-} SERVICE_TEST;
-
-/*****************************************************************************/
-/* Local prototypes. */
-/*****************************************************************************/
-static void test_encode_heartbeat();
-static void test_encode_header_overrides();
-static void test_encode_fault();
-static void test_encode_fault_with_escaping();
-static void test_encode_measurement();
-static void test_encode_mobile_mand();
-static void test_encode_mobile_opts();
-static void test_encode_other();
-static void test_encode_report();
-static void test_encode_service();
-static void test_encode_service_subset(const SERVICE_TEST service_test);
-static void test_encode_signaling();
-static void test_encode_state_change();
-static void test_encode_syslog();
-static void test_json_response_junk();
-static void test_json_provide_throttle_state();
-static void test_json_measurement_interval();
-static void test_json_throttle_spec_field();
-static void test_json_throttle_spec_nv_pair();
-static void test_json_throttle_spec_two_domains();
-static void test_json_throttle_spec_bad_command_type();
-static void test_encode_fault_throttled();
-static void test_encode_measurement_throttled();
-static void test_encode_mobile_throttled();
-static void test_encode_other_throttled();
-static void test_encode_report_throttled();
-static void test_encode_service_throttled();
-static void test_encode_signaling_throttled();
-static void test_encode_state_change_throttled();
-static void test_encode_syslog_throttled();
-static void compare_strings(char * expected,
- char * actual,
- int max_size,
- char * description);
-
-/**************************************************************************//**
- * Main function.
- *
- * Runs all unit test cases, and fails hard on the first failure.
- *
- * @param[in] argc Argument count.
- * @param[in] argv Argument vector - for usage see usage_text.
- *****************************************************************************/
-int main(int argc, char ** argv)
-{
- assert(argc >= 0);
- assert(argv != NULL);
-
- /***************************************************************************/
- /* Fix our timezone to UTC. */
- /***************************************************************************/
- putenv("TZ=UTC");
-
- /***************************************************************************/
- /* Initialize metadata. */
- /***************************************************************************/
- openstack_metadata_initialize();
-
- /***************************************************************************/
- /* Minimal initialisation to exercise the encoders. */
- /***************************************************************************/
- functional_role = "UNIT TEST";
- log_initialize(EVEL_LOG_DEBUG, "EVEL");
-
- /***************************************************************************/
- /* Test each encoder. */
- /***************************************************************************/
- test_encode_heartbeat();
- test_encode_header_overrides();
- test_encode_fault();
- test_encode_measurement();
- test_encode_mobile_mand();
- test_encode_mobile_opts();
- test_encode_other();
- test_encode_report();
- test_encode_service();
- test_encode_signaling();
- test_encode_state_change();
- test_encode_syslog();
-
- /***************************************************************************/
- /* Test JSON Throttle. */
- /***************************************************************************/
- test_json_response_junk();
- test_json_provide_throttle_state();
- test_json_measurement_interval();
- test_json_throttle_spec_field();
- test_json_throttle_spec_nv_pair();
- test_json_throttle_spec_two_domains();
- test_json_throttle_spec_bad_command_type();
-
- /***************************************************************************/
- /* Test each encoder with throttling applied. */
- /***************************************************************************/
- test_encode_fault_throttled();
- test_encode_measurement_throttled();
- test_encode_mobile_throttled();
- test_encode_other_throttled();
- test_encode_report_throttled();
- test_encode_service_throttled();
- test_encode_signaling_throttled();
- test_encode_state_change_throttled();
- test_encode_syslog_throttled();
-
- /***************************************************************************/
- /* Test character escaping. */
- /***************************************************************************/
- test_encode_fault_with_escaping();
-
- printf ("\nAll Tests Passed\n");
-
- return 0;
-}
-
-/*****************************************************************************/
-/* We link with this gettimeofday so that we get a fixed result */
-/*****************************************************************************/
-int gettimeofday(struct timeval *tv,
- struct timezone *tz __attribute__((unused)))
-{
- tv->tv_sec = 1;
- tv->tv_usec = 2;
- return 0;
-}
-
-void test_encode_heartbeat()
-{
- char * expected =
- "{\"event\": {"
- "\"commonEventHeader\": {"
- "\"domain\": \"heartbeat\", "
- "\"eventId\": \"121\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 121, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"eventType\": \"Autonomous heartbeat\", "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
-
- /***************************************************************************/
- /* Test the VM name/uuid once. */
- /***************************************************************************/
- evel_set_next_event_sequence(121);
-
- EVENT_HEADER * heartbeat = evel_new_heartbeat();
- assert(heartbeat != NULL);
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) heartbeat);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Heartbeat");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(heartbeat);
-}
-
-void test_encode_header_overrides()
-{
- char * expected =
- "{\"event\": {"
- "\"commonEventHeader\": {"
- "\"domain\": \"heartbeat\", "
- "\"eventId\": \"121\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"entity_name_override\", "
- "\"sequence\": 121, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1001, "
- "\"version\": 1.2, "
- "\"eventType\": \"Autonomous heartbeat\", "
- "\"reportingEntityId\": \"entity_id_override\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
-
- /***************************************************************************/
- /* Test the VM name/uuid once. */
- /***************************************************************************/
- evel_set_next_event_sequence(121);
-
- EVENT_HEADER * heartbeat = evel_new_heartbeat();
- assert(heartbeat != NULL);
-
- evel_start_epoch_set(heartbeat, 1001);
- evel_last_epoch_set(heartbeat, 1000);
- evel_reporting_entity_name_set(heartbeat, "entity_name_override");
- evel_reporting_entity_id_set(heartbeat, "entity_id_override");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) heartbeat);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Heartbeat");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(heartbeat);
-}
-
-void test_encode_fault()
-{
- char * expected =
- "{\"event\": {"
- "\"commonEventHeader\": {"
- "\"domain\": \"fault\", "
- "\"eventId\": \"122\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 122, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"eventType\": \"Bad things happen...\", "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"faultFields\": {"
- "\"alarmCondition\": \"My alarm condition\", "
- "\"eventSeverity\": \"MAJOR\", "
- "\"eventSourceType\": \"other\", "
- "\"specificProblem\": \"It broke very badly\", "
- "\"eventCategory\": \"link\", "
- "\"vfStatus\": \"Active\", "
- "\"faultFieldsVersion\": 1.1, "
- "\"alarmAdditionalInformation\": ["
- "{\"name\": \"name1\", "
- "\"value\": \"value1\"}, "
- "{\"name\": \"name2\", "
- "\"value\": \"value2\"}], "
- "\"alarmInterfaceA\": \"My Interface Card\""
- "}}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- evel_set_next_event_sequence(122);
- EVENT_FAULT * fault = evel_new_fault("My alarm condition",
- "It broke very badly",
- EVEL_PRIORITY_NORMAL,
- EVEL_SEVERITY_MAJOR,
- EVEL_SOURCE_HOST,
- EVEL_VF_STATUS_PREP_TERMINATE);
- assert(fault != NULL);
- evel_fault_type_set(fault, "Bad things happen...");
- evel_fault_interface_set(fault, "My Interface Card");
- evel_fault_addl_info_add(fault, "name1", "value1");
- evel_fault_addl_info_add(fault, "name2", "value2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) fault);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Fault");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(fault);
-}
-
-void test_encode_measurement()
-{
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"measurementsForVfScaling\", "
- "\"eventId\": \"123\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 3000, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"entity_name\", "
- "\"sequence\": 123, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 2000, "
- "\"version\": 1.2, "
- "\"eventType\": \"Perf management...\", "
- "\"reportingEntityId\": \"entity_id\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"measurementsForVfScalingFields\": "
- "{"
- "\"measurementInterval\": 5.500000, "
- "\"concurrentSessions\": 1, "
- "\"configuredEntities\": 2, "
- "\"cpuUsageArray\": ["
- "{\"cpuIdentifier\": \"cpu1\", "
- "\"percentUsage\": 11.110000}, "
- "{\"cpuIdentifier\": \"cpu2\", "
- "\"percentUsage\": 22.220000}], "
- "\"filesystemUsageArray\": ["
- "{\"blockConfigured\": 100.110000, "
- "\"blockIops\": 33, "
- "\"blockUsed\": 100.220000, "
- "\"ephemeralConfigured\": 100.110000, "
- "\"ephemeralIops\": 44, "
- "\"ephemeralUsed\": 200.220000, "
- "\"filesystemName\": \"00-11-22\"}, "
- "{\"blockConfigured\": 300.110000, "
- "\"blockIops\": 55, "
- "\"blockUsed\": 300.220000, "
- "\"ephemeralConfigured\": 300.110000, "
- "\"ephemeralIops\": 66, "
- "\"ephemeralUsed\": 400.220000, "
- "\"filesystemName\": \"33-44-55\"}], "
- "\"latencyDistribution\": ["
- "{\"countsInTheBucket\": 20}, "
- "{\"lowEndOfLatencyBucket\": 10.000000, "
- "\"highEndOfLatencyBucket\": 20.000000, "
- "\"countsInTheBucket\": 30}], "
- "\"meanRequestLatency\": 4.400000, "
- "\"memoryConfigured\": 6.600000, "
- "\"memoryUsed\": 3.300000, "
- "\"requestRate\": 7, "
- "\"vNicUsageArray\": ["
- "{"
- "\"bytesIn\": 3, "
- "\"bytesOut\": 4, "
- "\"packetsIn\": 100, "
- "\"packetsOut\": 200, "
- "\"vNicIdentifier\": \"eth0\""
- "}, "
- "{"
- "\"bytesIn\": 13, "
- "\"bytesOut\": 14, "
- "\"packetsIn\": 110, "
- "\"packetsOut\": 240, "
- "\"vNicIdentifier\": \"eth1\", "
- "\"broadcastPacketsIn\": 11, "
- "\"broadcastPacketsOut\": 12, "
- "\"multicastPacketsIn\": 15, "
- "\"multicastPacketsOut\": 16, "
- "\"unicastPacketsIn\": 17, "
- "\"unicastPacketsOut\": 18"
- "}"
- "], "
- "\"aggregateCpuUsage\": 8.800000, "
- "\"numberOfMediaPortsInUse\": 1234, "
- "\"vnfcScalingMetric\": 1234.567800, "
- "\"errors\": {"
- "\"receiveDiscards\": 1, "
- "\"receiveErrors\": 0, "
- "\"transmitDiscards\": 2, "
- "\"transmitErrors\": 1}, "
- "\"featureUsageArray\": ["
- "{\"featureIdentifier\": \"FeatureA\", "
- "\"featureUtilization\": 123}, "
- "{\"featureIdentifier\": \"FeatureB\", "
- "\"featureUtilization\": 567}], "
- "\"codecUsageArray\": ["
- "{\"codecIdentifier\": \"G711a\", "
- "\"numberInUse\": 91}, "
- "{\"codecIdentifier\": \"G729ab\", "
- "\"numberInUse\": 92}], "
- "\"additionalMeasurements\": ["
- "{\"name\": \"Group1\", "
- "\"measurements\": ["
- "{\"name\": \"Name1\", "
- "\"value\": \"Value1\"}]}, "
- "{\"name\": \"Group2\", "
- "\"measurements\": ["
- "{\"name\": \"Name1\", "
- "\"value\": \"Value1\"}, "
- "{\"name\": \"Name2\", "
- "\"value\": \"Value2\"}]}], "
- "\"measurementsForVfScalingVersion\": 1.1}}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_MEASUREMENT * measurement = NULL;
- MEASUREMENT_LATENCY_BUCKET * bucket = NULL;
- MEASUREMENT_VNIC_PERFORMANCE * vnic_use = NULL;
- MEASUREMENT_CPU_USE *cpu_use;
-
- /***************************************************************************/
- /* Measurement. */
- /***************************************************************************/
- evel_set_next_event_sequence(123);
- measurement = evel_new_measurement(5.5);
- assert(measurement != NULL);
- evel_measurement_type_set(measurement, "Perf management...");
- evel_measurement_conc_sess_set(measurement, 1);
- evel_measurement_cfg_ents_set(measurement, 2);
- evel_measurement_mean_req_lat_set(measurement, 4.4);
- evel_measurement_request_rate_set(measurement, 7);
-
- cpu_use = evel_measurement_new_cpu_use_add(measurement, "cpu1", 11.11);
- evel_measurement_cpu_use_idle_set(cpu_use,22.22);
- evel_measurement_cpu_use_interrupt_set(cpu_use,33.33);
- evel_measurement_cpu_use_nice_set(cpu_use,44.44);
- evel_measurement_cpu_use_softirq_set(cpu_use,55.55);
- evel_measurement_cpu_use_steal_set(cpu_use,66.66);
- evel_measurement_cpu_use_system_set(cpu_use,77.77);
- evel_measurement_cpu_use_usageuser_set(cpu_use,88.88);
- evel_measurement_cpu_use_wait_set(cpu_use,99.99);
-
- cpu_use = evel_measurement_new_cpu_use_add(measurement, "cpu2", 22.22);
- evel_measurement_cpu_use_idle_set(cpu_use,12.22);
- evel_measurement_cpu_use_interrupt_set(cpu_use,33.33);
- evel_measurement_cpu_use_nice_set(cpu_use,44.44);
- evel_measurement_cpu_use_softirq_set(cpu_use,55.55);
- evel_measurement_cpu_use_steal_set(cpu_use,66.66);
- evel_measurement_cpu_use_system_set(cpu_use,77.77);
- evel_measurement_cpu_use_usageuser_set(cpu_use,88.88);
- evel_measurement_cpu_use_wait_set(cpu_use,19.99);
-
-
- evel_measurement_fsys_use_add(measurement,"00-11-22",100.11, 100.22, 33,
- 200.11, 200.22, 44);
- evel_measurement_fsys_use_add(measurement,"33-44-55",300.11, 300.22, 55,
- 400.11, 400.22, 66);
- evel_start_epoch_set(&measurement->header, 2000);
- evel_last_epoch_set(&measurement->header, 3000);
- evel_reporting_entity_name_set(&measurement->header, "entity_name");
- evel_reporting_entity_id_set(&measurement->header, "entity_id");
-
- /***************************************************************************/
- /* Latency Bucket with no optional parameters. */
- /***************************************************************************/
- bucket = evel_new_meas_latency_bucket(20);
- evel_meas_latency_bucket_add(measurement, bucket);
-
- /***************************************************************************/
- /* Latency Bucket with all optional parameters. */
- /***************************************************************************/
- bucket = evel_new_meas_latency_bucket(30);
- evel_meas_latency_bucket_low_end_set(bucket, 10.0);
- evel_meas_latency_bucket_high_end_set(bucket, 20.0);
- evel_meas_latency_bucket_add(measurement, bucket);
-
- /***************************************************************************/
- /* vNIC Use with no optional parameters. */
- /***************************************************************************/
- vnic_use = evel_new_measurement_vnic_use("eth0", 100, 200, 3, 4);
- evel_meas_vnic_use_add(measurement, vnic_use);
-
- /***************************************************************************/
- /* vNIC Use with all optional parameters. */
- /***************************************************************************/
- vnic_use = evel_new_measurement_vnic_use("eth1", 110, 240, 13, 14);
- evel_vnic_use_bcast_pkt_in_set(vnic_use, 11);
- evel_vnic_use_bcast_pkt_out_set(vnic_use, 12);
- evel_vnic_use_mcast_pkt_in_set(vnic_use, 15);
- evel_vnic_use_mcast_pkt_out_set(vnic_use, 16);
- evel_vnic_use_ucast_pkt_in_set(vnic_use, 17);
- evel_vnic_use_ucast_pkt_out_set(vnic_use, 18);
- evel_meas_vnic_use_add(measurement, vnic_use);
-
- evel_measurement_errors_set(measurement, 1, 0, 2, 1);
-
- evel_measurement_feature_use_add(measurement, "FeatureA", 123);
- evel_measurement_feature_use_add(measurement, "FeatureB", 567);
-
- evel_measurement_codec_use_add(measurement, "G711a", 91);
- evel_measurement_codec_use_add(measurement, "G729ab", 92);
-
- evel_measurement_media_port_use_set(measurement, 1234);
-
- evel_measurement_vnfc_scaling_metric_set(measurement, 1234.5678);
-
- evel_measurement_custom_measurement_add(measurement,
- "Group1", "Name1", "Value1");
- evel_measurement_custom_measurement_add(measurement,
- "Group2", "Name1", "Value1");
- evel_measurement_custom_measurement_add(measurement,
- "Group2", "Name2", "Value2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) measurement);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Measurement");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(measurement);
-}
-
-void test_encode_mobile_mand()
-{
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"mobileFlow\", "
- "\"eventId\": \"1241\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 1241, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"mobileFlowFields\": {"
- "\"flowDirection\": \"Outbound\", "
- "\"gtpPerFlowMetrics\": {"
- "\"avgBitErrorRate\": 12.300000, "
- "\"avgPacketDelayVariation\": 3.120000, "
- "\"avgPacketLatency\": 100, "
- "\"avgReceiveThroughput\": 2100, "
- "\"avgTransmitThroughput\": 500, "
- "\"flowActivationEpoch\": 1470409421, "
- "\"flowActivationMicrosec\": 987, "
- "\"flowDeactivationEpoch\": 1470409431, "
- "\"flowDeactivationMicrosec\": 11, "
- "\"flowDeactivationTime\": \"Fri, 05 Aug 2016 15:03:51 +0000\", "
- "\"flowStatus\": \"Working\", "
- "\"maxPacketDelayVariation\": 87, "
- "\"numActivationFailures\": 3, "
- "\"numBitErrors\": 17, "
- "\"numBytesReceived\": 123654, "
- "\"numBytesTransmitted\": 4561, "
- "\"numDroppedPackets\": 0, "
- "\"numL7BytesReceived\": 12, "
- "\"numL7BytesTransmitted\": 10, "
- "\"numLostPackets\": 1, "
- "\"numOutOfOrderPackets\": 3, "
- "\"numPacketErrors\": 7, "
- "\"numPacketsReceivedExclRetrans\": 899, "
- "\"numPacketsReceivedInclRetrans\": 901, "
- "\"numPacketsTransmittedInclRetrans\": 302, "
- "\"numRetries\": 6, "
- "\"numTimeouts\": 2, "
- "\"numTunneledL7BytesReceived\": 0, "
- "\"roundTripTime\": 110, "
- "\"timeToFirstByte\": 225"
- "}, "
- "\"ipProtocolType\": \"TCP\", "
- "\"ipVersion\": \"IPv4\", "
- "\"otherEndpointIpAddress\": \"2.3.4.1\", "
- "\"otherEndpointPort\": 2341, "
- "\"reportingEndpointIpAddr\": \"4.2.3.1\", "
- "\"reportingEndpointPort\": 4321"
- "}}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- MOBILE_GTP_PER_FLOW_METRICS * metrics = NULL;
- EVENT_MOBILE_FLOW * mobile_flow = NULL;
-
- /***************************************************************************/
- /* Mobile. */
- /***************************************************************************/
- evel_set_next_event_sequence(1241);
-
- metrics = evel_new_mobile_gtp_flow_metrics(12.3,
- 3.12,
- 100,
- 2100,
- 500,
- 1470409421,
- 987,
- 1470409431,
- 11,
- (time_t)1470409431,
- "Working",
- 87,
- 3,
- 17,
- 123654,
- 4561,
- 0,
- 12,
- 10,
- 1,
- 3,
- 7,
- 899,
- 901,
- 302,
- 6,
- 2,
- 0,
- 110,
- 225);
- assert(metrics != NULL);
- mobile_flow = evel_new_mobile_flow("Outbound",
- metrics,
- "TCP",
- "IPv4",
- "2.3.4.1",
- 2341,
- "4.2.3.1",
- 4321);
- assert(mobile_flow != NULL);
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) mobile_flow);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Mobile");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(mobile_flow);
-}
-
-void test_encode_mobile_opts()
-{
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"mobileFlow\", "
- "\"eventId\": \"1242\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 1242, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"eventType\": \"Mobile flow...\", "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"mobileFlowFields\": {"
- "\"flowDirection\": \"Inbound\", "
- "\"gtpPerFlowMetrics\": {"
- "\"avgBitErrorRate\": 132.000100, "
- "\"avgPacketDelayVariation\": 31.200000, "
- "\"avgPacketLatency\": 101, "
- "\"avgReceiveThroughput\": 2101, "
- "\"avgTransmitThroughput\": 501, "
- "\"flowActivationEpoch\": 1470409422, "
- "\"flowActivationMicrosec\": 988, "
- "\"flowDeactivationEpoch\": 1470409432, "
- "\"flowDeactivationMicrosec\": 12, "
- "\"flowDeactivationTime\": \"Fri, 05 Aug 2016 15:03:52 +0000\", "
- "\"flowStatus\": \"Inactive\", "
- "\"maxPacketDelayVariation\": 88, "
- "\"numActivationFailures\": 4, "
- "\"numBitErrors\": 18, "
- "\"numBytesReceived\": 123655, "
- "\"numBytesTransmitted\": 4562, "
- "\"numDroppedPackets\": 1, "
- "\"numL7BytesReceived\": 13, "
- "\"numL7BytesTransmitted\": 11, "
- "\"numLostPackets\": 2, "
- "\"numOutOfOrderPackets\": 4, "
- "\"numPacketErrors\": 8, "
- "\"numPacketsReceivedExclRetrans\": 900, "
- "\"numPacketsReceivedInclRetrans\": 902, "
- "\"numPacketsTransmittedInclRetrans\": 303, "
- "\"numRetries\": 7, "
- "\"numTimeouts\": 3, "
- "\"numTunneledL7BytesReceived\": 1, "
- "\"roundTripTime\": 111, "
- "\"timeToFirstByte\": 226, "
- "\"ipTosCountList\": ["
- "[\"1\", 13], "
- "[\"4\", 99], "
- "[\"17\", 1]], "
- "\"ipTosList\": [\"1\", \"4\", \"17\"], "
- "\"tcpFlagList\": [\"CWR\", \"URG\"], "
- "\"tcpFlagCountList\": [[\"CWR\", 10], [\"URG\", 121]], "
- "\"mobileQciCosList\": [\"conversational\", \"65\"], "
- "\"mobileQciCosCountList\": [[\"conversational\", 11], [\"65\", 122]], "
- "\"durConnectionFailedStatus\": 12, "
- "\"durTunnelFailedStatus\": 13, "
- "\"flowActivatedBy\": \"Remote\", "
- "\"flowActivationTime\": \"Fri, 05 Aug 2016 15:03:43 +0000\", "
- "\"flowDeactivatedBy\": \"Remote\", "
- "\"gtpConnectionStatus\": \"Connected\", "
- "\"gtpTunnelStatus\": \"Not tunneling\", "
- "\"largePacketRtt\": 80, "
- "\"largePacketThreshold\": 600.000000, "
- "\"maxReceiveBitRate\": 1357924680, "
- "\"maxTransmitBitRate\": 235711, "
- "\"numGtpEchoFailures\": 1, "
- "\"numGtpTunnelErrors\": 4, "
- "\"numHttpErrors\": 2"
- "}, "
- "\"ipProtocolType\": \"UDP\", "
- "\"ipVersion\": \"IPv6\", "
- "\"otherEndpointIpAddress\": \"2.3.4.2\", "
- "\"otherEndpointPort\": 2342, "
- "\"reportingEndpointIpAddr\": \"4.2.3.2\", "
- "\"reportingEndpointPort\": 4322, "
- "\"applicationType\": \"Demo application\", "
- "\"appProtocolType\": \"GSM\", "
- "\"appProtocolVersion\": \"1\", "
- "\"cid\": \"65535\", "
- "\"connectionType\": \"S1-U\", "
- "\"ecgi\": \"e65535\", "
- "\"gtpProtocolType\": \"GTP-U\", "
- "\"gtpVersion\": \"1\", "
- "\"httpHeader\": \"http://www.something.com\", "
- "\"imei\": \"209917614823\", "
- "\"imsi\": \"355251/05/850925/8\", "
- "\"lac\": \"1\", "
- "\"mcc\": \"410\", "
- "\"mnc\": \"04\", "
- "\"msisdn\": \"6017123456789\", "
- "\"otherFunctionalRole\": \"MME\", "
- "\"rac\": \"514\", "
- "\"radioAccessTechnology\": \"LTE\", "
- "\"sac\": \"1\", "
- "\"samplingAlgorithm\": 1, "
- "\"tac\": \"2099\", "
- "\"tunnelId\": \"Tunnel 1\", "
- "\"vlanId\": \"15\""
- "}}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- MOBILE_GTP_PER_FLOW_METRICS * metrics = NULL;
- EVENT_MOBILE_FLOW * mobile_flow = NULL;
-
- /***************************************************************************/
- /* Mobile. */
- /***************************************************************************/
- evel_set_next_event_sequence(1242);
-
- metrics = evel_new_mobile_gtp_flow_metrics(132.0001,
- 31.2,
- 101,
- 2101,
- 501,
- 1470409422,
- 988,
- 1470409432,
- 12,
- (time_t)1470409432,
- "Inactive",
- 88,
- 4,
- 18,
- 123655,
- 4562,
- 1,
- 13,
- 11,
- 2,
- 4,
- 8,
- 900,
- 902,
- 303,
- 7,
- 3,
- 1,
- 111,
- 226);
- assert(metrics != NULL);
-
- evel_mobile_gtp_metrics_dur_con_fail_set(metrics, 12);
- evel_mobile_gtp_metrics_dur_tun_fail_set(metrics, 13);
- evel_mobile_gtp_metrics_act_by_set(metrics, "Remote");
- evel_mobile_gtp_metrics_act_time_set(metrics, (time_t)1470409423);
- evel_mobile_gtp_metrics_deact_by_set(metrics, "Remote");
- evel_mobile_gtp_metrics_con_status_set(metrics, "Connected");
- evel_mobile_gtp_metrics_tun_status_set(metrics, "Not tunneling");
- evel_mobile_gtp_metrics_iptos_set(metrics, 1, 13);
- evel_mobile_gtp_metrics_iptos_set(metrics, 17, 1);
- evel_mobile_gtp_metrics_iptos_set(metrics, 4, 99);
- evel_mobile_gtp_metrics_large_pkt_rtt_set(metrics, 80);
- evel_mobile_gtp_metrics_large_pkt_thresh_set(metrics, 600.0);
- evel_mobile_gtp_metrics_max_rcv_bit_rate_set(metrics, 1357924680);
- evel_mobile_gtp_metrics_max_trx_bit_rate_set(metrics, 235711);
- evel_mobile_gtp_metrics_num_echo_fail_set(metrics, 1);
- evel_mobile_gtp_metrics_num_tun_fail_set(metrics, 4);
- evel_mobile_gtp_metrics_num_http_errors_set(metrics, 2);
- evel_mobile_gtp_metrics_tcp_flag_count_add(metrics, EVEL_TCP_CWR, 10);
- evel_mobile_gtp_metrics_tcp_flag_count_add(metrics, EVEL_TCP_URG, 121);
- evel_mobile_gtp_metrics_qci_cos_count_add(
- metrics, EVEL_QCI_COS_UMTS_CONVERSATIONAL, 11);
- evel_mobile_gtp_metrics_qci_cos_count_add(
- metrics, EVEL_QCI_COS_LTE_65, 122);
-
- mobile_flow = evel_new_mobile_flow("Inbound",
- metrics,
- "UDP",
- "IPv6",
- "2.3.4.2",
- 2342,
- "4.2.3.2",
- 4322);
- assert(mobile_flow != NULL);
-
- evel_mobile_flow_type_set(mobile_flow, "Mobile flow...");
- evel_mobile_flow_app_type_set(mobile_flow, "Demo application");
- evel_mobile_flow_app_prot_type_set(mobile_flow, "GSM");
- evel_mobile_flow_app_prot_ver_set(mobile_flow, "1");
- evel_mobile_flow_cid_set(mobile_flow, "65535");
- evel_mobile_flow_con_type_set(mobile_flow, "S1-U");
- evel_mobile_flow_ecgi_set(mobile_flow, "e65535");
- evel_mobile_flow_gtp_prot_type_set(mobile_flow, "GTP-U");
- evel_mobile_flow_gtp_prot_ver_set(mobile_flow, "1");
- evel_mobile_flow_http_header_set(mobile_flow,
- "http://www.something.com");
- evel_mobile_flow_imei_set(mobile_flow, "209917614823");
- evel_mobile_flow_imsi_set(mobile_flow, "355251/05/850925/8");
- evel_mobile_flow_lac_set(mobile_flow, "1");
- evel_mobile_flow_mcc_set(mobile_flow, "410");
- evel_mobile_flow_mnc_set(mobile_flow, "04");
- evel_mobile_flow_msisdn_set(mobile_flow, "6017123456789");
- evel_mobile_flow_other_func_role_set(mobile_flow, "MME");
- evel_mobile_flow_rac_set(mobile_flow, "514");
- evel_mobile_flow_radio_acc_tech_set(mobile_flow, "LTE");
- evel_mobile_flow_sac_set(mobile_flow, "1");
- evel_mobile_flow_samp_alg_set(mobile_flow, 1);
- evel_mobile_flow_tac_set(mobile_flow, "2099");
- evel_mobile_flow_tunnel_id_set(mobile_flow, "Tunnel 1");
- evel_mobile_flow_vlan_id_set(mobile_flow, "15");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) mobile_flow);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Mobile");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(mobile_flow);
-}
-
-void test_encode_report()
-{
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"measurementsForVfReporting\", "
- "\"eventId\": \"125\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 125, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"eventType\": \"Perf reporting...\", "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"measurementsForVfReportingFields\": "
- "{\"measurementInterval\": 1.100000, "
- "\"featureUsageArray\": ["
- "{\"featureIdentifier\": \"FeatureA\", "
- "\"featureUtilization\": 123}, "
- "{\"featureIdentifier\": \"FeatureB\", "
- "\"featureUtilization\": 567}], "
- "\"additionalMeasurements\": ["
- "{\"name\": \"Group1\", "
- "\"measurements\": ["
- "{\"name\": \"Name1\", "
- "\"value\": \"Value1\"}]}, "
- "{\"name\": \"Group2\", "
- "\"measurements\": ["
- "{\"name\": \"Name1\", "
- "\"value\": \"Value1\"}, "
- "{\"name\": \"Name2\", "
- "\"value\": \"Value2\"}]}], "
- "\"measurementFieldsVersion\": 1.1}}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_REPORT * report = NULL;
-
- /***************************************************************************/
- /* Report. */
- /***************************************************************************/
- evel_set_next_event_sequence(125);
- report = evel_new_report(1.1);
- assert(report != NULL);
- evel_report_type_set(report, "Perf reporting...");
- evel_report_feature_use_add(report, "FeatureA", 123);
- evel_report_feature_use_add(report, "FeatureB", 567);
- evel_report_custom_measurement_add(report, "Group1", "Name1", "Value1");
- evel_report_custom_measurement_add(report, "Group2", "Name1", "Value1");
- evel_report_custom_measurement_add(report, "Group2", "Name2", "Value2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) report);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Report");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(report);
-}
-
-void test_encode_service()
-{
- test_encode_service_subset(SERVICE_NONE);
- test_encode_service_subset(SERVICE_CODEC);
- test_encode_service_subset(SERVICE_TRANSCODING);
- test_encode_service_subset(SERVICE_RTCP);
- test_encode_service_subset(SERVICE_EOC_VQM);
- test_encode_service_subset(SERVICE_MARKER);
-}
-
-void test_encode_service_subset(const SERVICE_TEST service_test)
-{
- char * expected_start =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"serviceEvents\", "
- "\"eventId\": \"2000\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 2000, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"eventType\": \"Service Event\", "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"serviceEventsFields\": {"
- "\"eventInstanceIdentifier\": "
- "{"
- "\"vendorId\": \"vendor_x_id\", "
- "\"eventId\": \"vendor_x_event_id\", "
- "\"productId\": \"vendor_x_product_id\", "
- "\"subsystemId\": \"vendor_x_subsystem_id\", "
- "\"eventFriendlyName\": \"vendor_x_frieldly_name\""
- "}, "
- "\"serviceEventsFieldsVersion\": 1.1, "
- "\"correlator\": \"vendor_x_correlator\", "
- "\"additionalFields\": ["
- "{\"name\": \"Name1\", \"value\": \"Value1\"}, "
- "{\"name\": \"Name2\", \"value\": \"Value2\"}, "
- "{\"name\": \"Name3\", \"value\": \"Value3\"}, "
- "{\"name\": \"Name4\", \"value\": \"Value4\"}]";
- char * expected_codec =
- ", "
- "\"codecSelected\": {"
- "\"codec\": \"PCMA\""
- "}";
- char * expected_transcoding =
- ", "
- "\"codecSelectedTranscoding\": {"
- "\"calleeSideCodec\": \"PCMA\", "
- "\"callerSideCodec\": \"G729A\""
- "}";
- char * expected_rtcp =
- ", "
- "\"midCallRtcp\": {"
- "\"rtcpData\": \"some_rtcp_data\""
- "}";
- char * expected_eoc_vqm =
- ", "
- "\"endOfCallVqmSummaries\": {"
- "\"adjacencyName\": \"vendor_x_adjacency\", "
- "\"endpointDescription\": \"Caller\", "
- "\"endpointJitter\": 66, "
- "\"endpointRtpOctetsDiscarded\": 100, "
- "\"endpointRtpOctetsReceived\": 200, "
- "\"endpointRtpOctetsSent\": 300, "
- "\"endpointRtpPacketsDiscarded\": 400, "
- "\"endpointRtpPacketsReceived\": 500, "
- "\"endpointRtpPacketsSent\": 600, "
- "\"localJitter\": 99, "
- "\"localRtpOctetsDiscarded\": 150, "
- "\"localRtpOctetsReceived\": 250, "
- "\"localRtpOctetsSent\": 350, "
- "\"localRtpPacketsDiscarded\": 450, "
- "\"localRtpPacketsReceived\": 550, "
- "\"localRtpPacketsSent\": 650, "
- "\"mosCqe\": 12.255000, "
- "\"packetsLost\": 157, "
- "\"packetLossPercent\": 0.232000, "
- "\"rFactor\": 11, "
- "\"roundTripDelay\": 15"
- "}";
- char * expected_marker =
- ", "
- "\"marker\": {"
- "\"phoneNumber\": \"0888888888\""
- "}";
- char * expected_end =
- "}}}";
-
- char * expected_middle = NULL;
- switch (service_test)
- {
- case SERVICE_NONE:
- expected_middle = "";
- break;
- case SERVICE_CODEC:
- expected_middle = expected_codec;
- break;
- case SERVICE_TRANSCODING:
- expected_middle = expected_transcoding;
- break;
- case SERVICE_RTCP:
- expected_middle = expected_rtcp;
- break;
- case SERVICE_EOC_VQM:
- expected_middle = expected_eoc_vqm;
- break;
- case SERVICE_MARKER:
- expected_middle = expected_marker;
- break;
- }
- assert(expected_middle != NULL);
-
- int offset = 0;
- char expected[EVEL_MAX_JSON_BODY];
- offset = snprintf(expected + offset,
- EVEL_MAX_JSON_BODY - offset,
- "%s%s%s",
- expected_start,
- expected_middle,
- expected_end);
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_SGNALING * event = NULL;
- evel_set_next_event_sequence(2000);
- event = evel_new_signaling("vendor_x_id",
- "correlator", "1.0.3.1", "1234", "192.168.1.3","3456");
- assert(event != NULL);
- evel_signaling_type_set(event, "Signaling");
- evel_signaling_correlator_set(event, "vendor_x_correlator");
- evel_signaling_vnfmodule_name_set(event, "vendor_x_module");
- evel_signaling_vnfname_set(event, "vendor_x_vnf");
-
- switch (service_test)
- {
- case SERVICE_NONE:
- break;
- case SERVICE_CODEC:
- evel_signaling_addl_info_add(event, "codec", "PCMA");
- break;
- case SERVICE_TRANSCODING:
- evel_signaling_addl_info_add(event, "calleecodec", "PCMA");
- evel_signaling_addl_info_add(event, "callercodec", "G729A");
- break;
- case SERVICE_RTCP:
- evel_signaling_addl_info_add(event, "rtcpdata", "abcdefgh");
- break;
- case SERVICE_EOC_VQM:
- evel_signaling_addl_info_add(event, "adjacency", "vendor_x");
- /*evel_service_adjacency_name_set(event, "vendor_x_adjacency");
- evel_service_endpoint_desc_set(event, EVEL_SERVICE_ENDPOINT_CALLER);
- evel_service_endpoint_jitter_set(event, 66);
- evel_service_endpoint_rtp_oct_disc_set(event, 100);
- evel_service_endpoint_rtp_oct_recv_set(event, 200);
- evel_service_endpoint_rtp_oct_sent_set(event, 300);
- evel_service_endpoint_rtp_pkt_disc_set(event, 400);
- evel_service_endpoint_rtp_pkt_recv_set(event, 500);
- evel_service_endpoint_rtp_pkt_sent_set(event, 600);
- evel_service_local_jitter_set(event, 99);
- evel_service_local_rtp_oct_disc_set(event, 150);
- evel_service_local_rtp_oct_recv_set(event, 250);
- evel_service_local_rtp_oct_sent_set(event, 350);
- evel_service_local_rtp_pkt_disc_set(event, 450);
- evel_service_local_rtp_pkt_recv_set(event, 550);
- evel_service_local_rtp_pkt_sent_set(event, 650);
- evel_service_mos_cqe_set(event, 12.255);
- evel_service_packets_lost_set(event, 157);
- evel_service_packet_loss_percent_set(event, 0.232);
- evel_service_r_factor_set(event, 11);
- evel_service_round_trip_delay_set(event, 15);*/
- break;
- case SERVICE_MARKER:
- evel_signaling_addl_info_add(event, "service_phone", "0888888888");
- break;
- }
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) event);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Service");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(event);
-}
-
-void test_encode_signaling()
-{
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"signaling\", "
- "\"eventId\": \"2001\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 2001, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"eventType\": \"Signaling\", "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"signalingFields\": {"
- "\"eventInstanceIdentifier\": "
- "{"
- "\"vendorId\": \"vendor_x_id\", "
- "\"eventId\": \"vendor_x_event_id\", "
- "\"productId\": \"vendor_x_product_id\", "
- "\"subsystemId\": \"vendor_x_subsystem_id\", "
- "\"eventFriendlyName\": \"vendor_x_frieldly_name\""
- "}, "
- "\"signalingFieldsVersion\": 1.1, "
- "\"correlator\": \"vendor_x_correlator\", "
- "\"localIpAddress\": \"1.0.3.1\", "
- "\"localPort\": \"1031\", "
- "\"remoteIpAddress\": \"5.3.3.0\", "
- "\"remotePort\": \"5330\", "
- "\"compressedSip\": \"compressed_sip\", "
- "\"summarySip\": \"summary_sip\""
- "}}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_SIGNALING * event = NULL;
- evel_set_next_event_sequence(2001);
- event = evel_new_signaling("vendor_x_id",
- "correlator", "1.0.3.1", "1234", "192.168.1.3","3456");
- assert(event != NULL);
- evel_signaling_vnfmodule_name_set(event, "vendor_x_module");
- evel_signaling_vnfname_set(event, "vendor_x_vnf");
- evel_signaling_type_set(event, "Signaling");
- evel_signaling_product_id_set(event, "vendor_x_product_id");
- evel_signaling_subsystem_id_set(event, "vendor_x_subsystem_id");
- evel_signaling_friendly_name_set(event, "vendor_x_frieldly_name");
- evel_signaling_correlator_set(event, "vendor_x_correlator");
- evel_signaling_local_ip_address_set(event, "1.0.3.1");
- evel_signaling_local_port_set(event, "1031");
- evel_signaling_remote_ip_address_set(event, "5.3.3.0");
- evel_signaling_remote_port_set(event, "5330");
- evel_signaling_compressed_sip_set(event, "compressed_sip");
- evel_signaling_summary_sip_set(event, "summary_sip");
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) event);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Signaling");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(event);
-}
-
-void test_encode_state_change()
-{
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"stateChange\", "
- "\"eventId\": \"128\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 128, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"eventType\": \"SC Type\", "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"stateChangeFields\": {"
- "\"newState\": \"inService\", "
- "\"oldState\": \"outOfService\", "
- "\"stateInterface\": \"An Interface\", "
- "\"additionalFields\": ["
- "{\"name\": \"Name1\", "
- "\"value\": \"Value1\"}, "
- "{\"name\": \"Name2\", "
- "\"value\": \"Value2\"}"
- "], "
- "\"stateChangeFieldsVersion\": 1.1"
- "}}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_STATE_CHANGE * state_change = NULL;
- evel_set_next_event_sequence(128);
- state_change = evel_new_state_change(EVEL_ENTITY_STATE_IN_SERVICE,
- EVEL_ENTITY_STATE_OUT_OF_SERVICE,
- "An Interface");
- assert(state_change != NULL);
- evel_state_change_type_set(state_change, "SC Type");
- evel_state_change_addl_field_add(state_change, "Name1", "Value1");
- evel_state_change_addl_field_add(state_change, "Name2", "Value2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) state_change);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "StateChange");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(state_change);
-}
-
-void test_encode_syslog()
-{
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"syslog\", "
- "\"eventId\": \"126\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 126, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"eventType\": \"SL Type\", "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"syslogFields\": {"
- "\"eventSourceType\": \"virtualNetworkFunction\", "
- "\"syslogMsg\": \"SL Message\", "
- "\"syslogTag\": \"SL Tag\", "
- "\"syslogFieldsVersion\": 1.1, "
- "\"eventSourceHost\": \"SL Host\", "
- "\"syslogFacility\": 6, "
- "\"syslogProc\": \"SL Proc\", "
- "\"syslogProcId\": 2, "
- "\"syslogSData\": \"SL SDATA\", "
- "\"syslogVer\": 1"
- "}}}";
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_SYSLOG * syslog = NULL;
- evel_set_next_event_sequence(126);
- syslog = evel_new_syslog(EVEL_SOURCE_VIRTUAL_NETWORK_FUNCTION,
- "SL Message",
- "SL Tag");
- assert(syslog != NULL);
- evel_syslog_type_set(syslog, "SL Type");
- evel_syslog_event_source_host_set(syslog, "SL Host");
- evel_syslog_facility_set(syslog, EVEL_SYSLOG_FACILITY_LINE_PRINTER);
- evel_syslog_proc_set(syslog, "SL Proc");
- evel_syslog_proc_id_set(syslog, 2);
- evel_syslog_version_set(syslog, 1);
- evel_syslog_s_data_set(syslog, "SL SDATA");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) syslog);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Syslog");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(syslog);
-}
-
-void test_encode_other()
-{
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"other\", "
- "\"eventId\": \"129\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 129, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"eventType\": \"Other Type\", "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"otherFields\": ["
- "{\"name\": \"Other field 1\", "
- "\"value\": \"Other value 1\"}, "
- "{\"name\": \"Other field 2\", "
- "\"value\": \"Other value 2\"}"
- "]"
- "}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_OTHER * other = NULL;
- evel_set_next_event_sequence(129);
- other = evel_new_other();
- assert(other != NULL);
- evel_other_type_set(other, "Other Type");
- evel_other_field_add(other,
- "Other field 1",
- "Other value 1");
- evel_other_field_add(other,
- "Other field 2",
- "Other value 2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) other);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Other");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(other);
-}
-
-void compare_strings(char * expected,
- char * actual,
- int max_size,
- char * description)
-{
- if (strncmp(expected, actual, max_size) != 0)
- {
- int diff = 0;
- while (diff < max_size)
- {
- if (expected[diff] != actual[diff])
- {
- break;
- }
- diff++;
- }
-
- printf("Comparison Failure at Offset %d\n\n", diff);
- printf("Expected:\n%s\n", expected);
- printf("Actual:\n%s\n", actual);
- printf("Description: %s\n", description);
- assert(0);
- }
-}
-
-/**************************************************************************//**
- * Copy a json string to a ::MEMORY_CHUNK for testing.
- *
- * @param chunk The memory chunk.
- * @param string The json string.
- *****************************************************************************/
-void copy_string_to_chunk(MEMORY_CHUNK * chunk, char * string)
-{
- int mem_size;
-
- /***************************************************************************/
- /* Check preconditions. */
- /***************************************************************************/
- assert(chunk != NULL);
- assert(string != NULL);
-
- mem_size = strlen(string) + 1;
- chunk->memory = malloc(mem_size);
- memcpy(chunk->memory, string, mem_size);
- chunk->size = mem_size;
-}
-
-/**************************************************************************//**
- * Copy a json string to a ::MEMORY_CHUNK for testing.
- *
- * @param json The JSON string.
- * @param post Memory chunk to post a response.
- *****************************************************************************/
-void handle_json_response(char * json, MEMORY_CHUNK * post)
-{
- MEMORY_CHUNK chunk;
- post->memory = NULL;
- post->size = 0;
- copy_string_to_chunk(&chunk, json);
- evel_handle_event_response(&chunk, post);
- free(chunk.memory);
-}
-
-/**************************************************************************//**
- * Test that a non-"commandList" JSON buffer leaves the throttle state off.
- *****************************************************************************/
-void test_json_response_junk()
-{
- MEMORY_CHUNK post;
- int domain;
- char * json_junk =
- "{"
- "\"junk1\": ["
- "\"1\", \"2\", \"3\"], "
- "\"junk2\": ["
- "\"1\", \"2\", \"3\"]"
- "}";
-
- evel_throttle_initialize();
- handle_json_response(json_junk, &post);
-
- /***************************************************************************/
- /* Check that all domains are not throttled. */
- /***************************************************************************/
- for (domain = EVEL_DOMAIN_FAULT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
-
- /***************************************************************************/
- /* Check that we generated no post. */
- /***************************************************************************/
- assert(post.memory == NULL);
-
- evel_throttle_terminate();
-}
-
-char * json_command_list_provide =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"provideThrottlingState\""
- "}"
- "}"
- "]"
- "}";
-
-char * json_command_list_fault_clear =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\""
- "}"
- "}"
- "}"
- "]"
- "}";
-
-char * json_command_list_syslog_clear =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"syslog\""
- "}"
- "}"
- "}"
- "]"
- "}";
-
-char * expected_throttle_state_normal =
- "{"
- "\"eventThrottlingState\": {"
- "\"eventThrottlingMode\": \"normal\"}"
- "}";
-
-/**************************************************************************//**
- * Test that we can return the default throttling state.
- *****************************************************************************/
-void test_json_provide_throttle_state()
-{
- MEMORY_CHUNK post;
- int domain;
-
- char * expected_post = expected_throttle_state_normal;
-
- evel_throttle_initialize();
- handle_json_response(json_command_list_provide, &post);
-
- /***************************************************************************/
- /* Check that all domains are not throttled. */
- /***************************************************************************/
- for (domain = EVEL_DOMAIN_FAULT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
-
- /***************************************************************************/
- /* Check that we generated a throttling specification post. */
- /***************************************************************************/
- assert(post.memory != NULL);
- compare_strings(expected_post, post.memory, strlen(expected_post),
- "Throttle State Normal");
- free(post.memory);
-
- evel_throttle_terminate();
-}
-
-/**************************************************************************//**
- * Test the measurement interval handling and API.
- *****************************************************************************/
-void test_json_measurement_interval()
-{
- MEMORY_CHUNK post;
- char * json_command_list_interval_only =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"measurementInterval\": 60"
- "}"
- "}"
- "]"
- "}";
-
- char * json_command_list_interval_first =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"measurementInterval\": 30, "
- "\"commandType\": \"measurementIntervalChange\""
- "}"
- "}"
- "]"
- "}";
-
- char * json_command_list_command_first =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"measurementIntervalChange\", "
- "\"measurementInterval\": 60"
- "}"
- "}"
- "]"
- "}";
-
- evel_throttle_initialize();
- assert(evel_get_measurement_interval() == EVEL_MEASUREMENT_INTERVAL_UKNOWN);
-
- /***************************************************************************/
- /* Check that we're not handling stuff when we shouldn't. */
- /***************************************************************************/
- handle_json_response(json_command_list_interval_only, &post);
- assert(post.memory == NULL);
- assert(evel_get_measurement_interval() == EVEL_MEASUREMENT_INTERVAL_UKNOWN);
-
- /***************************************************************************/
- /* Check that we're OK with the interval coming first. */
- /***************************************************************************/
- handle_json_response(json_command_list_interval_first, &post);
- assert(post.memory == NULL);
- assert(evel_get_measurement_interval() == 30);
-
- /***************************************************************************/
- /* Check that we're OK with the command type coming first. */
- /***************************************************************************/
- handle_json_response(json_command_list_command_first, &post);
- assert(post.memory == NULL);
- assert(evel_get_measurement_interval() == 60);
-
- evel_throttle_terminate();
-}
-
-/**************************************************************************//**
- * Test a single domain, single field suppression.
- *****************************************************************************/
-void test_json_throttle_spec_field()
-{
- MEMORY_CHUNK post;
- int domain;
-
- char * json_command_list_fault_single =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"]"
- "}"
- "}"
- "}"
- "]"
- "}";
-
- char * json_command_list_fault_double =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": ["
- "\"alarmInterfaceA\", \"alarmAdditionalInformation\"]"
- "}"
- "}"
- "}"
- "]"
- "}";
-
- char * expected_post_fault_single =
- "{"
- "\"eventThrottlingState\": {"
- "\"eventThrottlingMode\": \"throttled\", "
- "\"eventDomainThrottleSpecificationList\": ["
- "{"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"]"
- "}"
- "]"
- "}"
- "}";
-
- char * expected_post_fault_double =
- "{"
- "\"eventThrottlingState\": {"
- "\"eventThrottlingMode\": \"throttled\", "
- "\"eventDomainThrottleSpecificationList\": ["
- "{"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": ["
- "\"alarmInterfaceA\", \"alarmAdditionalInformation\"]"
- "}"
- "]"
- "}"
- "}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single fault suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list_fault_single, &post);
-
- /***************************************************************************/
- /* Check that the FAULT domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_FAULT) != NULL);
- for (domain = EVEL_DOMAIN_MEASUREMENT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- if (domain != EVEL_DOMAIN_FAULT)
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
- }
- assert(post.memory == NULL);
-
- /***************************************************************************/
- /* Request and verify the throttling state. */
- /***************************************************************************/
- handle_json_response(json_command_list_provide, &post);
- assert(post.memory != NULL);
- compare_strings(expected_post_fault_single,
- post.memory,
- strlen(expected_post_fault_single),
- "Fault - Single Field");
- free(post.memory);
- post.memory = NULL;
-
- /***************************************************************************/
- /* Update a specification with two faults suppressed. */
- /***************************************************************************/
- handle_json_response(json_command_list_fault_double, &post);
-
- /***************************************************************************/
- /* Check that the FAULT domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_FAULT) != NULL);
- for (domain = EVEL_DOMAIN_MEASUREMENT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- if (domain != EVEL_DOMAIN_FAULT)
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
- }
- assert(post.memory == NULL);
-
- /***************************************************************************/
- /* Request and verify the throttling state. */
- /***************************************************************************/
- handle_json_response(json_command_list_provide, &post);
- assert(post.memory != NULL);
- compare_strings(expected_post_fault_double,
- post.memory,
- strlen(expected_post_fault_double),
- "Fault - Double Field");
- free(post.memory);
- post.memory = NULL;
-
- /***************************************************************************/
- /* Now clear the FAULT domain. */
- /***************************************************************************/
- handle_json_response(json_command_list_fault_clear, &post);
- for (domain = EVEL_DOMAIN_FAULT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
-
- evel_throttle_terminate();
-}
-
-/**************************************************************************//**
- * Test a single domain, nv_pair suppression.
- *****************************************************************************/
-void test_json_throttle_spec_nv_pair()
-{
- MEMORY_CHUNK post;
- int domain;
-
- char * json_command_list_fault_pair_single =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}"
- "]"
- "}"
- "}"
- "}"
- "]"
- "}";
-
- char * json_command_list_fault_pair_double =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\", \"name2\"]"
- "}"
- "]"
- "}"
- "}"
- "}"
- "]"
- "}";
-
- char * expected_post_fault_pair_single =
- "{"
- "\"eventThrottlingState\": {"
- "\"eventThrottlingMode\": \"throttled\", "
- "\"eventDomainThrottleSpecificationList\": ["
- "{"
- "\"eventDomain\": \"fault\", "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}"
- "]"
- "}"
- "]"
- "}"
- "}";
-
- char * expected_post_fault_pair_double =
- "{"
- "\"eventThrottlingState\": {"
- "\"eventThrottlingMode\": \"throttled\", "
- "\"eventDomainThrottleSpecificationList\": ["
- "{"
- "\"eventDomain\": \"fault\", "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\", \"name2\"]"
- "}"
- "]"
- "}"
- "]"
- "}"
- "}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single nvpair with a */
- /* single sub-field suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list_fault_pair_single, &post);
-
- /***************************************************************************/
- /* Check that the FAULT domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_FAULT) != NULL);
- for (domain = EVEL_DOMAIN_MEASUREMENT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- if (domain != EVEL_DOMAIN_FAULT)
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
- }
- assert(post.memory == NULL);
-
- /***************************************************************************/
- /* Request and verify the throttling state. */
- /***************************************************************************/
- handle_json_response(json_command_list_provide, &post);
- assert(post.memory != NULL);
- compare_strings(expected_post_fault_pair_single,
- post.memory,
- strlen(expected_post_fault_pair_single),
- "Fault - Single Pair, Single Field");
- free(post.memory);
- post.memory = NULL;
-
- /***************************************************************************/
- /* Update a specification with a single nvpair with two sub-fields */
- /* suppressed. */
- /***************************************************************************/
- handle_json_response(json_command_list_fault_pair_double, &post);
-
- /***************************************************************************/
- /* Check that the FAULT domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_FAULT) != NULL);
- for (domain = EVEL_DOMAIN_MEASUREMENT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- if (domain != EVEL_DOMAIN_FAULT)
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
- }
- assert(post.memory == NULL);
-
- /***************************************************************************/
- /* Request and verify the throttling state. */
- /***************************************************************************/
- handle_json_response(json_command_list_provide, &post);
- assert(post.memory != NULL);
- compare_strings(expected_post_fault_pair_double,
- post.memory,
- strlen(expected_post_fault_pair_double),
- "Fault - Double Field");
- free(post.memory);
- post.memory = NULL;
-
- /***************************************************************************/
- /* Now clear the FAULT domain. */
- /***************************************************************************/
- handle_json_response(json_command_list_fault_clear, &post);
- for (domain = EVEL_DOMAIN_FAULT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
-
- evel_throttle_terminate();
-}
-
-/**************************************************************************//**
- * Test two domains, nv_pair suppression.
- *****************************************************************************/
-void test_json_throttle_spec_two_domains()
-{
- MEMORY_CHUNK post;
- int domain;
-
- char * json_command_list_two_domains =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}}}, "
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"syslog\", "
- "\"suppressedFieldNames\": [\"syslogProcId\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"additionalFields\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}}}"
- "]"
- "}";
-
- char * expected_post_two_domains =
- "{"
- "\"eventThrottlingState\": {"
- "\"eventThrottlingMode\": \"throttled\", "
- "\"eventDomainThrottleSpecificationList\": ["
- "{"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}, "
- "{"
- "\"eventDomain\": \"syslog\", "
- "\"suppressedFieldNames\": [\"syslogProcId\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"additionalFields\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}"
- "]"
- "}"
- "}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single nvpair with a */
- /* single sub-field suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list_two_domains, &post);
-
- /***************************************************************************/
- /* Check that the FAULT and SYSLOG domains are throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_FAULT) != NULL);
- assert(evel_get_throttle_spec(EVEL_DOMAIN_SYSLOG) != NULL);
- for (domain = EVEL_DOMAIN_MEASUREMENT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- if ((domain != EVEL_DOMAIN_FAULT) && (domain != EVEL_DOMAIN_SYSLOG))
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
- }
- assert(post.memory == NULL);
-
- /***************************************************************************/
- /* Request and verify the throttling state. */
- /***************************************************************************/
- handle_json_response(json_command_list_provide, &post);
- assert(post.memory != NULL);
- compare_strings(expected_post_two_domains,
- post.memory,
- strlen(expected_post_two_domains),
- "Fault - Two Domains");
- free(post.memory);
- post.memory = NULL;
-
- /***************************************************************************/
- /* Now clear the FAULT and SYSLOG domains. */
- /***************************************************************************/
- handle_json_response(json_command_list_fault_clear, &post);
- assert(evel_get_throttle_spec(EVEL_DOMAIN_FAULT) == NULL);
- assert(evel_get_throttle_spec(EVEL_DOMAIN_SYSLOG) != NULL);
- handle_json_response(json_command_list_syslog_clear, &post);
- for (domain = EVEL_DOMAIN_FAULT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
-
- evel_throttle_terminate();
-}
-
-/**************************************************************************//**
- * Test bad command type.
- *****************************************************************************/
-void test_json_throttle_spec_bad_command_type()
-{
- MEMORY_CHUNK post;
- int domain;
-
- /***************************************************************************/
- /* Search for "dodgy" in the JSON, and you will see the dodgy bits we're */
- /* handling in these tests. */
- /***************************************************************************/
- #define NUM_BAD_COMMANDS 8
- char * json_command_list_dodgy_command =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"dodgyCommand\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}}}"
- "]"
- "}";
-
- char * json_command_list_dodgy_spec =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"dodgyEventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}}}"
- "]"
- "}";
-
- char * json_command_list_dodgy_event_domain_key =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"dodgyEventDomainKey\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}}}"
- "]"
- "}";
-
- char * json_command_list_dodgy_event_domain =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"dodgyEventDomain\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}}}"
- "]"
- "}";
-
- char * json_command_list_dodgy_field_names_key =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}}}"
- "]"
- "}";
-
- char * json_command_list_dodgy_pair_names_list_key =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"], "
- "\"dodgySuppressedNvPairsListKey\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}}}"
- "]"
- "}";
-
- char * json_command_list_dodgy_pair_field_name_key =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"dodgyNvPairFieldNameKey\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}}}"
- "]"
- "}";
-
- char * json_command_list_dodgy_pair_names_key =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"dodgySuppressedNvPairNamesKey\": [\"name1\"]"
- "}]}}}"
- "]"
- "}";
-
- char * json_command_list_dodgy_depth =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"dodgySuppressedNvPairNamesKey\": "
- "[\"name1\", [[[[[[[[]]]]]]]]]"
- "}]}}}"
- "]"
- "}";
-
- char * expected_throttle_state_dodgy_field_names_key =
- "{"
- "\"eventThrottlingState\": {"
- "\"eventThrottlingMode\": \"throttled\", "
- "\"eventDomainThrottleSpecificationList\": ["
- "{"
- "\"eventDomain\": \"fault\", "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name1\"]"
- "}]}"
- "]"
- "}"
- "}";
-
- char * expected_throttle_state_dodgy_pair_names_list_key =
- "{"
- "\"eventThrottlingState\": {"
- "\"eventThrottlingMode\": \"throttled\", "
- "\"eventDomainThrottleSpecificationList\": ["
- "{"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"]"
- "}"
- "]"
- "}"
- "}";
-
- char * expected_throttle_state_dodgy_pair_field_name_key =
- "{"
- "\"eventThrottlingState\": {"
- "\"eventThrottlingMode\": \"throttled\", "
- "\"eventDomainThrottleSpecificationList\": ["
- "{"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"]"
- "}"
- "]"
- "}"
- "}";
-
- char * expected_throttle_state_dodgy_pair_names_key =
- "{"
- "\"eventThrottlingState\": {"
- "\"eventThrottlingMode\": \"throttled\", "
- "\"eventDomainThrottleSpecificationList\": ["
- "{"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": [\"alarmInterfaceA\"]"
- "}"
- "]"
- "}"
- "}";
-
- char * json_command_lists[] = {
- json_command_list_dodgy_command,
- json_command_list_dodgy_spec,
- json_command_list_dodgy_event_domain_key,
- json_command_list_dodgy_event_domain,
- json_command_list_dodgy_depth,
- json_command_list_dodgy_field_names_key,
- json_command_list_dodgy_pair_names_list_key,
- json_command_list_dodgy_pair_field_name_key,
- json_command_list_dodgy_pair_names_key
- };
-
- char * expected_posts[] = {
- expected_throttle_state_normal,
- expected_throttle_state_normal,
- expected_throttle_state_normal,
- expected_throttle_state_normal,
- expected_throttle_state_normal,
- expected_throttle_state_dodgy_field_names_key,
- expected_throttle_state_dodgy_pair_names_list_key,
- expected_throttle_state_dodgy_pair_field_name_key,
- expected_throttle_state_dodgy_pair_names_key
- };
-
- const int num_commands =
- sizeof(json_command_lists) / sizeof(json_command_lists[0]);
- const int num_posts =
- sizeof(expected_posts) / sizeof(expected_posts[0]);
- assert(num_commands == num_posts);
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single nvpair with a */
- /* single sub-field suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
-
- int ii;
- for (ii = 0; ii < num_commands; ii++)
- {
- EVEL_DEBUG("Testing commandList[%d] = %s\n", ii, json_command_lists[ii]);
- handle_json_response(json_command_lists[ii], &post);
-
- /*************************************************************************/
- /* Check that throttling is in a normal state - because we ignored the */
- /* command / ..... */
- /*************************************************************************/
- for (domain = EVEL_DOMAIN_MEASUREMENT; domain < EVEL_MAX_DOMAINS; domain++)
- {
- assert(evel_get_throttle_spec(domain) == NULL);
- }
- if (expected_posts[ii] == expected_throttle_state_normal)
- {
- assert(evel_get_throttle_spec(EVEL_DOMAIN_FAULT) == NULL);
- }
- else
- {
- assert(evel_get_throttle_spec(EVEL_DOMAIN_FAULT) != NULL);
- }
- assert(post.memory == NULL);
-
- /*************************************************************************/
- /* Request and verify the throttling state. */
- /*************************************************************************/
- handle_json_response(json_command_list_provide, &post);
- assert(post.memory != NULL);
- compare_strings(expected_posts[ii],
- post.memory,
- strlen(expected_posts[ii]),
- "Throttle State Normal");
- free(post.memory);
- post.memory = NULL;
- }
-
- evel_throttle_terminate();
-}
-
-void test_encode_fault_throttled()
-{
- MEMORY_CHUNK post;
-
- /***************************************************************************/
- /* We also test suppression of the event header parameters here. */
- /***************************************************************************/
- char * json_command_list =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"fault\", "
- "\"suppressedFieldNames\": ["
- "\"alarmInterfaceA\", "
- "\"eventType\", "
- "\"reportingEntityId\", "
- "\"sourceId\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"alarmAdditionalInformation\", "
- "\"suppressedNvPairNames\": [\"name3\", \"name4\"]"
- "}]}}}"
- "]"
- "}";
-
- char * expected =
- "{\"event\": {"
- "\"commonEventHeader\": {"
- "\"domain\": \"fault\", "
- "\"eventId\": \"122\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 122, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2"
- "}, "
- "\"faultFields\": {"
- "\"alarmCondition\": \"My alarm condition\", "
- "\"eventSeverity\": \"MAJOR\", "
- "\"eventSourceType\": \"other\", "
- "\"specificProblem\": \"It broke very badly\", "
- "\"vfStatus\": \"Active\", "
- "\"faultFieldsVersion\": 1.1, "
- "\"alarmAdditionalInformation\": ["
- "{\"name\": \"name1\", "
- "\"value\": \"value1\"}, "
- "{\"name\": \"name2\", "
- "\"value\": \"value2\"}]"
- "}}}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single fault suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list, &post);
-
- /***************************************************************************/
- /* Check that the domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_FAULT) != NULL);
- assert(post.memory == NULL);
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- evel_set_next_event_sequence(122);
- EVENT_FAULT * fault = evel_new_fault("My alarm condition",
- "It broke very badly",
- EVEL_PRIORITY_NORMAL,
- EVEL_SEVERITY_MAJOR,
- EVEL_SOURCE_HOST,
- EVEL_VF_STATUS_PREP_TERMINATE);
- assert(fault != NULL);
- evel_fault_type_set(fault, "Bad things happen...");
- evel_fault_addl_info_add(fault, "name1", "value1");
- evel_fault_addl_info_add(fault, "name2", "value2");
-
- /***************************************************************************/
- /* Suppressed fields. */
- /***************************************************************************/
- evel_fault_interface_set(fault, "My Interface Card");
- evel_fault_addl_info_add(fault, "name3", "value3");
- evel_fault_addl_info_add(fault, "name4", "value4");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) fault);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Fault");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(fault);
- evel_throttle_terminate();
-}
-
-void test_encode_measurement_throttled()
-{
- MEMORY_CHUNK post;
-
- /***************************************************************************/
- /* We also test suppression of the event header parameters here. */
- /***************************************************************************/
- char * json_command_list =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"measurementsForVfScaling\", "
- "\"suppressedFieldNames\": ["
- "\"errors\", "
- "\"vnfcScalingMetric\", "
- "\"numberOfMediaPortsInUse\", "
- "\"aggregateCpuUsage\", "
- "\"requestRate\", "
- "\"memoryUsed\", "
- "\"memoryConfigured\", "
- "\"meanRequestLatency\", "
- "\"latencyDistribution\", "
- "\"concurrentSessions\", "
- "\"configuredEntities\", "
- "\"eventType\", "
- "\"reportingEntityId\", "
- "\"sourceId\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"cpuUsageArray\", "
- "\"suppressedNvPairNames\": [\"cpu3\", \"cpu4\"]"
- "}, "
- "{"
- "\"nvPairFieldName\": \"filesystemUsageArray\", "
- "\"suppressedNvPairNames\": [\"00-11-22\", \"33-44-55\"]"
- "}, "
- "{"
- "\"nvPairFieldName\": \"vNicUsageArray\", "
- "\"suppressedNvPairNames\": [\"eth1\", \"eth0\"]"
- "}, "
- "{"
- "\"nvPairFieldName\": \"featureUsageArray\", "
- "\"suppressedNvPairNames\": [\"FeatureB\", \"FeatureC\"]"
- "},"
- "{"
- "\"nvPairFieldName\": \"codecUsageArray\", "
- "\"suppressedNvPairNames\": [\"G729ab\"]"
- "},"
- "{"
- "\"nvPairFieldName\": \"additionalMeasurements\", "
- "\"suppressedNvPairNames\": [\"Group2\"]"
- "}"
- "]}}}"
- "]"
- "}";
-
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"measurementsForVfScaling\", "
- "\"eventId\": \"123\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 123, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2"
- "}, "
- "\"measurementsForVfScalingFields\": "
- "{"
- "\"measurementInterval\": 5.500000, "
- "\"cpuUsageArray\": ["
- "{\"cpuIdentifier\": \"cpu1\", "
- "\"percentUsage\": 11.110000}, "
- "{\"cpuIdentifier\": \"cpu2\", "
- "\"percentUsage\": 22.220000}], "
- "\"filesystemUsageArray\": ["
- "{\"blockConfigured\": 500.110000, "
- "\"blockIops\": 77, "
- "\"blockUsed\": 500.220000, "
- "\"ephemeralConfigured\": 500.110000, "
- "\"ephemeralIops\": 88, "
- "\"ephemeralUsed\": 600.220000, "
- "\"filesystemName\": \"66-77-88\"}], "
- "\"featureUsageArray\": ["
- "{\"featureIdentifier\": \"FeatureA\", "
- "\"featureUtilization\": 123}], "
- "\"codecUsageArray\": ["
- "{\"codecIdentifier\": \"G711a\", "
- "\"numberInUse\": 91}], "
- "\"additionalMeasurements\": ["
- "{\"name\": \"Group1\", "
- "\"measurements\": ["
- "{\"name\": \"Name1\", "
- "\"value\": \"Value1\"}]}], "
- "\"measurementsForVfScalingVersion\": 1.1}}}";
- MEASUREMENT_CPU_USE *cpu_use;
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single fault suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list, &post);
-
- /***************************************************************************/
- /* Check that the domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_MEASUREMENT) != NULL);
- assert(post.memory == NULL);
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- evel_set_next_event_sequence(123);
- EVENT_MEASUREMENT * measurement = evel_new_measurement(5.5);
- MEASUREMENT_LATENCY_BUCKET * bucket = NULL;
- MEASUREMENT_VNIC_PERFORMANCE * vnic_use = NULL;
- assert(measurement != NULL);
-
- evel_measurement_type_set(measurement, "Perf management...");
- evel_measurement_conc_sess_set(measurement, 1);
- evel_measurement_cfg_ents_set(measurement, 2);
- evel_measurement_mean_req_lat_set(measurement, 4.4);
- evel_measurement_mem_cfg_set(measurement, 6.6);
- evel_measurement_mem_used_set(measurement, 3.3);
- evel_measurement_request_rate_set(measurement, 7);
-
- cpu_use = evel_measurement_new_cpu_use_add(measurement, "cpu1", 11.11);
- evel_measurement_cpu_use_idle_set(cpu_use,22.22);
- evel_measurement_cpu_use_interrupt_set(cpu_use,33.33);
- evel_measurement_cpu_use_nice_set(cpu_use,44.44);
- evel_measurement_cpu_use_softirq_set(cpu_use,55.55);
- evel_measurement_cpu_use_steal_set(cpu_use,66.66);
- evel_measurement_cpu_use_system_set(cpu_use,77.77);
- evel_measurement_cpu_use_usageuser_set(cpu_use,88.88);
- evel_measurement_cpu_use_wait_set(cpu_use,99.99);
-
- cpu_use = evel_measurement_new_cpu_use_add(measurement, "cpu2", 22.22);
- evel_measurement_cpu_use_idle_set(cpu_use,12.22);
- evel_measurement_cpu_use_interrupt_set(cpu_use,33.33);
- evel_measurement_cpu_use_nice_set(cpu_use,44.44);
- evel_measurement_cpu_use_softirq_set(cpu_use,55.55);
- evel_measurement_cpu_use_steal_set(cpu_use,66.66);
- evel_measurement_cpu_use_system_set(cpu_use,77.77);
- evel_measurement_cpu_use_usageuser_set(cpu_use,88.88);
- evel_measurement_cpu_use_wait_set(cpu_use,19.99);
-
- evel_measurement_fsys_use_add(measurement, "00-11-22",
- 100.11, 100.22, 33,
- 200.11, 200.22, 44);
- evel_measurement_fsys_use_add(measurement, "33-44-55",
- 300.11, 300.22, 55,
- 400.11, 400.22, 66);
- evel_measurement_fsys_use_add(measurement, "66-77-88",
- 500.11, 500.22, 77,
- 600.11, 600.22, 88);
-
- bucket = evel_new_meas_latency_bucket(20);
- evel_meas_latency_bucket_add(measurement, bucket);
-
- bucket = evel_new_meas_latency_bucket(30);
- evel_meas_latency_bucket_low_end_set(bucket, 10.0);
- evel_meas_latency_bucket_high_end_set(bucket, 20.0);
- evel_meas_latency_bucket_add(measurement, bucket);
-
- vnic_use = evel_new_measurement_vnic_use("eth0", 100, 200, 3, 4);
- evel_vnic_use_bcast_pkt_in_set(vnic_use, 1);
- evel_vnic_use_bcast_pkt_out_set(vnic_use, 2);
- evel_vnic_use_mcast_pkt_in_set(vnic_use, 5);
- evel_vnic_use_mcast_pkt_out_set(vnic_use, 6);
- evel_vnic_use_ucast_pkt_in_set(vnic_use, 7);
- evel_vnic_use_ucast_pkt_out_set(vnic_use, 8);
- evel_meas_vnic_use_add(measurement, vnic_use);
-
- vnic_use = evel_new_measurement_vnic_use("eth1", 110, 240, 13, 14);
- evel_vnic_use_bcast_pkt_in_set(vnic_use, 11);
- evel_vnic_use_bcast_pkt_out_set(vnic_use, 12);
- evel_vnic_use_mcast_pkt_in_set(vnic_use, 15);
- evel_vnic_use_mcast_pkt_out_set(vnic_use, 16);
- evel_vnic_use_ucast_pkt_in_set(vnic_use, 17);
- evel_vnic_use_ucast_pkt_out_set(vnic_use, 18);
- evel_meas_vnic_use_add(measurement, vnic_use);
-
- evel_measurement_errors_set(measurement, 1, 0, 2, 1);
- evel_measurement_feature_use_add(measurement, "FeatureA", 123);
- evel_measurement_feature_use_add(measurement, "FeatureB", 567);
- evel_measurement_codec_use_add(measurement, "G711a", 91);
- evel_measurement_codec_use_add(measurement, "G729ab", 92);
- evel_measurement_media_port_use_set(measurement, 1234);
- evel_measurement_vnfc_scaling_metric_set(measurement, 1234.5678);
- evel_measurement_custom_measurement_add(measurement,
- "Group1", "Name1", "Value1");
- evel_measurement_custom_measurement_add(measurement,
- "Group2", "Name1", "Value1");
- evel_measurement_custom_measurement_add(measurement,
- "Group2", "Name2", "Value2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) measurement);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Measurement");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(measurement);
- evel_throttle_terminate();
-}
-
-void test_encode_mobile_throttled()
-{
- MEMORY_CHUNK post;
-
- /***************************************************************************/
- /* We also test suppression of the event header parameters here. */
- /***************************************************************************/
- char * json_command_list =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"mobileFlow\", "
- "\"suppressedFieldNames\": ["
- "\"applicationType\", "
- "\"appProtocolType\", "
- "\"appProtocolVersion\", "
- "\"cid\", "
- "\"connectionType\", "
- "\"ecgi\", "
- "\"gtpProtocolType\", "
- "\"gtpVersion\", "
- "\"httpHeader\", "
- "\"imei\", "
- "\"imsi\", "
- "\"lac\", "
- "\"mcc\", "
- "\"mnc\", "
- "\"msisdn\", "
- "\"otherFunctionalRole\", "
- "\"rac\", "
- "\"radioAccessTechnology\", "
- "\"sac\", "
- "\"samplingAlgorithm\", "
- "\"tac\", "
- "\"tunnelId\", "
- "\"vlanId\", "
- "\"eventType\", "
- "\"reportingEntityId\", "
- "\"sourceId\"], "
- "\"suppressedNvPairsList\": ["
- "]}}}"
- "]"
- "}";
-
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"mobileFlow\", "
- "\"eventId\": \"1242\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 1242, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2"
- "}, "
- "\"mobileFlowFields\": {"
- "\"flowDirection\": \"Inbound\", "
- "\"gtpPerFlowMetrics\": {"
- "\"avgBitErrorRate\": 132.000100, "
- "\"avgPacketDelayVariation\": 31.200000, "
- "\"avgPacketLatency\": 101, "
- "\"avgReceiveThroughput\": 2101, "
- "\"avgTransmitThroughput\": 501, "
- "\"flowActivationEpoch\": 1470409422, "
- "\"flowActivationMicrosec\": 988, "
- "\"flowDeactivationEpoch\": 1470409432, "
- "\"flowDeactivationMicrosec\": 12, "
- "\"flowDeactivationTime\": \"Fri, 05 Aug 2016 15:03:52 +0000\", "
- "\"flowStatus\": \"Inactive\", "
- "\"maxPacketDelayVariation\": 88, "
- "\"numActivationFailures\": 4, "
- "\"numBitErrors\": 18, "
- "\"numBytesReceived\": 123655, "
- "\"numBytesTransmitted\": 4562, "
- "\"numDroppedPackets\": 1, "
- "\"numL7BytesReceived\": 13, "
- "\"numL7BytesTransmitted\": 11, "
- "\"numLostPackets\": 2, "
- "\"numOutOfOrderPackets\": 4, "
- "\"numPacketErrors\": 8, "
- "\"numPacketsReceivedExclRetrans\": 900, "
- "\"numPacketsReceivedInclRetrans\": 902, "
- "\"numPacketsTransmittedInclRetrans\": 303, "
- "\"numRetries\": 7, "
- "\"numTimeouts\": 3, "
- "\"numTunneledL7BytesReceived\": 1, "
- "\"roundTripTime\": 111, "
- "\"timeToFirstByte\": 226, "
- "\"ipTosCountList\": ["
- "[\"1\", 13], "
- "[\"4\", 99], "
- "[\"17\", 1]], "
- "\"ipTosList\": [\"1\", \"4\", \"17\"], "
- "\"tcpFlagList\": [\"CWR\", \"URG\"], "
- "\"tcpFlagCountList\": [[\"CWR\", 10], [\"URG\", 121]], "
- "\"mobileQciCosList\": [\"conversational\", \"65\"], "
- "\"mobileQciCosCountList\": [[\"conversational\", 11], [\"65\", 122]], "
- "\"durConnectionFailedStatus\": 12, "
- "\"durTunnelFailedStatus\": 13, "
- "\"flowActivatedBy\": \"Remote\", "
- "\"flowActivationTime\": \"Fri, 05 Aug 2016 15:03:43 +0000\", "
- "\"flowDeactivatedBy\": \"Remote\", "
- "\"gtpConnectionStatus\": \"Connected\", "
- "\"gtpTunnelStatus\": \"Not tunneling\", "
- "\"largePacketRtt\": 80, "
- "\"largePacketThreshold\": 600.000000, "
- "\"maxReceiveBitRate\": 1357924680, "
- "\"maxTransmitBitRate\": 235711, "
- "\"numGtpEchoFailures\": 1, "
- "\"numGtpTunnelErrors\": 4, "
- "\"numHttpErrors\": 2"
- "}, "
- "\"ipProtocolType\": \"UDP\", "
- "\"ipVersion\": \"IPv6\", "
- "\"otherEndpointIpAddress\": \"2.3.4.2\", "
- "\"otherEndpointPort\": 2342, "
- "\"reportingEndpointIpAddr\": \"4.2.3.2\", "
- "\"reportingEndpointPort\": 4322"
- "}}}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single fault suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list, &post);
-
- /***************************************************************************/
- /* Check that the domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_MOBILE_FLOW) != NULL);
- assert(post.memory == NULL);
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- MOBILE_GTP_PER_FLOW_METRICS * metrics = NULL;
- EVENT_MOBILE_FLOW * mobile_flow = NULL;
-
- /***************************************************************************/
- /* Mobile. */
- /***************************************************************************/
- evel_set_next_event_sequence(1242);
-
- metrics = evel_new_mobile_gtp_flow_metrics(132.0001,
- 31.2,
- 101,
- 2101,
- 501,
- 1470409422,
- 988,
- 1470409432,
- 12,
- (time_t)1470409432,
- "Inactive",
- 88,
- 4,
- 18,
- 123655,
- 4562,
- 1,
- 13,
- 11,
- 2,
- 4,
- 8,
- 900,
- 902,
- 303,
- 7,
- 3,
- 1,
- 111,
- 226);
- assert(metrics != NULL);
-
- evel_mobile_gtp_metrics_dur_con_fail_set(metrics, 12);
- evel_mobile_gtp_metrics_dur_tun_fail_set(metrics, 13);
- evel_mobile_gtp_metrics_act_by_set(metrics, "Remote");
- evel_mobile_gtp_metrics_act_time_set(metrics, (time_t)1470409423);
- evel_mobile_gtp_metrics_deact_by_set(metrics, "Remote");
- evel_mobile_gtp_metrics_con_status_set(metrics, "Connected");
- evel_mobile_gtp_metrics_tun_status_set(metrics, "Not tunneling");
- evel_mobile_gtp_metrics_iptos_set(metrics, 1, 13);
- evel_mobile_gtp_metrics_iptos_set(metrics, 17, 1);
- evel_mobile_gtp_metrics_iptos_set(metrics, 4, 99);
- evel_mobile_gtp_metrics_large_pkt_rtt_set(metrics, 80);
- evel_mobile_gtp_metrics_large_pkt_thresh_set(metrics, 600.0);
- evel_mobile_gtp_metrics_max_rcv_bit_rate_set(metrics, 1357924680);
- evel_mobile_gtp_metrics_max_trx_bit_rate_set(metrics, 235711);
- evel_mobile_gtp_metrics_num_echo_fail_set(metrics, 1);
- evel_mobile_gtp_metrics_num_tun_fail_set(metrics, 4);
- evel_mobile_gtp_metrics_num_http_errors_set(metrics, 2);
- evel_mobile_gtp_metrics_tcp_flag_count_add(metrics, EVEL_TCP_CWR, 10);
- evel_mobile_gtp_metrics_tcp_flag_count_add(metrics, EVEL_TCP_URG, 121);
- evel_mobile_gtp_metrics_qci_cos_count_add(
- metrics, EVEL_QCI_COS_UMTS_CONVERSATIONAL, 11);
- evel_mobile_gtp_metrics_qci_cos_count_add(
- metrics, EVEL_QCI_COS_LTE_65, 122);
-
- mobile_flow = evel_new_mobile_flow("Inbound",
- metrics,
- "UDP",
- "IPv6",
- "2.3.4.2",
- 2342,
- "4.2.3.2",
- 4322);
- assert(mobile_flow != NULL);
-
- evel_mobile_flow_type_set(mobile_flow, "Mobile flow...");
- evel_mobile_flow_app_type_set(mobile_flow, "Demo application");
- evel_mobile_flow_app_prot_type_set(mobile_flow, "GSM");
- evel_mobile_flow_app_prot_ver_set(mobile_flow, "1");
- evel_mobile_flow_cid_set(mobile_flow, "65535");
- evel_mobile_flow_con_type_set(mobile_flow, "S1-U");
- evel_mobile_flow_ecgi_set(mobile_flow, "e65535");
- evel_mobile_flow_gtp_prot_type_set(mobile_flow, "GTP-U");
- evel_mobile_flow_gtp_prot_ver_set(mobile_flow, "1");
- evel_mobile_flow_http_header_set(mobile_flow,
- "http://www.something.com");
- evel_mobile_flow_imei_set(mobile_flow, "209917614823");
- evel_mobile_flow_imsi_set(mobile_flow, "355251/05/850925/8");
- evel_mobile_flow_lac_set(mobile_flow, "1");
- evel_mobile_flow_mcc_set(mobile_flow, "410");
- evel_mobile_flow_mnc_set(mobile_flow, "04");
- evel_mobile_flow_msisdn_set(mobile_flow, "6017123456789");
- evel_mobile_flow_other_func_role_set(mobile_flow, "MME");
- evel_mobile_flow_rac_set(mobile_flow, "514");
- evel_mobile_flow_radio_acc_tech_set(mobile_flow, "LTE");
- evel_mobile_flow_sac_set(mobile_flow, "1");
- evel_mobile_flow_samp_alg_set(mobile_flow, 1);
- evel_mobile_flow_tac_set(mobile_flow, "2099");
- evel_mobile_flow_tunnel_id_set(mobile_flow, "Tunnel 1");
- evel_mobile_flow_vlan_id_set(mobile_flow, "15");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) mobile_flow);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Mobile");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(mobile_flow);
- evel_throttle_terminate();
-}
-
-void test_encode_other_throttled()
-{
- MEMORY_CHUNK post;
-
- /***************************************************************************/
- /* We also test suppression of the event header parameters here. */
- /***************************************************************************/
- char * json_command_list =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"other\", "
- "\"suppressedFieldNames\": ["
- "\"eventType\", "
- "\"reportingEntityId\", "
- "\"sourceId\"], "
- "\"suppressedNvPairsList\": ["
- "]}}}"
- "]"
- "}";
-
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"other\", "
- "\"eventId\": \"129\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 129, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2"
- "}, "
- "\"otherFields\": ["
- "{\"name\": \"Other field 1\", "
- "\"value\": \"Other value 1\"}, "
- "{\"name\": \"Other field 2\", "
- "\"value\": \"Other value 2\"}"
- "]"
- "}}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single fault suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list, &post);
-
- /***************************************************************************/
- /* Check that the domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_OTHER) != NULL);
- assert(post.memory == NULL);
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_OTHER * other = NULL;
- evel_set_next_event_sequence(129);
- other = evel_new_other();
- assert(other != NULL);
- evel_other_type_set(other, "Other Type");
- evel_other_field_add(other,
- "Other field 1",
- "Other value 1");
- evel_other_field_add(other,
- "Other field 2",
- "Other value 2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) other);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Other");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(other);
- evel_throttle_terminate();
-}
-
-void test_encode_report_throttled()
-{
- MEMORY_CHUNK post;
-
- /***************************************************************************/
- /* We also test suppression of the event header parameters here. */
- /***************************************************************************/
- char * json_command_list =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"report\", "
- "\"suppressedFieldNames\": ["
- "\"eventType\", "
- "\"reportingEntityId\", "
- "\"sourceId\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"featureUsageArray\", "
- "\"suppressedNvPairNames\": [\"FeatureB\", \"FeatureC\"]"
- "},"
- "{"
- "\"nvPairFieldName\": \"additionalMeasurements\", "
- "\"suppressedNvPairNames\": [\"Group2\"]"
- "}"
- "]}}}"
- "]"
- "}";
-
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"measurementsForVfReporting\", "
- "\"eventId\": \"125\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 125, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2"
- "}, "
- "\"measurementsForVfReportingFields\": "
- "{\"measurementInterval\": 1.100000, "
- "\"featureUsageArray\": ["
- "{\"featureIdentifier\": \"FeatureA\", "
- "\"featureUtilization\": 123}], "
- "\"additionalMeasurements\": ["
- "{\"name\": \"Group1\", "
- "\"measurements\": ["
- "{\"name\": \"Name1\", "
- "\"value\": \"Value1\"}]}], "
- "\"measurementFieldsVersion\": 1.1}}}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single fault suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list, &post);
-
- /***************************************************************************/
- /* Check that the domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_REPORT) != NULL);
- assert(post.memory == NULL);
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_REPORT * report = NULL;
-
- /***************************************************************************/
- /* Report. */
- /***************************************************************************/
- evel_set_next_event_sequence(125);
- report = evel_new_report(1.1);
- assert(report != NULL);
- evel_report_type_set(report, "Perf reporting...");
- evel_report_feature_use_add(report, "FeatureA", 123);
- evel_report_feature_use_add(report, "FeatureB", 567);
- evel_report_custom_measurement_add(report, "Group1", "Name1", "Value1");
- evel_report_custom_measurement_add(report, "Group2", "Name1", "Value1");
- evel_report_custom_measurement_add(report, "Group2", "Name2", "Value2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) report);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Report");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(report);
- evel_throttle_terminate();
-}
-
-void test_encode_service_throttled()
-{
- MEMORY_CHUNK post;
-
- /***************************************************************************/
- /* We also test suppression of the event header parameters here. */
- /***************************************************************************/
- char * json_command_list =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"serviceEvents\", "
- "\"suppressedFieldNames\": ["
- "\"eventType\", "
- "\"correlator\", "
- "\"codecSelected\", "
- "\"codecSelectedTranscoding\", "
- "\"endOfCallVqmSummaries\", "
- "\"midCallRtcp\", "
- "\"marker\", "
- "\"reportingEntityId\", "
- "\"sourceId\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"additionalFields\", "
- "\"suppressedNvPairNames\": [\"Name1\", \"Name3\"]"
- "}"
- "]}}}"
- "]"
- "}";
-
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"serviceEvents\", "
- "\"eventId\": \"2000\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 2000, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2"
- "}, "
- "\"serviceEventsFields\": {"
- "\"eventInstanceIdentifier\": "
- "{"
- "\"vendorId\": \"vendor_x_id\", "
- "\"eventId\": \"vendor_x_event_id\", "
- "\"productId\": \"vendor_x_product_id\", "
- "\"subsystemId\": \"vendor_x_subsystem_id\", "
- "\"eventFriendlyName\": \"vendor_x_frieldly_name\""
- "}, "
- "\"serviceEventsFieldsVersion\": 1.1, "
- "\"additionalFields\": ["
- "{\"name\": \"Name2\", \"value\": \"Value2\"}, "
- "{\"name\": \"Name4\", \"value\": \"Value4\"}]"
- "}}}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single fault suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list, &post);
-
- /***************************************************************************/
- /* Check that the domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_SERVICE) != NULL);
- assert(post.memory == NULL);
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_SERVICE * event = NULL;
- evel_set_next_event_sequence(2000);
- event = evel_new_service("vendor_x_id", "vendor_x_event_id");
- assert(event != NULL);
- evel_service_type_set(event, "Service Event");
- evel_service_product_id_set(event, "vendor_x_product_id");
- evel_service_subsystem_id_set(event, "vendor_x_subsystem_id");
- evel_service_friendly_name_set(event, "vendor_x_frieldly_name");
- evel_service_correlator_set(event, "vendor_x_correlator");
- evel_service_codec_set(event, "PCMA");
- evel_service_codec_set(event, "PCMA");
- evel_service_callee_codec_set(event, "PCMA");
- evel_service_caller_codec_set(event, "G729A");
- evel_service_rtcp_data_set(event, "some_rtcp_data");
- evel_service_adjacency_name_set(event, "vendor_x_adjacency");
- evel_service_endpoint_desc_set(event, EVEL_SERVICE_ENDPOINT_CALLER);
- evel_service_endpoint_jitter_set(event, 66);
- evel_service_endpoint_rtp_oct_disc_set(event, 100);
- evel_service_endpoint_rtp_oct_recv_set(event, 200);
- evel_service_endpoint_rtp_oct_sent_set(event, 300);
- evel_service_endpoint_rtp_pkt_disc_set(event, 400);
- evel_service_endpoint_rtp_pkt_recv_set(event, 500);
- evel_service_endpoint_rtp_pkt_sent_set(event, 600);
- evel_service_local_jitter_set(event, 99);
- evel_service_local_rtp_oct_disc_set(event, 150);
- evel_service_local_rtp_oct_recv_set(event, 250);
- evel_service_local_rtp_oct_sent_set(event, 350);
- evel_service_local_rtp_pkt_disc_set(event, 450);
- evel_service_local_rtp_pkt_recv_set(event, 550);
- evel_service_local_rtp_pkt_sent_set(event, 650);
- evel_service_mos_cqe_set(event, 12.255);
- evel_service_packets_lost_set(event, 157);
- evel_service_packet_loss_percent_set(event, 0.232);
- evel_service_r_factor_set(event, 11);
- evel_service_round_trip_delay_set(event, 15);
- evel_service_phone_number_set(event, "0888888888");
- evel_service_addl_field_add(event, "Name1", "Value1");
- evel_service_addl_field_add(event, "Name2", "Value2");
- evel_service_addl_field_add(event, "Name3", "Value3");
- evel_service_addl_field_add(event, "Name4", "Value4");
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) event);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Service");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(event);
- evel_throttle_terminate();
-}
-
-void test_encode_signaling_throttled()
-{
- MEMORY_CHUNK post;
-
- /***************************************************************************/
- /* We also test suppression of the event header parameters here. */
- /***************************************************************************/
- char * json_command_list =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"signaling\", "
- "\"suppressedFieldNames\": ["
- "\"correlator\", "
- "\"eventType\", "
- "\"reportingEntityId\", "
- "\"sourceId\", "
- "\"localIpAddress\", "
- "\"localPort\", "
- "\"remoteIpAddress\", "
- "\"remotePort\", "
- "\"compressedSip\", "
- "\"summarySip\"], "
- "\"suppressedNvPairsList\": ["
- "]}}}"
- "]"
- "}";
-
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"signaling\", "
- "\"eventId\": \"2001\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 2001, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2"
- "}, "
- "\"signalingFields\": {"
- "\"eventInstanceIdentifier\": "
- "{"
- "\"vendorId\": \"vendor_x_id\", "
- "\"eventId\": \"vendor_x_event_id\", "
- "\"productId\": \"vendor_x_product_id\", "
- "\"subsystemId\": \"vendor_x_subsystem_id\", "
- "\"eventFriendlyName\": \"vendor_x_frieldly_name\""
- "}, "
- "\"signalingFieldsVersion\": 1.1"
- "}}}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single fault suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list, &post);
-
- /***************************************************************************/
- /* Check that the domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_SIGNALING) != NULL);
- assert(post.memory == NULL);
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_SIGNALING * event = NULL;
- evel_set_next_event_sequence(2001);
- event = evel_new_signaling("vendor_x_id",
- "correlator", "1.0.3.1", "1234", "192.168.1.3","3456");
- assert(event != NULL);
- evel_signaling_vnfmodule_name_set(event, "vendor_x_module");
- evel_signaling_vnfname_set(event, "vendor_x_vnf");
- evel_signaling_type_set(event, "Signaling");
- evel_signaling_product_id_set(event, "vendor_x_product_id");
- evel_signaling_subsystem_id_set(event, "vendor_x_subsystem_id");
- evel_signaling_friendly_name_set(event, "vendor_x_frieldly_name");
- evel_signaling_correlator_set(event, "vendor_x_correlator");
- evel_signaling_local_ip_address_set(event, "1.0.3.1");
- evel_signaling_local_port_set(event, "1031");
- evel_signaling_remote_ip_address_set(event, "5.3.3.0");
- evel_signaling_remote_port_set(event, "5330");
- evel_signaling_compressed_sip_set(event, "compressed_sip");
- evel_signaling_summary_sip_set(event, "summary_sip");
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) event);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Signaling");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(event);
- evel_throttle_terminate();
-}
-
-void test_encode_state_change_throttled()
-{
- MEMORY_CHUNK post;
-
- /***************************************************************************/
- /* We also test suppression of the event header parameters here. */
- /***************************************************************************/
- char * json_command_list =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"stateChange\", "
- "\"suppressedFieldNames\": ["
- "\"eventType\", "
- "\"reportingEntityId\", "
- "\"sourceId\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"additionalFields\", "
- "\"suppressedNvPairNames\": [\"Name1\"]"
- "},"
- "]}}}"
- "]"
- "}";
-
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"stateChange\", "
- "\"eventId\": \"128\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 128, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2"
- "}, "
- "\"stateChangeFields\": {"
- "\"newState\": \"inService\", "
- "\"oldState\": \"outOfService\", "
- "\"stateInterface\": \"An Interface\", "
- "\"additionalFields\": ["
- "{\"name\": \"Name2\", "
- "\"value\": \"Value2\"}"
- "], "
- "\"stateChangeFieldsVersion\": 1.1"
- "}}}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single fault suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list, &post);
-
- /***************************************************************************/
- /* Check that the domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_STATE_CHANGE) != NULL);
- assert(post.memory == NULL);
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_STATE_CHANGE * state_change = NULL;
- evel_set_next_event_sequence(128);
- state_change = evel_new_state_change(EVEL_ENTITY_STATE_IN_SERVICE,
- EVEL_ENTITY_STATE_OUT_OF_SERVICE,
- "An Interface");
- assert(state_change != NULL);
- evel_state_change_type_set(state_change, "SC Type");
- evel_state_change_addl_field_add(state_change, "Name1", "Value1");
- evel_state_change_addl_field_add(state_change, "Name2", "Value2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) state_change);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "StateChange");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(state_change);
- evel_throttle_terminate();
-}
-
-void test_encode_syslog_throttled()
-{
- MEMORY_CHUNK post;
-
- /***************************************************************************/
- /* We also test suppression of the event header parameters here. */
- /***************************************************************************/
- char * json_command_list =
- "{"
- "\"commandList\": ["
- "{"
- "\"command\": {"
- "\"commandType\": \"throttlingSpecification\", "
- "\"eventDomainThrottleSpecification\": {"
- "\"eventDomain\": \"syslog\", "
- "\"suppressedFieldNames\": ["
- "\"eventSourceHost\", "
- "\"syslogFacility\", "
- "\"syslogProc\", "
- "\"syslogProcId\", "
- "\"syslogSData\", "
- "\"syslogVer\", "
- "\"eventType\", "
- "\"reportingEntityId\", "
- "\"sourceId\"], "
- "\"suppressedNvPairsList\": ["
- "{"
- "\"nvPairFieldName\": \"additionalFields\", "
- "\"suppressedNvPairNames\": [\"Name2\"]"
- "},"
- "]}}}"
- "]"
- "}";
-
- char * expected =
- "{\"event\": "
- "{\"commonEventHeader\": {"
- "\"domain\": \"syslog\", "
- "\"eventId\": \"126\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 126, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2"
- "}, "
- "\"syslogFields\": {"
- "\"eventSourceType\": \"virtualNetworkFunction\", "
- "\"syslogMsg\": \"SL Message\", "
- "\"syslogTag\": \"SL Tag\", "
- "\"syslogFieldsVersion\": 1.1, "
- "\"additionalFields\": ["
- "{\"name\": \"Name1\", "
- "\"value\": \"Value1\"}"
- "]"
- "}}}";
-
- /***************************************************************************/
- /* Initialize and provide a specification with a single fault suppressed. */
- /***************************************************************************/
- evel_throttle_initialize();
- handle_json_response(json_command_list, &post);
-
- /***************************************************************************/
- /* Check that the domain is throttled. */
- /***************************************************************************/
- assert(evel_get_throttle_spec(EVEL_DOMAIN_SYSLOG) != NULL);
- assert(post.memory == NULL);
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- EVENT_SYSLOG * syslog = NULL;
- evel_set_next_event_sequence(126);
- syslog = evel_new_syslog(EVEL_SOURCE_VIRTUAL_NETWORK_FUNCTION,
- "SL Message",
- "SL Tag");
- assert(syslog != NULL);
- evel_syslog_type_set(syslog, "SL Type");
- evel_syslog_event_source_host_set(syslog, "SL Host");
- evel_syslog_facility_set(syslog, EVEL_SYSLOG_FACILITY_LINE_PRINTER);
- evel_syslog_proc_set(syslog, "SL Proc");
- evel_syslog_proc_id_set(syslog, 2);
- evel_syslog_version_set(syslog, 1);
- evel_syslog_s_data_set(syslog, "SL SDATA");
- evel_syslog_addl_field_add(syslog, "Name1", "Value1");
- evel_syslog_addl_field_add(syslog, "Name2", "Value2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) syslog);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Syslog");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(syslog);
- evel_throttle_terminate();
-}
-
-void test_encode_fault_with_escaping()
-{
- char * expected =
- "{\"event\": {"
- "\"commonEventHeader\": {"
- "\"domain\": \"fault\", "
- "\"eventId\": \"122\", "
- "\"functionalRole\": \"UNIT TEST\", "
- "\"lastEpochMicrosec\": 1000002, "
- "\"priority\": \"Normal\", "
- "\"reportingEntityName\": \"Dummy VM name - No Metadata available\", "
- "\"sequence\": 122, "
- "\"sourceName\": \"Dummy VM name - No Metadata available\", "
- "\"startEpochMicrosec\": 1000002, "
- "\"version\": 1.2, "
- "\"eventType\": \"Bad things happen...\\\\\", "
- "\"reportingEntityId\": \"Dummy VM UUID - No Metadata available\", "
- "\"sourceId\": \"Dummy VM UUID - No Metadata available\""
- "}, "
- "\"faultFields\": {"
- "\"alarmCondition\": \"My alarm condition\", "
- "\"eventSeverity\": \"MAJOR\", "
- "\"eventSourceType\": \"other\", "
- "\"specificProblem\": \"It broke \\\"very\\\" badly\", "
- "\"vfStatus\": \"Active\", "
- "\"faultFieldsVersion\": 1.1, "
- "\"alarmAdditionalInformation\": ["
- "{\"name\": \"name1\", "
- "\"value\": \"value1\"}, "
- "{\"name\": \"name2\", "
- "\"value\": \"value2\"}], "
- "\"alarmInterfaceA\": \"My Interface Card\""
- "}}}";
-
- size_t json_size = 0;
- char json_body[EVEL_MAX_JSON_BODY];
- evel_set_next_event_sequence(122);
- EVENT_FAULT * fault = evel_new_fault("My alarm condition",
- "It broke \"very\" badly",
- EVEL_PRIORITY_NORMAL,
- EVEL_SEVERITY_MAJOR,
- EVEL_SOURCE_HOST,
- EVEL_VF_STATUS_PREP_TERMINATE);
- assert(fault != NULL);
- evel_fault_type_set(fault, "Bad things happen...\\");
- evel_fault_interface_set(fault, "My Interface Card");
- evel_fault_addl_info_add(fault, "name1", "value1");
- evel_fault_addl_info_add(fault, "name2", "value2");
-
- json_size = evel_json_encode_event(
- json_body, EVEL_MAX_JSON_BODY, (EVENT_HEADER *) fault);
- compare_strings(expected, json_body, EVEL_MAX_JSON_BODY, "Fault");
- assert((json_size == strlen(json_body)) && "Bad size returned");
-
- evel_free_event(fault);
-}