+++ /dev/null
-/*
-======================================================================
- Copyright (c) 2019 Nokia
- Copyright (c) 2018-2019 AT&T Intellectual Property.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions andlimitations under the License.
-======================================================================
-*/
-
-#include <ctype.h>
-#include <string.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <unistd.h>
-#include <stdbool.h>
-
-#define UTA_COMPAT
-#include <rmr/rmr.h>
-#include "ric_wg.h"
-
-//array to save ts for each transaction
-time_t ts_array[MAX_TRANS];
-//array to save tns for each transaction
-long int tns_array[MAX_TRANS];
-//array to save latency for each transaction
-double latency_array[MAX_TRANS]={0};
-//array to save time passed for each transaction
-double elapse_array[MAX_TRANS]={0};
-//array to save typeid for each transaction
-int type_array[MAX_TRANS]={0};
-
-//they are used to track time in order to get msg rate
-time_t ts_start_rcv;
-long int tns_start_rcv;
-
-int main( int argc, char** argv ) {
-
- void* mr;
- char* proto_port = "tcp:4560";
- uta_mbuf_t* msg = NULL;
- msg_t* pm;
- struct timespec ts;
- long long delta;
- long long elapse;
- double ms_delta;
- double ms_elapse;
- double total_ms_delta = 0.0;
- double ave_latency = 0.0;
- double rcv_rate = 0.0;
- long long rcv_count = 0;
-
- if((mr = uta_init( proto_port,
- UTA_MAX_RCV_BYTES, UTAFL_NONE )) == NULL) {
- fprintf(stderr,
- "abort: unable to initialize the message lib: %s\n",
- strerror(errno));
- exit(1);
- }
-
- while(rcv_count <= MAX_RCV_COUNT) {
-
- msg = uta_rcv_msg(mr, msg);
-
- if(msg) {
- type_array[rcv_count] = msg->mtype;
- pm = (msg_t *) msg->payload;
- clock_gettime(CLOCK_REALTIME, &ts);
- //record the time when the first msg is recieved
- if(rcv_count == 0) {
- ts_start_rcv = ts.tv_sec;
- tns_start_rcv = ts.tv_nsec;
- }
-
- delta = (ts.tv_sec - (pm->ts).tv_sec) * 1000000000 +
- ts.tv_nsec - (pm->ts).tv_nsec;
-
- ms_delta = (double) delta / 1000000;
- elapse = (ts.tv_sec - ts_start_rcv) * 1000000000
- + ts.tv_nsec - tns_start_rcv;
- ms_elapse = (double) elapse / 1000000;
- elapse_array[rcv_count] = ms_elapse;
- total_ms_delta += ms_delta;
- latency_array[rcv_count] = ms_delta;
- rcv_count++;
- }
-
- }
- //when test ends dump memory into file
- total_ms_delta -= latency_array[rcv_count - 1];
- ms_elapse = elapse_array[rcv_count - 2];
- rcv_count--;
- ave_latency = total_ms_delta/rcv_count;
- rcv_rate = (rcv_count/ms_elapse)*1000.0;
- char fname[256];
- snprintf(fname, sizeof fname, "report/xAPP_counters.csv");
- FILE *fptr = fopen(fname, "w");
- fprintf(fptr, "average latency %.3fmillisec\n", ave_latency);
- for(int i = 0; i < rcv_count; i++)
- fprintf(fptr, "%d %.3fmillisec \n", i, latency_array[i]);
- return 0;
-}
-