From 3fa16c6ab1909c23295b388bfe0f4d8f59cd9991 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 16 Aug 2021 09:59:15 -0400 Subject: [PATCH] TT#101150 generalise ng command stats into array/list Change-Id: I43c7074237ae70d9bcb12b4946ce2c751d135bc8 --- daemon/control_ng.c | 19 +- daemon/graphite.c | 54 +- daemon/statistics.c | 70 +- include/counter_stats_fields.inc | 4 +- include/gauge_stats_fields.inc | 5 +- include/statistics.h | 30 +- t/test-stats.c | 3438 +++++++++++++++++++++++++++++- 7 files changed, 3414 insertions(+), 206 deletions(-) diff --git a/daemon/control_ng.c b/daemon/control_ng.c index 1e727589d..d4fa52e93 100644 --- a/daemon/control_ng.c +++ b/daemon/control_ng.c @@ -323,23 +323,8 @@ int control_ng_process(str *buf, const endpoint_t *sin, char *addr, bencode_dictionary_add_string(resp, "result", resultstr); // update interval statistics - // XXX could generalise these, same as above - switch (command) { - case NGC_OFFER: - RTPE_STATS_INC(offers); - RTPE_GAUGE_SET(offer_time, timeval_us(&cmd_process_time)); - break; - case NGC_ANSWER: - RTPE_STATS_INC(answers); - RTPE_GAUGE_SET(answer_time, timeval_us(&cmd_process_time)); - break; - case NGC_DELETE: - RTPE_STATS_INC(deletes); - RTPE_GAUGE_SET(delete_time, timeval_us(&cmd_process_time)); - break; - default: - break; - } + RTPE_STATS_INC(ng_commands[command]); + RTPE_GAUGE_SET(ng_command_times[command], timeval_us(&cmd_process_time)); goto send_resp; diff --git a/daemon/graphite.c b/daemon/graphite.c index 5838867d9..34493a106 100644 --- a/daemon/graphite.c +++ b/daemon/graphite.c @@ -116,17 +116,14 @@ GString *print_graphite_data(struct totalstats *sent_data) { g_string_append(graph_str, graphite_prefix); \ g_string_append_printf(graph_str, fmt " %llu\n", ##__VA_ARGS__, (unsigned long long)rtpe_now.tv_sec) - GPF("offer_time_min %.6f", (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.min.offer_time) / 1000000.0); - GPF("offer_time_max %.6f", (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.max.offer_time) / 1000000.0); - GPF("offer_time_avg %.6f", (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.avg.offer_time) / 1000000.0); - - GPF("answer_time_min %.6f", (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.min.answer_time) / 1000000.0); - GPF("answer_time_max %.6f", (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.max.answer_time) / 1000000.0); - GPF("answer_time_avg %.6f", (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.avg.answer_time) / 1000000.0); - - GPF("delete_time_min %.6f", (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.min.delete_time) / 1000000.0); - GPF("delete_time_max %.6f", (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.max.delete_time) / 1000000.0); - GPF("delete_time_avg %.6f", (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.avg.delete_time) / 1000000.0); + for (int i = 0; i < NGC_COUNT; i++) { + GPF("%s_time_min %.6f", ng_command_strings[i], + (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.min.ng_command_times[i]) / 1000000.0); + GPF("%s_time_max %.6f", ng_command_strings[i], + (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.max.ng_command_times[i]) / 1000000.0); + GPF("%s_time_avg %.6f", ng_command_strings[i], + (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.avg.ng_command_times[i]) / 1000000.0); + } GPF("call_dur %llu.%06llu",(unsigned long long)ts->total_calls_duration_interval.tv_sec,(unsigned long long)ts->total_calls_duration_interval.tv_usec); GPF("average_call_dur %llu.%06llu",(unsigned long long)ts->total_average_call_dur.tv_sec,(unsigned long long)ts->total_average_call_dur.tv_usec); @@ -152,17 +149,11 @@ GString *print_graphite_data(struct totalstats *sent_data) { GPF("timeout_sess "UINT64F, atomic64_get_na(&rtpe_stats_graphite_interval.timeout_sess)); GPF("reject_sess "UINT64F, atomic64_get_na(&rtpe_stats_graphite_interval.rejected_sess)); - GPF("offers_ps_min " UINT64F, atomic64_get_na(&rtpe_stats_graphite_min_max_interval.min.offers)); - GPF("offers_ps_max " UINT64F, atomic64_get_na(&rtpe_stats_graphite_min_max_interval.max.offers)); - GPF("offers_ps_avg " UINT64F, atomic64_get_na(&rtpe_stats_graphite_min_max_interval.avg.offers)); - - GPF("answers_ps_min " UINT64F, atomic64_get_na(&rtpe_stats_graphite_min_max_interval.min.answers)); - GPF("answers_ps_max " UINT64F, atomic64_get_na(&rtpe_stats_graphite_min_max_interval.max.answers)); - GPF("answers_ps_avg " UINT64F, atomic64_get_na(&rtpe_stats_graphite_min_max_interval.avg.answers)); - - GPF("deletes_ps_min " UINT64F, atomic64_get_na(&rtpe_stats_graphite_min_max_interval.min.deletes)); - GPF("deletes_ps_max " UINT64F, atomic64_get_na(&rtpe_stats_graphite_min_max_interval.max.deletes)); - GPF("deletes_ps_avg " UINT64F, atomic64_get_na(&rtpe_stats_graphite_min_max_interval.avg.deletes)); + for (int i = 0; i < NGC_COUNT; i++) { + GPF("%ss_ps_min " UINT64F, ng_command_strings[i], atomic64_get(&rtpe_stats_graphite_min_max_interval.min.ng_commands[i])); + GPF("%ss_ps_max " UINT64F, ng_command_strings[i], atomic64_get(&rtpe_stats_graphite_min_max_interval.max.ng_commands[i])); + GPF("%ss_ps_avg " UINT64F, ng_command_strings[i], atomic64_get(&rtpe_stats_graphite_min_max_interval.avg.ng_commands[i])); + } for (GList *l = all_local_interfaces.head; l; l = l->next) { struct local_intf *lif = l->data; @@ -210,18 +201,13 @@ GString *print_graphite_data(struct totalstats *sent_data) { (unsigned long long ) ts->total_calls_duration_interval.tv_usec, (unsigned long long ) rtpe_now.tv_sec); - ilog(LOG_DEBUG, "Min/Max/Avg offer processing delay: %.6f/%.6f/%.6f sec", - (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.min.offer_time) / 1000000.0, - (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.max.offer_time) / 1000000.0, - (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.avg.offer_time) / 1000000.0); - ilog(LOG_DEBUG, "Min/Max/Avg answer processing delay: %.6f/%.6f/%.6f sec", - (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.min.answer_time) / 1000000.0, - (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.max.answer_time) / 1000000.0, - (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.avg.answer_time) / 1000000.0); - ilog(LOG_DEBUG, "Min/Max/Avg delete processing delay: %.6f/%.6f/%.6f sec", - (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.min.delete_time) / 1000000.0, - (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.max.delete_time) / 1000000.0, - (double) atomic64_get_na(&rtpe_stats_gauge_graphite_min_max_interval.avg.delete_time) / 1000000.0); + for (int i = 0; i < NGC_COUNT; i++) { + ilog(LOG_DEBUG, "Min/Max/Avg %s processing delay: %.6f/%.6f/%.6f sec", + ng_command_strings[i], + (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.min.ng_command_times[i]) / 1000000.0, + (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.max.ng_command_times[i]) / 1000000.0, + (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.avg.ng_command_times[i]) / 1000000.0); + } return graph_str; } diff --git a/daemon/statistics.c b/daemon/statistics.c index 57b2e1c0d..115a575b3 100644 --- a/daemon/statistics.c +++ b/daemon/statistics.c @@ -516,49 +516,33 @@ GQueue *statistics_gather_metrics(void) { METRIC("minmanagedsessions", "Min managed sessions", UINT64F, UINT64F, min_sess_iv); METRIC("maxmanagedsessions", "Max managed sessions", UINT64F, UINT64F, max_sess_iv); - METRICl("Min/Max/Avg offer processing delay", "%.6f/%.6f/%.6f sec", - (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.min.offer_time) / 1000000.0, - (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.max.offer_time) / 1000000.0, - (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.avg.offer_time) / 1000000.0); - METRICsva("minofferdelay", "%.6f", (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.min.offer_time) / 1000000.0); - METRICsva("maxofferdelay", "%.6f", (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.max.offer_time) / 1000000.0); - METRICsva("avgofferdelay", "%.6f", (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.avg.offer_time) / 1000000.0); - METRICl("Min/Max/Avg answer processing delay", "%.6f/%.6f/%.6f sec", - (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.min.answer_time) / 1000000.0, - (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.max.answer_time) / 1000000.0, - (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.avg.answer_time) / 1000000.0); - METRICsva("minanswerdelay", "%.6f", (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.min.answer_time) / 1000000.0); - METRICsva("maxanswerdelay", "%.6f", (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.max.answer_time) / 1000000.0); - METRICsva("avganswerdelay", "%.6f", (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.avg.answer_time) / 1000000.0); - METRICl("Min/Max/Avg delete processing delay", "%.6f/%.6f/%.6f sec", - (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.min.delete_time) / 1000000.0, - (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.max.delete_time) / 1000000.0, - (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.avg.delete_time) / 1000000.0); - METRICsva("mindeletedelay", "%.6f", (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.min.delete_time) / 1000000.0); - METRICsva("maxdeletedelay", "%.6f", (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.max.delete_time) / 1000000.0); - METRICsva("avgdeletedelay", "%.6f", (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.avg.delete_time) / 1000000.0); - - METRICl("Min/Max/Avg offer requests per second", "%llu/%llu/%llu per sec", - (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.min.offers), - (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.max.offers), - (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.avg.offers)); - METRICs("minofferrequestrate", "%llu", (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.min.offers)); - METRICs("maxofferrequestrate", "%llu", (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.max.offers)); - METRICs("avgofferrequestrate", "%llu", (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.avg.offers)); - METRICl("Min/Max/Avg answer requests per second", "%llu/%llu/%llu per sec", - (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.min.answers), - (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.max.answers), - (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.avg.answers)); - METRICs("minanswerrequestrate", "%llu", (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.min.answers)); - METRICs("maxanswerrequestrate", "%llu", (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.max.answers)); - METRICs("avganswerrequestrate", "%llu", (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.avg.answers)); - METRICl("Min/Max/Avg delete requests per second", "%llu/%llu/%llu per sec", - (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.min.deletes), - (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.max.deletes), - (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.avg.deletes)); - METRICs("mindeleterequestrate", "%llu", (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.min.deletes)); - METRICs("maxdeleterequestrate", "%llu", (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.max.deletes)); - METRICs("avgdeleterequestrate", "%llu", (unsigned long long) atomic64_get(&rtpe_stats_graphite_min_max_interval.avg.deletes)); + for (int i = 0; i < NGC_COUNT; i++) { + double min = (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.min.ng_command_times[i]) / 1000000.0; + double max = (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.max.ng_command_times[i]) / 1000000.0; + double avg = (double) atomic64_get(&rtpe_stats_gauge_graphite_min_max_interval.avg.ng_command_times[i]) / 1000000.0; + AUTO_CLEANUP(char *min_label, free_gbuf) = g_strdup_printf("min%sdelay", ng_command_strings[i]); + AUTO_CLEANUP(char *max_label, free_gbuf) = g_strdup_printf("max%sdelay", ng_command_strings[i]); + AUTO_CLEANUP(char *avg_label, free_gbuf) = g_strdup_printf("avg%sdelay", ng_command_strings[i]); + AUTO_CLEANUP(char *long_label, free_gbuf) = g_strdup_printf("Min/Max/Avg %s processing delay", ng_command_strings[i]); + METRICl(long_label, "%.6f/%.6f/%.6f sec", min, max, avg); + METRICsva(min_label, "%.6f", min); + METRICsva(max_label, "%.6f", max); + METRICsva(avg_label, "%.6f", avg); + } + + for (int i = 0; i < NGC_COUNT; i++) { + uint64_t min = atomic64_get(&rtpe_stats_graphite_min_max_interval.min.ng_commands[i]); + uint64_t max = atomic64_get(&rtpe_stats_graphite_min_max_interval.max.ng_commands[i]); + uint64_t avg = atomic64_get(&rtpe_stats_graphite_min_max_interval.avg.ng_commands[i]); + AUTO_CLEANUP(char *min_label, free_gbuf) = g_strdup_printf("min%srequestrate", ng_command_strings[i]); + AUTO_CLEANUP(char *max_label, free_gbuf) = g_strdup_printf("max%srequestrate", ng_command_strings[i]); + AUTO_CLEANUP(char *avg_label, free_gbuf) = g_strdup_printf("avg%srequestrate", ng_command_strings[i]); + AUTO_CLEANUP(char *long_label, free_gbuf) = g_strdup_printf("Min/Max/Avg %s requests per second", ng_command_strings[i]); + METRICl(long_label, "%" PRIu64 "/%" PRIu64 "/%" PRIu64 " per sec", min, max, avg); + METRICsva(min_label, "%" PRIu64 "", min); + METRICsva(max_label, "%" PRIu64 "", max); + METRICsva(avg_label, "%" PRIu64 "", avg); + } HEADER(NULL, ""); HEADER("}", ""); diff --git a/include/counter_stats_fields.inc b/include/counter_stats_fields.inc index ad96363b3..2538e6a37 100644 --- a/include/counter_stats_fields.inc +++ b/include/counter_stats_fields.inc @@ -1,9 +1,7 @@ F(packets) F(bytes) F(errors) -F(offers) -F(answers) -F(deletes) +FA(ng_commands, NGC_COUNT) F(timeout_sess) F(foreign_sess) F(rejected_sess) diff --git a/include/gauge_stats_fields.inc b/include/gauge_stats_fields.inc index fb405eb7a..34bedbac5 100644 --- a/include/gauge_stats_fields.inc +++ b/include/gauge_stats_fields.inc @@ -1,8 +1,7 @@ +F(total_sessions) F(foreign_sessions) F(transcoded_media) F(ipv4_sessions) F(ipv6_sessions) F(mixed_sessions) -F(offer_time) -F(answer_time) -F(delete_time) +FdA(ng_command_times, NGC_COUNT) diff --git a/include/statistics.h b/include/statistics.h index f1110bf83..95b4af91e 100644 --- a/include/statistics.h +++ b/include/statistics.h @@ -4,6 +4,7 @@ #include "aux.h" #include "bencode.h" #include "rtpengine_config.h" +#include "control_ng.h" struct call; struct packet_stream; @@ -21,9 +22,16 @@ struct stream_stats { // "gauge" style stats struct global_stats_gauge { +// F(x) : real gauge that has a continuous value +// Fd(x) : gauge that receives values in discreet samples +// FA(x, n) / FdA(x, n) : array of the above #define F(x) atomic64 x; +#define Fd(x) F(x) +#define FA(x, n) atomic64 x[n]; +#define FdA(x, n) FA(x, n) #include "gauge_stats_fields.inc" #undef F +#undef FA }; struct global_stats_gauge_min_max { @@ -36,8 +44,10 @@ struct global_stats_gauge_min_max { // "counter" style stats that are incremental and are kept cumulative or per-interval struct global_stats_counter { #define F(x) atomic64 x; +#define FA(x, n) atomic64 x[n]; #include "counter_stats_fields.inc" #undef F +#undef FA }; struct global_stats_ax { @@ -142,6 +152,7 @@ INLINE void stats_counters_ax_calc_avg(struct global_stats_ax *stats, long long return; #define F(x) stats_counters_ax_calc_avg1(&stats->ax.x, &stats->intv.x, loc ? &loc->x : NULL, run_diff_us); +#define FA(x, n) for (int i = 0; i < n; i++) { F(x[i]) } #include "counter_stats_fields.inc" #undef F } @@ -183,17 +194,28 @@ INLINE void stats_counters_min_max_reset(struct global_stats_min_max *mm, struct atomic64_inc(&min_max_struct.count.field); \ } while (0) +extern struct global_stats_gauge rtpe_stats_gauge; + INLINE void stats_gauge_calc_avg_reset(struct global_stats_gauge_min_max *out, struct global_stats_gauge_min_max *in_reset) { - uint64_t count; + uint64_t cur, count; -#define F(x) \ - atomic64_set(&out->min.x, atomic64_get_set(&in_reset->min.x, 0)); \ - atomic64_set(&out->max.x, atomic64_get_set(&in_reset->max.x, 0)); \ +#define Fc(x) \ + atomic64_set(&out->min.x, atomic64_get_set(&in_reset->min.x, cur)); \ + atomic64_set(&out->max.x, atomic64_get_set(&in_reset->max.x, cur)); \ count = atomic64_get_set(&in_reset->count.x, 0); \ atomic64_set(&out->count.x, count); \ atomic64_set(&out->avg.x, count ? atomic64_get_set(&in_reset->avg.x, 0) / count : 0); +#define F(x) \ + cur = atomic64_get(&rtpe_stats_gauge.x); \ + Fc(x) +#undef Fd +#undef FdA +#define Fd(x) \ + cur = 0; \ + Fc(x) +#define FdA(x, n) for (int i = 0; i < n; i++) { Fd(x[i]) } #include "gauge_stats_fields.inc" #undef F } diff --git a/t/test-stats.c b/t/test-stats.c index 16d0dd6f4..bf9e91eb9 100644 --- a/t/test-stats.c +++ b/t/test-stats.c @@ -75,6 +75,9 @@ int main(void) { GString *graph_str = print_graphite_data(&rtpe_totalstats_lastinterval); assert_g_string_eq(graph_str, + "ping_time_min 0.000000 150\n" + "ping_time_max 0.000000 150\n" + "ping_time_avg 0.000000 150\n" "offer_time_min 0.000000 150\n" "offer_time_max 0.000000 150\n" "offer_time_avg 0.000000 150\n" @@ -84,6 +87,66 @@ int main(void) { "delete_time_min 0.000000 150\n" "delete_time_max 0.000000 150\n" "delete_time_avg 0.000000 150\n" + "query_time_min 0.000000 150\n" + "query_time_max 0.000000 150\n" + "query_time_avg 0.000000 150\n" + "list_time_min 0.000000 150\n" + "list_time_max 0.000000 150\n" + "list_time_avg 0.000000 150\n" + "start recording_time_min 0.000000 150\n" + "start recording_time_max 0.000000 150\n" + "start recording_time_avg 0.000000 150\n" + "stop recording_time_min 0.000000 150\n" + "stop recording_time_max 0.000000 150\n" + "stop recording_time_avg 0.000000 150\n" + "start forwarding_time_min 0.000000 150\n" + "start forwarding_time_max 0.000000 150\n" + "start forwarding_time_avg 0.000000 150\n" + "stop forwarding_time_min 0.000000 150\n" + "stop forwarding_time_max 0.000000 150\n" + "stop forwarding_time_avg 0.000000 150\n" + "block DTMF_time_min 0.000000 150\n" + "block DTMF_time_max 0.000000 150\n" + "block DTMF_time_avg 0.000000 150\n" + "unblock DTMF_time_min 0.000000 150\n" + "unblock DTMF_time_max 0.000000 150\n" + "unblock DTMF_time_avg 0.000000 150\n" + "block media_time_min 0.000000 150\n" + "block media_time_max 0.000000 150\n" + "block media_time_avg 0.000000 150\n" + "unblock media_time_min 0.000000 150\n" + "unblock media_time_max 0.000000 150\n" + "unblock media_time_avg 0.000000 150\n" + "play media_time_min 0.000000 150\n" + "play media_time_max 0.000000 150\n" + "play media_time_avg 0.000000 150\n" + "stop media_time_min 0.000000 150\n" + "stop media_time_max 0.000000 150\n" + "stop media_time_avg 0.000000 150\n" + "play DTMF_time_min 0.000000 150\n" + "play DTMF_time_max 0.000000 150\n" + "play DTMF_time_avg 0.000000 150\n" + "statistics_time_min 0.000000 150\n" + "statistics_time_max 0.000000 150\n" + "statistics_time_avg 0.000000 150\n" + "silence media_time_min 0.000000 150\n" + "silence media_time_max 0.000000 150\n" + "silence media_time_avg 0.000000 150\n" + "unsilence media_time_min 0.000000 150\n" + "unsilence media_time_max 0.000000 150\n" + "unsilence media_time_avg 0.000000 150\n" + "publish_time_min 0.000000 150\n" + "publish_time_max 0.000000 150\n" + "publish_time_avg 0.000000 150\n" + "subscribe request_time_min 0.000000 150\n" + "subscribe request_time_max 0.000000 150\n" + "subscribe request_time_avg 0.000000 150\n" + "subscribe answer_time_min 0.000000 150\n" + "subscribe answer_time_max 0.000000 150\n" + "subscribe answer_time_avg 0.000000 150\n" + "unsubscribe_time_min 0.000000 150\n" + "unsubscribe_time_max 0.000000 150\n" + "unsubscribe_time_avg 0.000000 150\n" "call_dur 0.000000 150\n" "average_call_dur 0.000000 150\n" "forced_term_sess 0 150\n" @@ -107,6 +170,9 @@ int main(void) { "offer_timeout_sess 0 150\n" "timeout_sess 0 150\n" "reject_sess 0 150\n" + "pings_ps_min 0 150\n" + "pings_ps_max 0 150\n" + "pings_ps_avg 0 150\n" "offers_ps_min 0 150\n" "offers_ps_max 0 150\n" "offers_ps_avg 0 150\n" @@ -115,7 +181,67 @@ int main(void) { "answers_ps_avg 0 150\n" "deletes_ps_min 0 150\n" "deletes_ps_max 0 150\n" - "deletes_ps_avg 0 150\n"); + "deletes_ps_avg 0 150\n" + "querys_ps_min 0 150\n" + "querys_ps_max 0 150\n" + "querys_ps_avg 0 150\n" + "lists_ps_min 0 150\n" + "lists_ps_max 0 150\n" + "lists_ps_avg 0 150\n" + "start recordings_ps_min 0 150\n" + "start recordings_ps_max 0 150\n" + "start recordings_ps_avg 0 150\n" + "stop recordings_ps_min 0 150\n" + "stop recordings_ps_max 0 150\n" + "stop recordings_ps_avg 0 150\n" + "start forwardings_ps_min 0 150\n" + "start forwardings_ps_max 0 150\n" + "start forwardings_ps_avg 0 150\n" + "stop forwardings_ps_min 0 150\n" + "stop forwardings_ps_max 0 150\n" + "stop forwardings_ps_avg 0 150\n" + "block DTMFs_ps_min 0 150\n" + "block DTMFs_ps_max 0 150\n" + "block DTMFs_ps_avg 0 150\n" + "unblock DTMFs_ps_min 0 150\n" + "unblock DTMFs_ps_max 0 150\n" + "unblock DTMFs_ps_avg 0 150\n" + "block medias_ps_min 0 150\n" + "block medias_ps_max 0 150\n" + "block medias_ps_avg 0 150\n" + "unblock medias_ps_min 0 150\n" + "unblock medias_ps_max 0 150\n" + "unblock medias_ps_avg 0 150\n" + "play medias_ps_min 0 150\n" + "play medias_ps_max 0 150\n" + "play medias_ps_avg 0 150\n" + "stop medias_ps_min 0 150\n" + "stop medias_ps_max 0 150\n" + "stop medias_ps_avg 0 150\n" + "play DTMFs_ps_min 0 150\n" + "play DTMFs_ps_max 0 150\n" + "play DTMFs_ps_avg 0 150\n" + "statisticss_ps_min 0 150\n" + "statisticss_ps_max 0 150\n" + "statisticss_ps_avg 0 150\n" + "silence medias_ps_min 0 150\n" + "silence medias_ps_max 0 150\n" + "silence medias_ps_avg 0 150\n" + "unsilence medias_ps_min 0 150\n" + "unsilence medias_ps_max 0 150\n" + "unsilence medias_ps_avg 0 150\n" + "publishs_ps_min 0 150\n" + "publishs_ps_max 0 150\n" + "publishs_ps_avg 0 150\n" + "subscribe requests_ps_min 0 150\n" + "subscribe requests_ps_max 0 150\n" + "subscribe requests_ps_avg 0 150\n" + "subscribe answers_ps_min 0 150\n" + "subscribe answers_ps_max 0 150\n" + "subscribe answers_ps_avg 0 150\n" + "unsubscribes_ps_min 0 150\n" + "unsubscribes_ps_max 0 150\n" + "unsubscribes_ps_avg 0 150\n"); GQueue *stats = statistics_gather_metrics(); assert_metrics_eq(stats, @@ -247,6 +373,14 @@ int main(void) { "maxmanagedsessions\n" "0\n" "0\n" + "Min/Max/Avg ping processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpingdelay\n" + "0.000000\n" + "maxpingdelay\n" + "0.000000\n" + "avgpingdelay\n" + "0.000000\n" "Min/Max/Avg offer processing delay\n" "0.000000/0.000000/0.000000 sec\n" "minofferdelay\n" @@ -271,6 +405,174 @@ int main(void) { "0.000000\n" "avgdeletedelay\n" "0.000000\n" + "Min/Max/Avg query processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minquerydelay\n" + "0.000000\n" + "maxquerydelay\n" + "0.000000\n" + "avgquerydelay\n" + "0.000000\n" + "Min/Max/Avg list processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minlistdelay\n" + "0.000000\n" + "maxlistdelay\n" + "0.000000\n" + "avglistdelay\n" + "0.000000\n" + "Min/Max/Avg start recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart recordingdelay\n" + "0.000000\n" + "maxstart recordingdelay\n" + "0.000000\n" + "avgstart recordingdelay\n" + "0.000000\n" + "Min/Max/Avg stop recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop recordingdelay\n" + "0.000000\n" + "maxstop recordingdelay\n" + "0.000000\n" + "avgstop recordingdelay\n" + "0.000000\n" + "Min/Max/Avg start forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart forwardingdelay\n" + "0.000000\n" + "maxstart forwardingdelay\n" + "0.000000\n" + "avgstart forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg stop forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop forwardingdelay\n" + "0.000000\n" + "maxstop forwardingdelay\n" + "0.000000\n" + "avgstop forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg block DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock DTMFdelay\n" + "0.000000\n" + "maxblock DTMFdelay\n" + "0.000000\n" + "avgblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg unblock DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock DTMFdelay\n" + "0.000000\n" + "maxunblock DTMFdelay\n" + "0.000000\n" + "avgunblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg block media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock mediadelay\n" + "0.000000\n" + "maxblock mediadelay\n" + "0.000000\n" + "avgblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg unblock media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock mediadelay\n" + "0.000000\n" + "maxunblock mediadelay\n" + "0.000000\n" + "avgunblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg play media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay mediadelay\n" + "0.000000\n" + "maxplay mediadelay\n" + "0.000000\n" + "avgplay mediadelay\n" + "0.000000\n" + "Min/Max/Avg stop media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop mediadelay\n" + "0.000000\n" + "maxstop mediadelay\n" + "0.000000\n" + "avgstop mediadelay\n" + "0.000000\n" + "Min/Max/Avg play DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay DTMFdelay\n" + "0.000000\n" + "maxplay DTMFdelay\n" + "0.000000\n" + "avgplay DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg statistics processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstatisticsdelay\n" + "0.000000\n" + "maxstatisticsdelay\n" + "0.000000\n" + "avgstatisticsdelay\n" + "0.000000\n" + "Min/Max/Avg silence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsilence mediadelay\n" + "0.000000\n" + "maxsilence mediadelay\n" + "0.000000\n" + "avgsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg unsilence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsilence mediadelay\n" + "0.000000\n" + "maxunsilence mediadelay\n" + "0.000000\n" + "avgunsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg publish processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpublishdelay\n" + "0.000000\n" + "maxpublishdelay\n" + "0.000000\n" + "avgpublishdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe request processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe requestdelay\n" + "0.000000\n" + "maxsubscribe requestdelay\n" + "0.000000\n" + "avgsubscribe requestdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe answer processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe answerdelay\n" + "0.000000\n" + "maxsubscribe answerdelay\n" + "0.000000\n" + "avgsubscribe answerdelay\n" + "0.000000\n" + "Min/Max/Avg unsubscribe processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsubscribedelay\n" + "0.000000\n" + "maxunsubscribedelay\n" + "0.000000\n" + "avgunsubscribedelay\n" + "0.000000\n" + "Min/Max/Avg ping requests per second\n" + "0/0/0 per sec\n" + "minpingrequestrate\n" + "0\n" + "maxpingrequestrate\n" + "0\n" + "avgpingrequestrate\n" + "0\n" "Min/Max/Avg offer requests per second\n" "0/0/0 per sec\n" "minofferrequestrate\n" @@ -295,6 +597,166 @@ int main(void) { "0\n" "avgdeleterequestrate\n" "0\n" + "Min/Max/Avg query requests per second\n" + "0/0/0 per sec\n" + "minqueryrequestrate\n" + "0\n" + "maxqueryrequestrate\n" + "0\n" + "avgqueryrequestrate\n" + "0\n" + "Min/Max/Avg list requests per second\n" + "0/0/0 per sec\n" + "minlistrequestrate\n" + "0\n" + "maxlistrequestrate\n" + "0\n" + "avglistrequestrate\n" + "0\n" + "Min/Max/Avg start recording requests per second\n" + "0/0/0 per sec\n" + "minstart recordingrequestrate\n" + "0\n" + "maxstart recordingrequestrate\n" + "0\n" + "avgstart recordingrequestrate\n" + "0\n" + "Min/Max/Avg stop recording requests per second\n" + "0/0/0 per sec\n" + "minstop recordingrequestrate\n" + "0\n" + "maxstop recordingrequestrate\n" + "0\n" + "avgstop recordingrequestrate\n" + "0\n" + "Min/Max/Avg start forwarding requests per second\n" + "0/0/0 per sec\n" + "minstart forwardingrequestrate\n" + "0\n" + "maxstart forwardingrequestrate\n" + "0\n" + "avgstart forwardingrequestrate\n" + "0\n" + "Min/Max/Avg stop forwarding requests per second\n" + "0/0/0 per sec\n" + "minstop forwardingrequestrate\n" + "0\n" + "maxstop forwardingrequestrate\n" + "0\n" + "avgstop forwardingrequestrate\n" + "0\n" + "Min/Max/Avg block DTMF requests per second\n" + "0/0/0 per sec\n" + "minblock DTMFrequestrate\n" + "0\n" + "maxblock DTMFrequestrate\n" + "0\n" + "avgblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg unblock DTMF requests per second\n" + "0/0/0 per sec\n" + "minunblock DTMFrequestrate\n" + "0\n" + "maxunblock DTMFrequestrate\n" + "0\n" + "avgunblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg block media requests per second\n" + "0/0/0 per sec\n" + "minblock mediarequestrate\n" + "0\n" + "maxblock mediarequestrate\n" + "0\n" + "avgblock mediarequestrate\n" + "0\n" + "Min/Max/Avg unblock media requests per second\n" + "0/0/0 per sec\n" + "minunblock mediarequestrate\n" + "0\n" + "maxunblock mediarequestrate\n" + "0\n" + "avgunblock mediarequestrate\n" + "0\n" + "Min/Max/Avg play media requests per second\n" + "0/0/0 per sec\n" + "minplay mediarequestrate\n" + "0\n" + "maxplay mediarequestrate\n" + "0\n" + "avgplay mediarequestrate\n" + "0\n" + "Min/Max/Avg stop media requests per second\n" + "0/0/0 per sec\n" + "minstop mediarequestrate\n" + "0\n" + "maxstop mediarequestrate\n" + "0\n" + "avgstop mediarequestrate\n" + "0\n" + "Min/Max/Avg play DTMF requests per second\n" + "0/0/0 per sec\n" + "minplay DTMFrequestrate\n" + "0\n" + "maxplay DTMFrequestrate\n" + "0\n" + "avgplay DTMFrequestrate\n" + "0\n" + "Min/Max/Avg statistics requests per second\n" + "0/0/0 per sec\n" + "minstatisticsrequestrate\n" + "0\n" + "maxstatisticsrequestrate\n" + "0\n" + "avgstatisticsrequestrate\n" + "0\n" + "Min/Max/Avg silence media requests per second\n" + "0/0/0 per sec\n" + "minsilence mediarequestrate\n" + "0\n" + "maxsilence mediarequestrate\n" + "0\n" + "avgsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg unsilence media requests per second\n" + "0/0/0 per sec\n" + "minunsilence mediarequestrate\n" + "0\n" + "maxunsilence mediarequestrate\n" + "0\n" + "avgunsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg publish requests per second\n" + "0/0/0 per sec\n" + "minpublishrequestrate\n" + "0\n" + "maxpublishrequestrate\n" + "0\n" + "avgpublishrequestrate\n" + "0\n" + "Min/Max/Avg subscribe request requests per second\n" + "0/0/0 per sec\n" + "minsubscribe requestrequestrate\n" + "0\n" + "maxsubscribe requestrequestrate\n" + "0\n" + "avgsubscribe requestrequestrate\n" + "0\n" + "Min/Max/Avg subscribe answer requests per second\n" + "0/0/0 per sec\n" + "minsubscribe answerrequestrate\n" + "0\n" + "maxsubscribe answerrequestrate\n" + "0\n" + "avgsubscribe answerrequestrate\n" + "0\n" + "Min/Max/Avg unsubscribe requests per second\n" + "0/0/0 per sec\n" + "minunsubscriberequestrate\n" + "0\n" + "maxunsubscriberequestrate\n" + "0\n" + "avgunsubscriberequestrate\n" + "0\n" "\n" "\n" "}\n" @@ -367,14 +829,17 @@ int main(void) { "]\n" "}\n"); - RTPE_STATS_INC(offers); - RTPE_GAUGE_SET(offer_time, 2500000); + RTPE_STATS_INC(ng_commands[NGC_OFFER]); + RTPE_GAUGE_SET(ng_command_times[NGC_OFFER], 2500000); - RTPE_STATS_INC(offers); - RTPE_GAUGE_SET(offer_time, 3200000); + RTPE_STATS_INC(ng_commands[NGC_OFFER]); + RTPE_GAUGE_SET(ng_command_times[NGC_OFFER], 3200000); graph_str = print_graphite_data(&rtpe_totalstats_lastinterval); assert_g_string_eq(graph_str, + "ping_time_min 0.000000 150\n" + "ping_time_max 0.000000 150\n" + "ping_time_avg 0.000000 150\n" "offer_time_min 2.500000 150\n" "offer_time_max 3.200000 150\n" "offer_time_avg 2.850000 150\n" @@ -384,6 +849,66 @@ int main(void) { "delete_time_min 0.000000 150\n" "delete_time_max 0.000000 150\n" "delete_time_avg 0.000000 150\n" + "query_time_min 0.000000 150\n" + "query_time_max 0.000000 150\n" + "query_time_avg 0.000000 150\n" + "list_time_min 0.000000 150\n" + "list_time_max 0.000000 150\n" + "list_time_avg 0.000000 150\n" + "start recording_time_min 0.000000 150\n" + "start recording_time_max 0.000000 150\n" + "start recording_time_avg 0.000000 150\n" + "stop recording_time_min 0.000000 150\n" + "stop recording_time_max 0.000000 150\n" + "stop recording_time_avg 0.000000 150\n" + "start forwarding_time_min 0.000000 150\n" + "start forwarding_time_max 0.000000 150\n" + "start forwarding_time_avg 0.000000 150\n" + "stop forwarding_time_min 0.000000 150\n" + "stop forwarding_time_max 0.000000 150\n" + "stop forwarding_time_avg 0.000000 150\n" + "block DTMF_time_min 0.000000 150\n" + "block DTMF_time_max 0.000000 150\n" + "block DTMF_time_avg 0.000000 150\n" + "unblock DTMF_time_min 0.000000 150\n" + "unblock DTMF_time_max 0.000000 150\n" + "unblock DTMF_time_avg 0.000000 150\n" + "block media_time_min 0.000000 150\n" + "block media_time_max 0.000000 150\n" + "block media_time_avg 0.000000 150\n" + "unblock media_time_min 0.000000 150\n" + "unblock media_time_max 0.000000 150\n" + "unblock media_time_avg 0.000000 150\n" + "play media_time_min 0.000000 150\n" + "play media_time_max 0.000000 150\n" + "play media_time_avg 0.000000 150\n" + "stop media_time_min 0.000000 150\n" + "stop media_time_max 0.000000 150\n" + "stop media_time_avg 0.000000 150\n" + "play DTMF_time_min 0.000000 150\n" + "play DTMF_time_max 0.000000 150\n" + "play DTMF_time_avg 0.000000 150\n" + "statistics_time_min 0.000000 150\n" + "statistics_time_max 0.000000 150\n" + "statistics_time_avg 0.000000 150\n" + "silence media_time_min 0.000000 150\n" + "silence media_time_max 0.000000 150\n" + "silence media_time_avg 0.000000 150\n" + "unsilence media_time_min 0.000000 150\n" + "unsilence media_time_max 0.000000 150\n" + "unsilence media_time_avg 0.000000 150\n" + "publish_time_min 0.000000 150\n" + "publish_time_max 0.000000 150\n" + "publish_time_avg 0.000000 150\n" + "subscribe request_time_min 0.000000 150\n" + "subscribe request_time_max 0.000000 150\n" + "subscribe request_time_avg 0.000000 150\n" + "subscribe answer_time_min 0.000000 150\n" + "subscribe answer_time_max 0.000000 150\n" + "subscribe answer_time_avg 0.000000 150\n" + "unsubscribe_time_min 0.000000 150\n" + "unsubscribe_time_max 0.000000 150\n" + "unsubscribe_time_avg 0.000000 150\n" "call_dur 0.000000 150\n" "average_call_dur 0.000000 150\n" "forced_term_sess 0 150\n" @@ -407,6 +932,9 @@ int main(void) { "offer_timeout_sess 0 150\n" "timeout_sess 0 150\n" "reject_sess 0 150\n" + "pings_ps_min 0 150\n" + "pings_ps_max 0 150\n" + "pings_ps_avg 0 150\n" "offers_ps_min 0 150\n" "offers_ps_max 0 150\n" "offers_ps_avg 0 150\n" @@ -415,7 +943,67 @@ int main(void) { "answers_ps_avg 0 150\n" "deletes_ps_min 0 150\n" "deletes_ps_max 0 150\n" - "deletes_ps_avg 0 150\n"); + "deletes_ps_avg 0 150\n" + "querys_ps_min 0 150\n" + "querys_ps_max 0 150\n" + "querys_ps_avg 0 150\n" + "lists_ps_min 0 150\n" + "lists_ps_max 0 150\n" + "lists_ps_avg 0 150\n" + "start recordings_ps_min 0 150\n" + "start recordings_ps_max 0 150\n" + "start recordings_ps_avg 0 150\n" + "stop recordings_ps_min 0 150\n" + "stop recordings_ps_max 0 150\n" + "stop recordings_ps_avg 0 150\n" + "start forwardings_ps_min 0 150\n" + "start forwardings_ps_max 0 150\n" + "start forwardings_ps_avg 0 150\n" + "stop forwardings_ps_min 0 150\n" + "stop forwardings_ps_max 0 150\n" + "stop forwardings_ps_avg 0 150\n" + "block DTMFs_ps_min 0 150\n" + "block DTMFs_ps_max 0 150\n" + "block DTMFs_ps_avg 0 150\n" + "unblock DTMFs_ps_min 0 150\n" + "unblock DTMFs_ps_max 0 150\n" + "unblock DTMFs_ps_avg 0 150\n" + "block medias_ps_min 0 150\n" + "block medias_ps_max 0 150\n" + "block medias_ps_avg 0 150\n" + "unblock medias_ps_min 0 150\n" + "unblock medias_ps_max 0 150\n" + "unblock medias_ps_avg 0 150\n" + "play medias_ps_min 0 150\n" + "play medias_ps_max 0 150\n" + "play medias_ps_avg 0 150\n" + "stop medias_ps_min 0 150\n" + "stop medias_ps_max 0 150\n" + "stop medias_ps_avg 0 150\n" + "play DTMFs_ps_min 0 150\n" + "play DTMFs_ps_max 0 150\n" + "play DTMFs_ps_avg 0 150\n" + "statisticss_ps_min 0 150\n" + "statisticss_ps_max 0 150\n" + "statisticss_ps_avg 0 150\n" + "silence medias_ps_min 0 150\n" + "silence medias_ps_max 0 150\n" + "silence medias_ps_avg 0 150\n" + "unsilence medias_ps_min 0 150\n" + "unsilence medias_ps_max 0 150\n" + "unsilence medias_ps_avg 0 150\n" + "publishs_ps_min 0 150\n" + "publishs_ps_max 0 150\n" + "publishs_ps_avg 0 150\n" + "subscribe requests_ps_min 0 150\n" + "subscribe requests_ps_max 0 150\n" + "subscribe requests_ps_avg 0 150\n" + "subscribe answers_ps_min 0 150\n" + "subscribe answers_ps_max 0 150\n" + "subscribe answers_ps_avg 0 150\n" + "unsubscribes_ps_min 0 150\n" + "unsubscribes_ps_max 0 150\n" + "unsubscribes_ps_avg 0 150\n"); stats = statistics_gather_metrics(); assert_metrics_eq(stats, @@ -547,6 +1135,14 @@ int main(void) { "maxmanagedsessions\n" "0\n" "0\n" + "Min/Max/Avg ping processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpingdelay\n" + "0.000000\n" + "maxpingdelay\n" + "0.000000\n" + "avgpingdelay\n" + "0.000000\n" "Min/Max/Avg offer processing delay\n" "2.500000/3.200000/2.850000 sec\n" "minofferdelay\n" @@ -571,6 +1167,174 @@ int main(void) { "0.000000\n" "avgdeletedelay\n" "0.000000\n" + "Min/Max/Avg query processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minquerydelay\n" + "0.000000\n" + "maxquerydelay\n" + "0.000000\n" + "avgquerydelay\n" + "0.000000\n" + "Min/Max/Avg list processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minlistdelay\n" + "0.000000\n" + "maxlistdelay\n" + "0.000000\n" + "avglistdelay\n" + "0.000000\n" + "Min/Max/Avg start recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart recordingdelay\n" + "0.000000\n" + "maxstart recordingdelay\n" + "0.000000\n" + "avgstart recordingdelay\n" + "0.000000\n" + "Min/Max/Avg stop recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop recordingdelay\n" + "0.000000\n" + "maxstop recordingdelay\n" + "0.000000\n" + "avgstop recordingdelay\n" + "0.000000\n" + "Min/Max/Avg start forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart forwardingdelay\n" + "0.000000\n" + "maxstart forwardingdelay\n" + "0.000000\n" + "avgstart forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg stop forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop forwardingdelay\n" + "0.000000\n" + "maxstop forwardingdelay\n" + "0.000000\n" + "avgstop forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg block DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock DTMFdelay\n" + "0.000000\n" + "maxblock DTMFdelay\n" + "0.000000\n" + "avgblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg unblock DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock DTMFdelay\n" + "0.000000\n" + "maxunblock DTMFdelay\n" + "0.000000\n" + "avgunblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg block media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock mediadelay\n" + "0.000000\n" + "maxblock mediadelay\n" + "0.000000\n" + "avgblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg unblock media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock mediadelay\n" + "0.000000\n" + "maxunblock mediadelay\n" + "0.000000\n" + "avgunblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg play media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay mediadelay\n" + "0.000000\n" + "maxplay mediadelay\n" + "0.000000\n" + "avgplay mediadelay\n" + "0.000000\n" + "Min/Max/Avg stop media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop mediadelay\n" + "0.000000\n" + "maxstop mediadelay\n" + "0.000000\n" + "avgstop mediadelay\n" + "0.000000\n" + "Min/Max/Avg play DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay DTMFdelay\n" + "0.000000\n" + "maxplay DTMFdelay\n" + "0.000000\n" + "avgplay DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg statistics processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstatisticsdelay\n" + "0.000000\n" + "maxstatisticsdelay\n" + "0.000000\n" + "avgstatisticsdelay\n" + "0.000000\n" + "Min/Max/Avg silence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsilence mediadelay\n" + "0.000000\n" + "maxsilence mediadelay\n" + "0.000000\n" + "avgsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg unsilence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsilence mediadelay\n" + "0.000000\n" + "maxunsilence mediadelay\n" + "0.000000\n" + "avgunsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg publish processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpublishdelay\n" + "0.000000\n" + "maxpublishdelay\n" + "0.000000\n" + "avgpublishdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe request processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe requestdelay\n" + "0.000000\n" + "maxsubscribe requestdelay\n" + "0.000000\n" + "avgsubscribe requestdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe answer processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe answerdelay\n" + "0.000000\n" + "maxsubscribe answerdelay\n" + "0.000000\n" + "avgsubscribe answerdelay\n" + "0.000000\n" + "Min/Max/Avg unsubscribe processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsubscribedelay\n" + "0.000000\n" + "maxunsubscribedelay\n" + "0.000000\n" + "avgunsubscribedelay\n" + "0.000000\n" + "Min/Max/Avg ping requests per second\n" + "0/0/0 per sec\n" + "minpingrequestrate\n" + "0\n" + "maxpingrequestrate\n" + "0\n" + "avgpingrequestrate\n" + "0\n" "Min/Max/Avg offer requests per second\n" "0/0/0 per sec\n" "minofferrequestrate\n" @@ -595,6 +1359,166 @@ int main(void) { "0\n" "avgdeleterequestrate\n" "0\n" + "Min/Max/Avg query requests per second\n" + "0/0/0 per sec\n" + "minqueryrequestrate\n" + "0\n" + "maxqueryrequestrate\n" + "0\n" + "avgqueryrequestrate\n" + "0\n" + "Min/Max/Avg list requests per second\n" + "0/0/0 per sec\n" + "minlistrequestrate\n" + "0\n" + "maxlistrequestrate\n" + "0\n" + "avglistrequestrate\n" + "0\n" + "Min/Max/Avg start recording requests per second\n" + "0/0/0 per sec\n" + "minstart recordingrequestrate\n" + "0\n" + "maxstart recordingrequestrate\n" + "0\n" + "avgstart recordingrequestrate\n" + "0\n" + "Min/Max/Avg stop recording requests per second\n" + "0/0/0 per sec\n" + "minstop recordingrequestrate\n" + "0\n" + "maxstop recordingrequestrate\n" + "0\n" + "avgstop recordingrequestrate\n" + "0\n" + "Min/Max/Avg start forwarding requests per second\n" + "0/0/0 per sec\n" + "minstart forwardingrequestrate\n" + "0\n" + "maxstart forwardingrequestrate\n" + "0\n" + "avgstart forwardingrequestrate\n" + "0\n" + "Min/Max/Avg stop forwarding requests per second\n" + "0/0/0 per sec\n" + "minstop forwardingrequestrate\n" + "0\n" + "maxstop forwardingrequestrate\n" + "0\n" + "avgstop forwardingrequestrate\n" + "0\n" + "Min/Max/Avg block DTMF requests per second\n" + "0/0/0 per sec\n" + "minblock DTMFrequestrate\n" + "0\n" + "maxblock DTMFrequestrate\n" + "0\n" + "avgblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg unblock DTMF requests per second\n" + "0/0/0 per sec\n" + "minunblock DTMFrequestrate\n" + "0\n" + "maxunblock DTMFrequestrate\n" + "0\n" + "avgunblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg block media requests per second\n" + "0/0/0 per sec\n" + "minblock mediarequestrate\n" + "0\n" + "maxblock mediarequestrate\n" + "0\n" + "avgblock mediarequestrate\n" + "0\n" + "Min/Max/Avg unblock media requests per second\n" + "0/0/0 per sec\n" + "minunblock mediarequestrate\n" + "0\n" + "maxunblock mediarequestrate\n" + "0\n" + "avgunblock mediarequestrate\n" + "0\n" + "Min/Max/Avg play media requests per second\n" + "0/0/0 per sec\n" + "minplay mediarequestrate\n" + "0\n" + "maxplay mediarequestrate\n" + "0\n" + "avgplay mediarequestrate\n" + "0\n" + "Min/Max/Avg stop media requests per second\n" + "0/0/0 per sec\n" + "minstop mediarequestrate\n" + "0\n" + "maxstop mediarequestrate\n" + "0\n" + "avgstop mediarequestrate\n" + "0\n" + "Min/Max/Avg play DTMF requests per second\n" + "0/0/0 per sec\n" + "minplay DTMFrequestrate\n" + "0\n" + "maxplay DTMFrequestrate\n" + "0\n" + "avgplay DTMFrequestrate\n" + "0\n" + "Min/Max/Avg statistics requests per second\n" + "0/0/0 per sec\n" + "minstatisticsrequestrate\n" + "0\n" + "maxstatisticsrequestrate\n" + "0\n" + "avgstatisticsrequestrate\n" + "0\n" + "Min/Max/Avg silence media requests per second\n" + "0/0/0 per sec\n" + "minsilence mediarequestrate\n" + "0\n" + "maxsilence mediarequestrate\n" + "0\n" + "avgsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg unsilence media requests per second\n" + "0/0/0 per sec\n" + "minunsilence mediarequestrate\n" + "0\n" + "maxunsilence mediarequestrate\n" + "0\n" + "avgunsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg publish requests per second\n" + "0/0/0 per sec\n" + "minpublishrequestrate\n" + "0\n" + "maxpublishrequestrate\n" + "0\n" + "avgpublishrequestrate\n" + "0\n" + "Min/Max/Avg subscribe request requests per second\n" + "0/0/0 per sec\n" + "minsubscribe requestrequestrate\n" + "0\n" + "maxsubscribe requestrequestrate\n" + "0\n" + "avgsubscribe requestrequestrate\n" + "0\n" + "Min/Max/Avg subscribe answer requests per second\n" + "0/0/0 per sec\n" + "minsubscribe answerrequestrate\n" + "0\n" + "maxsubscribe answerrequestrate\n" + "0\n" + "avgsubscribe answerrequestrate\n" + "0\n" + "Min/Max/Avg unsubscribe requests per second\n" + "0/0/0 per sec\n" + "minunsubscriberequestrate\n" + "0\n" + "maxunsubscriberequestrate\n" + "0\n" + "avgunsubscriberequestrate\n" + "0\n" "\n" "\n" "}\n" @@ -667,11 +1591,14 @@ int main(void) { "]\n" "}\n"); - RTPE_STATS_INC(answers); - RTPE_GAUGE_SET(answer_time, 3200000); + RTPE_STATS_INC(ng_commands[NGC_ANSWER]); + RTPE_GAUGE_SET(ng_command_times[NGC_ANSWER], 3200000); graph_str = print_graphite_data(&rtpe_totalstats_lastinterval); assert_g_string_eq(graph_str, + "ping_time_min 0.000000 150\n" + "ping_time_max 0.000000 150\n" + "ping_time_avg 0.000000 150\n" "offer_time_min 0.000000 150\n" "offer_time_max 0.000000 150\n" "offer_time_avg 0.000000 150\n" @@ -681,6 +1608,66 @@ int main(void) { "delete_time_min 0.000000 150\n" "delete_time_max 0.000000 150\n" "delete_time_avg 0.000000 150\n" + "query_time_min 0.000000 150\n" + "query_time_max 0.000000 150\n" + "query_time_avg 0.000000 150\n" + "list_time_min 0.000000 150\n" + "list_time_max 0.000000 150\n" + "list_time_avg 0.000000 150\n" + "start recording_time_min 0.000000 150\n" + "start recording_time_max 0.000000 150\n" + "start recording_time_avg 0.000000 150\n" + "stop recording_time_min 0.000000 150\n" + "stop recording_time_max 0.000000 150\n" + "stop recording_time_avg 0.000000 150\n" + "start forwarding_time_min 0.000000 150\n" + "start forwarding_time_max 0.000000 150\n" + "start forwarding_time_avg 0.000000 150\n" + "stop forwarding_time_min 0.000000 150\n" + "stop forwarding_time_max 0.000000 150\n" + "stop forwarding_time_avg 0.000000 150\n" + "block DTMF_time_min 0.000000 150\n" + "block DTMF_time_max 0.000000 150\n" + "block DTMF_time_avg 0.000000 150\n" + "unblock DTMF_time_min 0.000000 150\n" + "unblock DTMF_time_max 0.000000 150\n" + "unblock DTMF_time_avg 0.000000 150\n" + "block media_time_min 0.000000 150\n" + "block media_time_max 0.000000 150\n" + "block media_time_avg 0.000000 150\n" + "unblock media_time_min 0.000000 150\n" + "unblock media_time_max 0.000000 150\n" + "unblock media_time_avg 0.000000 150\n" + "play media_time_min 0.000000 150\n" + "play media_time_max 0.000000 150\n" + "play media_time_avg 0.000000 150\n" + "stop media_time_min 0.000000 150\n" + "stop media_time_max 0.000000 150\n" + "stop media_time_avg 0.000000 150\n" + "play DTMF_time_min 0.000000 150\n" + "play DTMF_time_max 0.000000 150\n" + "play DTMF_time_avg 0.000000 150\n" + "statistics_time_min 0.000000 150\n" + "statistics_time_max 0.000000 150\n" + "statistics_time_avg 0.000000 150\n" + "silence media_time_min 0.000000 150\n" + "silence media_time_max 0.000000 150\n" + "silence media_time_avg 0.000000 150\n" + "unsilence media_time_min 0.000000 150\n" + "unsilence media_time_max 0.000000 150\n" + "unsilence media_time_avg 0.000000 150\n" + "publish_time_min 0.000000 150\n" + "publish_time_max 0.000000 150\n" + "publish_time_avg 0.000000 150\n" + "subscribe request_time_min 0.000000 150\n" + "subscribe request_time_max 0.000000 150\n" + "subscribe request_time_avg 0.000000 150\n" + "subscribe answer_time_min 0.000000 150\n" + "subscribe answer_time_max 0.000000 150\n" + "subscribe answer_time_avg 0.000000 150\n" + "unsubscribe_time_min 0.000000 150\n" + "unsubscribe_time_max 0.000000 150\n" + "unsubscribe_time_avg 0.000000 150\n" "call_dur 0.000000 150\n" "average_call_dur 0.000000 150\n" "forced_term_sess 0 150\n" @@ -704,6 +1691,9 @@ int main(void) { "offer_timeout_sess 0 150\n" "timeout_sess 0 150\n" "reject_sess 0 150\n" + "pings_ps_min 0 150\n" + "pings_ps_max 0 150\n" + "pings_ps_avg 0 150\n" "offers_ps_min 0 150\n" "offers_ps_max 0 150\n" "offers_ps_avg 0 150\n" @@ -712,7 +1702,67 @@ int main(void) { "answers_ps_avg 0 150\n" "deletes_ps_min 0 150\n" "deletes_ps_max 0 150\n" - "deletes_ps_avg 0 150\n"); + "deletes_ps_avg 0 150\n" + "querys_ps_min 0 150\n" + "querys_ps_max 0 150\n" + "querys_ps_avg 0 150\n" + "lists_ps_min 0 150\n" + "lists_ps_max 0 150\n" + "lists_ps_avg 0 150\n" + "start recordings_ps_min 0 150\n" + "start recordings_ps_max 0 150\n" + "start recordings_ps_avg 0 150\n" + "stop recordings_ps_min 0 150\n" + "stop recordings_ps_max 0 150\n" + "stop recordings_ps_avg 0 150\n" + "start forwardings_ps_min 0 150\n" + "start forwardings_ps_max 0 150\n" + "start forwardings_ps_avg 0 150\n" + "stop forwardings_ps_min 0 150\n" + "stop forwardings_ps_max 0 150\n" + "stop forwardings_ps_avg 0 150\n" + "block DTMFs_ps_min 0 150\n" + "block DTMFs_ps_max 0 150\n" + "block DTMFs_ps_avg 0 150\n" + "unblock DTMFs_ps_min 0 150\n" + "unblock DTMFs_ps_max 0 150\n" + "unblock DTMFs_ps_avg 0 150\n" + "block medias_ps_min 0 150\n" + "block medias_ps_max 0 150\n" + "block medias_ps_avg 0 150\n" + "unblock medias_ps_min 0 150\n" + "unblock medias_ps_max 0 150\n" + "unblock medias_ps_avg 0 150\n" + "play medias_ps_min 0 150\n" + "play medias_ps_max 0 150\n" + "play medias_ps_avg 0 150\n" + "stop medias_ps_min 0 150\n" + "stop medias_ps_max 0 150\n" + "stop medias_ps_avg 0 150\n" + "play DTMFs_ps_min 0 150\n" + "play DTMFs_ps_max 0 150\n" + "play DTMFs_ps_avg 0 150\n" + "statisticss_ps_min 0 150\n" + "statisticss_ps_max 0 150\n" + "statisticss_ps_avg 0 150\n" + "silence medias_ps_min 0 150\n" + "silence medias_ps_max 0 150\n" + "silence medias_ps_avg 0 150\n" + "unsilence medias_ps_min 0 150\n" + "unsilence medias_ps_max 0 150\n" + "unsilence medias_ps_avg 0 150\n" + "publishs_ps_min 0 150\n" + "publishs_ps_max 0 150\n" + "publishs_ps_avg 0 150\n" + "subscribe requests_ps_min 0 150\n" + "subscribe requests_ps_max 0 150\n" + "subscribe requests_ps_avg 0 150\n" + "subscribe answers_ps_min 0 150\n" + "subscribe answers_ps_max 0 150\n" + "subscribe answers_ps_avg 0 150\n" + "unsubscribes_ps_min 0 150\n" + "unsubscribes_ps_max 0 150\n" + "unsubscribes_ps_avg 0 150\n"); stats = statistics_gather_metrics(); assert_metrics_eq(stats, @@ -844,6 +1894,14 @@ int main(void) { "maxmanagedsessions\n" "0\n" "0\n" + "Min/Max/Avg ping processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpingdelay\n" + "0.000000\n" + "maxpingdelay\n" + "0.000000\n" + "avgpingdelay\n" + "0.000000\n" "Min/Max/Avg offer processing delay\n" "0.000000/0.000000/0.000000 sec\n" "minofferdelay\n" @@ -868,6 +1926,174 @@ int main(void) { "0.000000\n" "avgdeletedelay\n" "0.000000\n" + "Min/Max/Avg query processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minquerydelay\n" + "0.000000\n" + "maxquerydelay\n" + "0.000000\n" + "avgquerydelay\n" + "0.000000\n" + "Min/Max/Avg list processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minlistdelay\n" + "0.000000\n" + "maxlistdelay\n" + "0.000000\n" + "avglistdelay\n" + "0.000000\n" + "Min/Max/Avg start recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart recordingdelay\n" + "0.000000\n" + "maxstart recordingdelay\n" + "0.000000\n" + "avgstart recordingdelay\n" + "0.000000\n" + "Min/Max/Avg stop recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop recordingdelay\n" + "0.000000\n" + "maxstop recordingdelay\n" + "0.000000\n" + "avgstop recordingdelay\n" + "0.000000\n" + "Min/Max/Avg start forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart forwardingdelay\n" + "0.000000\n" + "maxstart forwardingdelay\n" + "0.000000\n" + "avgstart forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg stop forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop forwardingdelay\n" + "0.000000\n" + "maxstop forwardingdelay\n" + "0.000000\n" + "avgstop forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg block DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock DTMFdelay\n" + "0.000000\n" + "maxblock DTMFdelay\n" + "0.000000\n" + "avgblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg unblock DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock DTMFdelay\n" + "0.000000\n" + "maxunblock DTMFdelay\n" + "0.000000\n" + "avgunblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg block media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock mediadelay\n" + "0.000000\n" + "maxblock mediadelay\n" + "0.000000\n" + "avgblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg unblock media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock mediadelay\n" + "0.000000\n" + "maxunblock mediadelay\n" + "0.000000\n" + "avgunblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg play media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay mediadelay\n" + "0.000000\n" + "maxplay mediadelay\n" + "0.000000\n" + "avgplay mediadelay\n" + "0.000000\n" + "Min/Max/Avg stop media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop mediadelay\n" + "0.000000\n" + "maxstop mediadelay\n" + "0.000000\n" + "avgstop mediadelay\n" + "0.000000\n" + "Min/Max/Avg play DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay DTMFdelay\n" + "0.000000\n" + "maxplay DTMFdelay\n" + "0.000000\n" + "avgplay DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg statistics processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstatisticsdelay\n" + "0.000000\n" + "maxstatisticsdelay\n" + "0.000000\n" + "avgstatisticsdelay\n" + "0.000000\n" + "Min/Max/Avg silence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsilence mediadelay\n" + "0.000000\n" + "maxsilence mediadelay\n" + "0.000000\n" + "avgsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg unsilence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsilence mediadelay\n" + "0.000000\n" + "maxunsilence mediadelay\n" + "0.000000\n" + "avgunsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg publish processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpublishdelay\n" + "0.000000\n" + "maxpublishdelay\n" + "0.000000\n" + "avgpublishdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe request processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe requestdelay\n" + "0.000000\n" + "maxsubscribe requestdelay\n" + "0.000000\n" + "avgsubscribe requestdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe answer processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe answerdelay\n" + "0.000000\n" + "maxsubscribe answerdelay\n" + "0.000000\n" + "avgsubscribe answerdelay\n" + "0.000000\n" + "Min/Max/Avg unsubscribe processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsubscribedelay\n" + "0.000000\n" + "maxunsubscribedelay\n" + "0.000000\n" + "avgunsubscribedelay\n" + "0.000000\n" + "Min/Max/Avg ping requests per second\n" + "0/0/0 per sec\n" + "minpingrequestrate\n" + "0\n" + "maxpingrequestrate\n" + "0\n" + "avgpingrequestrate\n" + "0\n" "Min/Max/Avg offer requests per second\n" "0/0/0 per sec\n" "minofferrequestrate\n" @@ -892,6 +2118,166 @@ int main(void) { "0\n" "avgdeleterequestrate\n" "0\n" + "Min/Max/Avg query requests per second\n" + "0/0/0 per sec\n" + "minqueryrequestrate\n" + "0\n" + "maxqueryrequestrate\n" + "0\n" + "avgqueryrequestrate\n" + "0\n" + "Min/Max/Avg list requests per second\n" + "0/0/0 per sec\n" + "minlistrequestrate\n" + "0\n" + "maxlistrequestrate\n" + "0\n" + "avglistrequestrate\n" + "0\n" + "Min/Max/Avg start recording requests per second\n" + "0/0/0 per sec\n" + "minstart recordingrequestrate\n" + "0\n" + "maxstart recordingrequestrate\n" + "0\n" + "avgstart recordingrequestrate\n" + "0\n" + "Min/Max/Avg stop recording requests per second\n" + "0/0/0 per sec\n" + "minstop recordingrequestrate\n" + "0\n" + "maxstop recordingrequestrate\n" + "0\n" + "avgstop recordingrequestrate\n" + "0\n" + "Min/Max/Avg start forwarding requests per second\n" + "0/0/0 per sec\n" + "minstart forwardingrequestrate\n" + "0\n" + "maxstart forwardingrequestrate\n" + "0\n" + "avgstart forwardingrequestrate\n" + "0\n" + "Min/Max/Avg stop forwarding requests per second\n" + "0/0/0 per sec\n" + "minstop forwardingrequestrate\n" + "0\n" + "maxstop forwardingrequestrate\n" + "0\n" + "avgstop forwardingrequestrate\n" + "0\n" + "Min/Max/Avg block DTMF requests per second\n" + "0/0/0 per sec\n" + "minblock DTMFrequestrate\n" + "0\n" + "maxblock DTMFrequestrate\n" + "0\n" + "avgblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg unblock DTMF requests per second\n" + "0/0/0 per sec\n" + "minunblock DTMFrequestrate\n" + "0\n" + "maxunblock DTMFrequestrate\n" + "0\n" + "avgunblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg block media requests per second\n" + "0/0/0 per sec\n" + "minblock mediarequestrate\n" + "0\n" + "maxblock mediarequestrate\n" + "0\n" + "avgblock mediarequestrate\n" + "0\n" + "Min/Max/Avg unblock media requests per second\n" + "0/0/0 per sec\n" + "minunblock mediarequestrate\n" + "0\n" + "maxunblock mediarequestrate\n" + "0\n" + "avgunblock mediarequestrate\n" + "0\n" + "Min/Max/Avg play media requests per second\n" + "0/0/0 per sec\n" + "minplay mediarequestrate\n" + "0\n" + "maxplay mediarequestrate\n" + "0\n" + "avgplay mediarequestrate\n" + "0\n" + "Min/Max/Avg stop media requests per second\n" + "0/0/0 per sec\n" + "minstop mediarequestrate\n" + "0\n" + "maxstop mediarequestrate\n" + "0\n" + "avgstop mediarequestrate\n" + "0\n" + "Min/Max/Avg play DTMF requests per second\n" + "0/0/0 per sec\n" + "minplay DTMFrequestrate\n" + "0\n" + "maxplay DTMFrequestrate\n" + "0\n" + "avgplay DTMFrequestrate\n" + "0\n" + "Min/Max/Avg statistics requests per second\n" + "0/0/0 per sec\n" + "minstatisticsrequestrate\n" + "0\n" + "maxstatisticsrequestrate\n" + "0\n" + "avgstatisticsrequestrate\n" + "0\n" + "Min/Max/Avg silence media requests per second\n" + "0/0/0 per sec\n" + "minsilence mediarequestrate\n" + "0\n" + "maxsilence mediarequestrate\n" + "0\n" + "avgsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg unsilence media requests per second\n" + "0/0/0 per sec\n" + "minunsilence mediarequestrate\n" + "0\n" + "maxunsilence mediarequestrate\n" + "0\n" + "avgunsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg publish requests per second\n" + "0/0/0 per sec\n" + "minpublishrequestrate\n" + "0\n" + "maxpublishrequestrate\n" + "0\n" + "avgpublishrequestrate\n" + "0\n" + "Min/Max/Avg subscribe request requests per second\n" + "0/0/0 per sec\n" + "minsubscribe requestrequestrate\n" + "0\n" + "maxsubscribe requestrequestrate\n" + "0\n" + "avgsubscribe requestrequestrate\n" + "0\n" + "Min/Max/Avg subscribe answer requests per second\n" + "0/0/0 per sec\n" + "minsubscribe answerrequestrate\n" + "0\n" + "maxsubscribe answerrequestrate\n" + "0\n" + "avgsubscribe answerrequestrate\n" + "0\n" + "Min/Max/Avg unsubscribe requests per second\n" + "0/0/0 per sec\n" + "minunsubscriberequestrate\n" + "0\n" + "maxunsubscriberequestrate\n" + "0\n" + "avgunsubscriberequestrate\n" + "0\n" "\n" "\n" "}\n" @@ -967,21 +2353,24 @@ int main(void) { // test cmd_ps_min/max/avg call_timer(NULL); - RTPE_STATS_ADD(offers, 100); + RTPE_STATS_ADD(ng_commands[NGC_OFFER], 100); rtpe_now.tv_sec += 2; - RTPE_STATS_ADD(offers, 20); + RTPE_STATS_ADD(ng_commands[NGC_OFFER], 20); call_timer(NULL); // timer run time interval increased rtpe_now.tv_sec += 5; - RTPE_STATS_ADD(offers, 200); + RTPE_STATS_ADD(ng_commands[NGC_OFFER], 200); call_timer(NULL); graph_str = print_graphite_data(&rtpe_totalstats_lastinterval); assert_g_string_eq(graph_str, + "ping_time_min 0.000000 157\n" + "ping_time_max 0.000000 157\n" + "ping_time_avg 0.000000 157\n" "offer_time_min 0.000000 157\n" "offer_time_max 0.000000 157\n" "offer_time_avg 0.000000 157\n" @@ -991,6 +2380,66 @@ int main(void) { "delete_time_min 0.000000 157\n" "delete_time_max 0.000000 157\n" "delete_time_avg 0.000000 157\n" + "query_time_min 0.000000 157\n" + "query_time_max 0.000000 157\n" + "query_time_avg 0.000000 157\n" + "list_time_min 0.000000 157\n" + "list_time_max 0.000000 157\n" + "list_time_avg 0.000000 157\n" + "start recording_time_min 0.000000 157\n" + "start recording_time_max 0.000000 157\n" + "start recording_time_avg 0.000000 157\n" + "stop recording_time_min 0.000000 157\n" + "stop recording_time_max 0.000000 157\n" + "stop recording_time_avg 0.000000 157\n" + "start forwarding_time_min 0.000000 157\n" + "start forwarding_time_max 0.000000 157\n" + "start forwarding_time_avg 0.000000 157\n" + "stop forwarding_time_min 0.000000 157\n" + "stop forwarding_time_max 0.000000 157\n" + "stop forwarding_time_avg 0.000000 157\n" + "block DTMF_time_min 0.000000 157\n" + "block DTMF_time_max 0.000000 157\n" + "block DTMF_time_avg 0.000000 157\n" + "unblock DTMF_time_min 0.000000 157\n" + "unblock DTMF_time_max 0.000000 157\n" + "unblock DTMF_time_avg 0.000000 157\n" + "block media_time_min 0.000000 157\n" + "block media_time_max 0.000000 157\n" + "block media_time_avg 0.000000 157\n" + "unblock media_time_min 0.000000 157\n" + "unblock media_time_max 0.000000 157\n" + "unblock media_time_avg 0.000000 157\n" + "play media_time_min 0.000000 157\n" + "play media_time_max 0.000000 157\n" + "play media_time_avg 0.000000 157\n" + "stop media_time_min 0.000000 157\n" + "stop media_time_max 0.000000 157\n" + "stop media_time_avg 0.000000 157\n" + "play DTMF_time_min 0.000000 157\n" + "play DTMF_time_max 0.000000 157\n" + "play DTMF_time_avg 0.000000 157\n" + "statistics_time_min 0.000000 157\n" + "statistics_time_max 0.000000 157\n" + "statistics_time_avg 0.000000 157\n" + "silence media_time_min 0.000000 157\n" + "silence media_time_max 0.000000 157\n" + "silence media_time_avg 0.000000 157\n" + "unsilence media_time_min 0.000000 157\n" + "unsilence media_time_max 0.000000 157\n" + "unsilence media_time_avg 0.000000 157\n" + "publish_time_min 0.000000 157\n" + "publish_time_max 0.000000 157\n" + "publish_time_avg 0.000000 157\n" + "subscribe request_time_min 0.000000 157\n" + "subscribe request_time_max 0.000000 157\n" + "subscribe request_time_avg 0.000000 157\n" + "subscribe answer_time_min 0.000000 157\n" + "subscribe answer_time_max 0.000000 157\n" + "subscribe answer_time_avg 0.000000 157\n" + "unsubscribe_time_min 0.000000 157\n" + "unsubscribe_time_max 0.000000 157\n" + "unsubscribe_time_avg 0.000000 157\n" "call_dur 0.000000 157\n" "average_call_dur 0.000000 157\n" "forced_term_sess 0 157\n" @@ -1014,6 +2463,9 @@ int main(void) { "offer_timeout_sess 0 157\n" "timeout_sess 0 157\n" "reject_sess 0 157\n" + "pings_ps_min 0 157\n" + "pings_ps_max 0 157\n" + "pings_ps_avg 0 157\n" "offers_ps_min 40 157\n" "offers_ps_max 60 157\n" "offers_ps_avg 33 157\n" @@ -1022,7 +2474,67 @@ int main(void) { "answers_ps_avg 0 157\n" "deletes_ps_min 0 157\n" "deletes_ps_max 0 157\n" - "deletes_ps_avg 0 157\n"); + "deletes_ps_avg 0 157\n" + "querys_ps_min 0 157\n" + "querys_ps_max 0 157\n" + "querys_ps_avg 0 157\n" + "lists_ps_min 0 157\n" + "lists_ps_max 0 157\n" + "lists_ps_avg 0 157\n" + "start recordings_ps_min 0 157\n" + "start recordings_ps_max 0 157\n" + "start recordings_ps_avg 0 157\n" + "stop recordings_ps_min 0 157\n" + "stop recordings_ps_max 0 157\n" + "stop recordings_ps_avg 0 157\n" + "start forwardings_ps_min 0 157\n" + "start forwardings_ps_max 0 157\n" + "start forwardings_ps_avg 0 157\n" + "stop forwardings_ps_min 0 157\n" + "stop forwardings_ps_max 0 157\n" + "stop forwardings_ps_avg 0 157\n" + "block DTMFs_ps_min 0 157\n" + "block DTMFs_ps_max 0 157\n" + "block DTMFs_ps_avg 0 157\n" + "unblock DTMFs_ps_min 0 157\n" + "unblock DTMFs_ps_max 0 157\n" + "unblock DTMFs_ps_avg 0 157\n" + "block medias_ps_min 0 157\n" + "block medias_ps_max 0 157\n" + "block medias_ps_avg 0 157\n" + "unblock medias_ps_min 0 157\n" + "unblock medias_ps_max 0 157\n" + "unblock medias_ps_avg 0 157\n" + "play medias_ps_min 0 157\n" + "play medias_ps_max 0 157\n" + "play medias_ps_avg 0 157\n" + "stop medias_ps_min 0 157\n" + "stop medias_ps_max 0 157\n" + "stop medias_ps_avg 0 157\n" + "play DTMFs_ps_min 0 157\n" + "play DTMFs_ps_max 0 157\n" + "play DTMFs_ps_avg 0 157\n" + "statisticss_ps_min 0 157\n" + "statisticss_ps_max 0 157\n" + "statisticss_ps_avg 0 157\n" + "silence medias_ps_min 0 157\n" + "silence medias_ps_max 0 157\n" + "silence medias_ps_avg 0 157\n" + "unsilence medias_ps_min 0 157\n" + "unsilence medias_ps_max 0 157\n" + "unsilence medias_ps_avg 0 157\n" + "publishs_ps_min 0 157\n" + "publishs_ps_max 0 157\n" + "publishs_ps_avg 0 157\n" + "subscribe requests_ps_min 0 157\n" + "subscribe requests_ps_max 0 157\n" + "subscribe requests_ps_avg 0 157\n" + "subscribe answers_ps_min 0 157\n" + "subscribe answers_ps_max 0 157\n" + "subscribe answers_ps_avg 0 157\n" + "unsubscribes_ps_min 0 157\n" + "unsubscribes_ps_max 0 157\n" + "unsubscribes_ps_avg 0 157\n"); stats = statistics_gather_metrics(); assert_metrics_eq(stats, @@ -1154,6 +2666,14 @@ int main(void) { "maxmanagedsessions\n" "0\n" "0\n" + "Min/Max/Avg ping processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpingdelay\n" + "0.000000\n" + "maxpingdelay\n" + "0.000000\n" + "avgpingdelay\n" + "0.000000\n" "Min/Max/Avg offer processing delay\n" "0.000000/0.000000/0.000000 sec\n" "minofferdelay\n" @@ -1178,10 +2698,178 @@ int main(void) { "0.000000\n" "avgdeletedelay\n" "0.000000\n" - "Min/Max/Avg offer requests per second\n" - "40/60/33 per sec\n" - "minofferrequestrate\n" - "40\n" + "Min/Max/Avg query processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minquerydelay\n" + "0.000000\n" + "maxquerydelay\n" + "0.000000\n" + "avgquerydelay\n" + "0.000000\n" + "Min/Max/Avg list processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minlistdelay\n" + "0.000000\n" + "maxlistdelay\n" + "0.000000\n" + "avglistdelay\n" + "0.000000\n" + "Min/Max/Avg start recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart recordingdelay\n" + "0.000000\n" + "maxstart recordingdelay\n" + "0.000000\n" + "avgstart recordingdelay\n" + "0.000000\n" + "Min/Max/Avg stop recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop recordingdelay\n" + "0.000000\n" + "maxstop recordingdelay\n" + "0.000000\n" + "avgstop recordingdelay\n" + "0.000000\n" + "Min/Max/Avg start forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart forwardingdelay\n" + "0.000000\n" + "maxstart forwardingdelay\n" + "0.000000\n" + "avgstart forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg stop forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop forwardingdelay\n" + "0.000000\n" + "maxstop forwardingdelay\n" + "0.000000\n" + "avgstop forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg block DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock DTMFdelay\n" + "0.000000\n" + "maxblock DTMFdelay\n" + "0.000000\n" + "avgblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg unblock DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock DTMFdelay\n" + "0.000000\n" + "maxunblock DTMFdelay\n" + "0.000000\n" + "avgunblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg block media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock mediadelay\n" + "0.000000\n" + "maxblock mediadelay\n" + "0.000000\n" + "avgblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg unblock media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock mediadelay\n" + "0.000000\n" + "maxunblock mediadelay\n" + "0.000000\n" + "avgunblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg play media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay mediadelay\n" + "0.000000\n" + "maxplay mediadelay\n" + "0.000000\n" + "avgplay mediadelay\n" + "0.000000\n" + "Min/Max/Avg stop media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop mediadelay\n" + "0.000000\n" + "maxstop mediadelay\n" + "0.000000\n" + "avgstop mediadelay\n" + "0.000000\n" + "Min/Max/Avg play DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay DTMFdelay\n" + "0.000000\n" + "maxplay DTMFdelay\n" + "0.000000\n" + "avgplay DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg statistics processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstatisticsdelay\n" + "0.000000\n" + "maxstatisticsdelay\n" + "0.000000\n" + "avgstatisticsdelay\n" + "0.000000\n" + "Min/Max/Avg silence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsilence mediadelay\n" + "0.000000\n" + "maxsilence mediadelay\n" + "0.000000\n" + "avgsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg unsilence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsilence mediadelay\n" + "0.000000\n" + "maxunsilence mediadelay\n" + "0.000000\n" + "avgunsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg publish processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpublishdelay\n" + "0.000000\n" + "maxpublishdelay\n" + "0.000000\n" + "avgpublishdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe request processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe requestdelay\n" + "0.000000\n" + "maxsubscribe requestdelay\n" + "0.000000\n" + "avgsubscribe requestdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe answer processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe answerdelay\n" + "0.000000\n" + "maxsubscribe answerdelay\n" + "0.000000\n" + "avgsubscribe answerdelay\n" + "0.000000\n" + "Min/Max/Avg unsubscribe processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsubscribedelay\n" + "0.000000\n" + "maxunsubscribedelay\n" + "0.000000\n" + "avgunsubscribedelay\n" + "0.000000\n" + "Min/Max/Avg ping requests per second\n" + "0/0/0 per sec\n" + "minpingrequestrate\n" + "0\n" + "maxpingrequestrate\n" + "0\n" + "avgpingrequestrate\n" + "0\n" + "Min/Max/Avg offer requests per second\n" + "40/60/33 per sec\n" + "minofferrequestrate\n" + "40\n" "maxofferrequestrate\n" "60\n" "avgofferrequestrate\n" @@ -1202,6 +2890,166 @@ int main(void) { "0\n" "avgdeleterequestrate\n" "0\n" + "Min/Max/Avg query requests per second\n" + "0/0/0 per sec\n" + "minqueryrequestrate\n" + "0\n" + "maxqueryrequestrate\n" + "0\n" + "avgqueryrequestrate\n" + "0\n" + "Min/Max/Avg list requests per second\n" + "0/0/0 per sec\n" + "minlistrequestrate\n" + "0\n" + "maxlistrequestrate\n" + "0\n" + "avglistrequestrate\n" + "0\n" + "Min/Max/Avg start recording requests per second\n" + "0/0/0 per sec\n" + "minstart recordingrequestrate\n" + "0\n" + "maxstart recordingrequestrate\n" + "0\n" + "avgstart recordingrequestrate\n" + "0\n" + "Min/Max/Avg stop recording requests per second\n" + "0/0/0 per sec\n" + "minstop recordingrequestrate\n" + "0\n" + "maxstop recordingrequestrate\n" + "0\n" + "avgstop recordingrequestrate\n" + "0\n" + "Min/Max/Avg start forwarding requests per second\n" + "0/0/0 per sec\n" + "minstart forwardingrequestrate\n" + "0\n" + "maxstart forwardingrequestrate\n" + "0\n" + "avgstart forwardingrequestrate\n" + "0\n" + "Min/Max/Avg stop forwarding requests per second\n" + "0/0/0 per sec\n" + "minstop forwardingrequestrate\n" + "0\n" + "maxstop forwardingrequestrate\n" + "0\n" + "avgstop forwardingrequestrate\n" + "0\n" + "Min/Max/Avg block DTMF requests per second\n" + "0/0/0 per sec\n" + "minblock DTMFrequestrate\n" + "0\n" + "maxblock DTMFrequestrate\n" + "0\n" + "avgblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg unblock DTMF requests per second\n" + "0/0/0 per sec\n" + "minunblock DTMFrequestrate\n" + "0\n" + "maxunblock DTMFrequestrate\n" + "0\n" + "avgunblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg block media requests per second\n" + "0/0/0 per sec\n" + "minblock mediarequestrate\n" + "0\n" + "maxblock mediarequestrate\n" + "0\n" + "avgblock mediarequestrate\n" + "0\n" + "Min/Max/Avg unblock media requests per second\n" + "0/0/0 per sec\n" + "minunblock mediarequestrate\n" + "0\n" + "maxunblock mediarequestrate\n" + "0\n" + "avgunblock mediarequestrate\n" + "0\n" + "Min/Max/Avg play media requests per second\n" + "0/0/0 per sec\n" + "minplay mediarequestrate\n" + "0\n" + "maxplay mediarequestrate\n" + "0\n" + "avgplay mediarequestrate\n" + "0\n" + "Min/Max/Avg stop media requests per second\n" + "0/0/0 per sec\n" + "minstop mediarequestrate\n" + "0\n" + "maxstop mediarequestrate\n" + "0\n" + "avgstop mediarequestrate\n" + "0\n" + "Min/Max/Avg play DTMF requests per second\n" + "0/0/0 per sec\n" + "minplay DTMFrequestrate\n" + "0\n" + "maxplay DTMFrequestrate\n" + "0\n" + "avgplay DTMFrequestrate\n" + "0\n" + "Min/Max/Avg statistics requests per second\n" + "0/0/0 per sec\n" + "minstatisticsrequestrate\n" + "0\n" + "maxstatisticsrequestrate\n" + "0\n" + "avgstatisticsrequestrate\n" + "0\n" + "Min/Max/Avg silence media requests per second\n" + "0/0/0 per sec\n" + "minsilence mediarequestrate\n" + "0\n" + "maxsilence mediarequestrate\n" + "0\n" + "avgsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg unsilence media requests per second\n" + "0/0/0 per sec\n" + "minunsilence mediarequestrate\n" + "0\n" + "maxunsilence mediarequestrate\n" + "0\n" + "avgunsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg publish requests per second\n" + "0/0/0 per sec\n" + "minpublishrequestrate\n" + "0\n" + "maxpublishrequestrate\n" + "0\n" + "avgpublishrequestrate\n" + "0\n" + "Min/Max/Avg subscribe request requests per second\n" + "0/0/0 per sec\n" + "minsubscribe requestrequestrate\n" + "0\n" + "maxsubscribe requestrequestrate\n" + "0\n" + "avgsubscribe requestrequestrate\n" + "0\n" + "Min/Max/Avg subscribe answer requests per second\n" + "0/0/0 per sec\n" + "minsubscribe answerrequestrate\n" + "0\n" + "maxsubscribe answerrequestrate\n" + "0\n" + "avgsubscribe answerrequestrate\n" + "0\n" + "Min/Max/Avg unsubscribe requests per second\n" + "0/0/0 per sec\n" + "minunsubscriberequestrate\n" + "0\n" + "maxunsubscriberequestrate\n" + "0\n" + "avgunsubscriberequestrate\n" + "0\n" "\n" "\n" "}\n" @@ -1287,6 +3135,9 @@ int main(void) { graph_str = print_graphite_data(&rtpe_totalstats_lastinterval); assert_g_string_eq(graph_str, + "ping_time_min 0.000000 157\n" + "ping_time_max 0.000000 157\n" + "ping_time_avg 0.000000 157\n" "offer_time_min 0.000000 157\n" "offer_time_max 0.000000 157\n" "offer_time_avg 0.000000 157\n" @@ -1296,6 +3147,66 @@ int main(void) { "delete_time_min 0.000000 157\n" "delete_time_max 0.000000 157\n" "delete_time_avg 0.000000 157\n" + "query_time_min 0.000000 157\n" + "query_time_max 0.000000 157\n" + "query_time_avg 0.000000 157\n" + "list_time_min 0.000000 157\n" + "list_time_max 0.000000 157\n" + "list_time_avg 0.000000 157\n" + "start recording_time_min 0.000000 157\n" + "start recording_time_max 0.000000 157\n" + "start recording_time_avg 0.000000 157\n" + "stop recording_time_min 0.000000 157\n" + "stop recording_time_max 0.000000 157\n" + "stop recording_time_avg 0.000000 157\n" + "start forwarding_time_min 0.000000 157\n" + "start forwarding_time_max 0.000000 157\n" + "start forwarding_time_avg 0.000000 157\n" + "stop forwarding_time_min 0.000000 157\n" + "stop forwarding_time_max 0.000000 157\n" + "stop forwarding_time_avg 0.000000 157\n" + "block DTMF_time_min 0.000000 157\n" + "block DTMF_time_max 0.000000 157\n" + "block DTMF_time_avg 0.000000 157\n" + "unblock DTMF_time_min 0.000000 157\n" + "unblock DTMF_time_max 0.000000 157\n" + "unblock DTMF_time_avg 0.000000 157\n" + "block media_time_min 0.000000 157\n" + "block media_time_max 0.000000 157\n" + "block media_time_avg 0.000000 157\n" + "unblock media_time_min 0.000000 157\n" + "unblock media_time_max 0.000000 157\n" + "unblock media_time_avg 0.000000 157\n" + "play media_time_min 0.000000 157\n" + "play media_time_max 0.000000 157\n" + "play media_time_avg 0.000000 157\n" + "stop media_time_min 0.000000 157\n" + "stop media_time_max 0.000000 157\n" + "stop media_time_avg 0.000000 157\n" + "play DTMF_time_min 0.000000 157\n" + "play DTMF_time_max 0.000000 157\n" + "play DTMF_time_avg 0.000000 157\n" + "statistics_time_min 0.000000 157\n" + "statistics_time_max 0.000000 157\n" + "statistics_time_avg 0.000000 157\n" + "silence media_time_min 0.000000 157\n" + "silence media_time_max 0.000000 157\n" + "silence media_time_avg 0.000000 157\n" + "unsilence media_time_min 0.000000 157\n" + "unsilence media_time_max 0.000000 157\n" + "unsilence media_time_avg 0.000000 157\n" + "publish_time_min 0.000000 157\n" + "publish_time_max 0.000000 157\n" + "publish_time_avg 0.000000 157\n" + "subscribe request_time_min 0.000000 157\n" + "subscribe request_time_max 0.000000 157\n" + "subscribe request_time_avg 0.000000 157\n" + "subscribe answer_time_min 0.000000 157\n" + "subscribe answer_time_max 0.000000 157\n" + "subscribe answer_time_avg 0.000000 157\n" + "unsubscribe_time_min 0.000000 157\n" + "unsubscribe_time_max 0.000000 157\n" + "unsubscribe_time_avg 0.000000 157\n" "call_dur 0.000000 157\n" "average_call_dur 0.000000 157\n" "forced_term_sess 0 157\n" @@ -1319,6 +3230,9 @@ int main(void) { "offer_timeout_sess 0 157\n" "timeout_sess 0 157\n" "reject_sess 0 157\n" + "pings_ps_min 0 157\n" + "pings_ps_max 0 157\n" + "pings_ps_avg 0 157\n" "offers_ps_min 0 157\n" "offers_ps_max 0 157\n" "offers_ps_avg 0 157\n" @@ -1327,7 +3241,67 @@ int main(void) { "answers_ps_avg 0 157\n" "deletes_ps_min 0 157\n" "deletes_ps_max 0 157\n" - "deletes_ps_avg 0 157\n"); + "deletes_ps_avg 0 157\n" + "querys_ps_min 0 157\n" + "querys_ps_max 0 157\n" + "querys_ps_avg 0 157\n" + "lists_ps_min 0 157\n" + "lists_ps_max 0 157\n" + "lists_ps_avg 0 157\n" + "start recordings_ps_min 0 157\n" + "start recordings_ps_max 0 157\n" + "start recordings_ps_avg 0 157\n" + "stop recordings_ps_min 0 157\n" + "stop recordings_ps_max 0 157\n" + "stop recordings_ps_avg 0 157\n" + "start forwardings_ps_min 0 157\n" + "start forwardings_ps_max 0 157\n" + "start forwardings_ps_avg 0 157\n" + "stop forwardings_ps_min 0 157\n" + "stop forwardings_ps_max 0 157\n" + "stop forwardings_ps_avg 0 157\n" + "block DTMFs_ps_min 0 157\n" + "block DTMFs_ps_max 0 157\n" + "block DTMFs_ps_avg 0 157\n" + "unblock DTMFs_ps_min 0 157\n" + "unblock DTMFs_ps_max 0 157\n" + "unblock DTMFs_ps_avg 0 157\n" + "block medias_ps_min 0 157\n" + "block medias_ps_max 0 157\n" + "block medias_ps_avg 0 157\n" + "unblock medias_ps_min 0 157\n" + "unblock medias_ps_max 0 157\n" + "unblock medias_ps_avg 0 157\n" + "play medias_ps_min 0 157\n" + "play medias_ps_max 0 157\n" + "play medias_ps_avg 0 157\n" + "stop medias_ps_min 0 157\n" + "stop medias_ps_max 0 157\n" + "stop medias_ps_avg 0 157\n" + "play DTMFs_ps_min 0 157\n" + "play DTMFs_ps_max 0 157\n" + "play DTMFs_ps_avg 0 157\n" + "statisticss_ps_min 0 157\n" + "statisticss_ps_max 0 157\n" + "statisticss_ps_avg 0 157\n" + "silence medias_ps_min 0 157\n" + "silence medias_ps_max 0 157\n" + "silence medias_ps_avg 0 157\n" + "unsilence medias_ps_min 0 157\n" + "unsilence medias_ps_max 0 157\n" + "unsilence medias_ps_avg 0 157\n" + "publishs_ps_min 0 157\n" + "publishs_ps_max 0 157\n" + "publishs_ps_avg 0 157\n" + "subscribe requests_ps_min 0 157\n" + "subscribe requests_ps_max 0 157\n" + "subscribe requests_ps_avg 0 157\n" + "subscribe answers_ps_min 0 157\n" + "subscribe answers_ps_max 0 157\n" + "subscribe answers_ps_avg 0 157\n" + "unsubscribes_ps_min 0 157\n" + "unsubscribes_ps_max 0 157\n" + "unsubscribes_ps_avg 0 157\n"); stats = statistics_gather_metrics(); assert_metrics_eq(stats, @@ -1459,6 +3433,14 @@ int main(void) { "maxmanagedsessions\n" "2\n" "2\n" + "Min/Max/Avg ping processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpingdelay\n" + "0.000000\n" + "maxpingdelay\n" + "0.000000\n" + "avgpingdelay\n" + "0.000000\n" "Min/Max/Avg offer processing delay\n" "0.000000/0.000000/0.000000 sec\n" "minofferdelay\n" @@ -1483,6 +3465,174 @@ int main(void) { "0.000000\n" "avgdeletedelay\n" "0.000000\n" + "Min/Max/Avg query processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minquerydelay\n" + "0.000000\n" + "maxquerydelay\n" + "0.000000\n" + "avgquerydelay\n" + "0.000000\n" + "Min/Max/Avg list processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minlistdelay\n" + "0.000000\n" + "maxlistdelay\n" + "0.000000\n" + "avglistdelay\n" + "0.000000\n" + "Min/Max/Avg start recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart recordingdelay\n" + "0.000000\n" + "maxstart recordingdelay\n" + "0.000000\n" + "avgstart recordingdelay\n" + "0.000000\n" + "Min/Max/Avg stop recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop recordingdelay\n" + "0.000000\n" + "maxstop recordingdelay\n" + "0.000000\n" + "avgstop recordingdelay\n" + "0.000000\n" + "Min/Max/Avg start forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart forwardingdelay\n" + "0.000000\n" + "maxstart forwardingdelay\n" + "0.000000\n" + "avgstart forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg stop forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop forwardingdelay\n" + "0.000000\n" + "maxstop forwardingdelay\n" + "0.000000\n" + "avgstop forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg block DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock DTMFdelay\n" + "0.000000\n" + "maxblock DTMFdelay\n" + "0.000000\n" + "avgblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg unblock DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock DTMFdelay\n" + "0.000000\n" + "maxunblock DTMFdelay\n" + "0.000000\n" + "avgunblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg block media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock mediadelay\n" + "0.000000\n" + "maxblock mediadelay\n" + "0.000000\n" + "avgblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg unblock media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock mediadelay\n" + "0.000000\n" + "maxunblock mediadelay\n" + "0.000000\n" + "avgunblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg play media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay mediadelay\n" + "0.000000\n" + "maxplay mediadelay\n" + "0.000000\n" + "avgplay mediadelay\n" + "0.000000\n" + "Min/Max/Avg stop media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop mediadelay\n" + "0.000000\n" + "maxstop mediadelay\n" + "0.000000\n" + "avgstop mediadelay\n" + "0.000000\n" + "Min/Max/Avg play DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay DTMFdelay\n" + "0.000000\n" + "maxplay DTMFdelay\n" + "0.000000\n" + "avgplay DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg statistics processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstatisticsdelay\n" + "0.000000\n" + "maxstatisticsdelay\n" + "0.000000\n" + "avgstatisticsdelay\n" + "0.000000\n" + "Min/Max/Avg silence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsilence mediadelay\n" + "0.000000\n" + "maxsilence mediadelay\n" + "0.000000\n" + "avgsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg unsilence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsilence mediadelay\n" + "0.000000\n" + "maxunsilence mediadelay\n" + "0.000000\n" + "avgunsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg publish processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpublishdelay\n" + "0.000000\n" + "maxpublishdelay\n" + "0.000000\n" + "avgpublishdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe request processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe requestdelay\n" + "0.000000\n" + "maxsubscribe requestdelay\n" + "0.000000\n" + "avgsubscribe requestdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe answer processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe answerdelay\n" + "0.000000\n" + "maxsubscribe answerdelay\n" + "0.000000\n" + "avgsubscribe answerdelay\n" + "0.000000\n" + "Min/Max/Avg unsubscribe processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsubscribedelay\n" + "0.000000\n" + "maxunsubscribedelay\n" + "0.000000\n" + "avgunsubscribedelay\n" + "0.000000\n" + "Min/Max/Avg ping requests per second\n" + "0/0/0 per sec\n" + "minpingrequestrate\n" + "0\n" + "maxpingrequestrate\n" + "0\n" + "avgpingrequestrate\n" + "0\n" "Min/Max/Avg offer requests per second\n" "0/0/0 per sec\n" "minofferrequestrate\n" @@ -1507,6 +3657,166 @@ int main(void) { "0\n" "avgdeleterequestrate\n" "0\n" + "Min/Max/Avg query requests per second\n" + "0/0/0 per sec\n" + "minqueryrequestrate\n" + "0\n" + "maxqueryrequestrate\n" + "0\n" + "avgqueryrequestrate\n" + "0\n" + "Min/Max/Avg list requests per second\n" + "0/0/0 per sec\n" + "minlistrequestrate\n" + "0\n" + "maxlistrequestrate\n" + "0\n" + "avglistrequestrate\n" + "0\n" + "Min/Max/Avg start recording requests per second\n" + "0/0/0 per sec\n" + "minstart recordingrequestrate\n" + "0\n" + "maxstart recordingrequestrate\n" + "0\n" + "avgstart recordingrequestrate\n" + "0\n" + "Min/Max/Avg stop recording requests per second\n" + "0/0/0 per sec\n" + "minstop recordingrequestrate\n" + "0\n" + "maxstop recordingrequestrate\n" + "0\n" + "avgstop recordingrequestrate\n" + "0\n" + "Min/Max/Avg start forwarding requests per second\n" + "0/0/0 per sec\n" + "minstart forwardingrequestrate\n" + "0\n" + "maxstart forwardingrequestrate\n" + "0\n" + "avgstart forwardingrequestrate\n" + "0\n" + "Min/Max/Avg stop forwarding requests per second\n" + "0/0/0 per sec\n" + "minstop forwardingrequestrate\n" + "0\n" + "maxstop forwardingrequestrate\n" + "0\n" + "avgstop forwardingrequestrate\n" + "0\n" + "Min/Max/Avg block DTMF requests per second\n" + "0/0/0 per sec\n" + "minblock DTMFrequestrate\n" + "0\n" + "maxblock DTMFrequestrate\n" + "0\n" + "avgblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg unblock DTMF requests per second\n" + "0/0/0 per sec\n" + "minunblock DTMFrequestrate\n" + "0\n" + "maxunblock DTMFrequestrate\n" + "0\n" + "avgunblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg block media requests per second\n" + "0/0/0 per sec\n" + "minblock mediarequestrate\n" + "0\n" + "maxblock mediarequestrate\n" + "0\n" + "avgblock mediarequestrate\n" + "0\n" + "Min/Max/Avg unblock media requests per second\n" + "0/0/0 per sec\n" + "minunblock mediarequestrate\n" + "0\n" + "maxunblock mediarequestrate\n" + "0\n" + "avgunblock mediarequestrate\n" + "0\n" + "Min/Max/Avg play media requests per second\n" + "0/0/0 per sec\n" + "minplay mediarequestrate\n" + "0\n" + "maxplay mediarequestrate\n" + "0\n" + "avgplay mediarequestrate\n" + "0\n" + "Min/Max/Avg stop media requests per second\n" + "0/0/0 per sec\n" + "minstop mediarequestrate\n" + "0\n" + "maxstop mediarequestrate\n" + "0\n" + "avgstop mediarequestrate\n" + "0\n" + "Min/Max/Avg play DTMF requests per second\n" + "0/0/0 per sec\n" + "minplay DTMFrequestrate\n" + "0\n" + "maxplay DTMFrequestrate\n" + "0\n" + "avgplay DTMFrequestrate\n" + "0\n" + "Min/Max/Avg statistics requests per second\n" + "0/0/0 per sec\n" + "minstatisticsrequestrate\n" + "0\n" + "maxstatisticsrequestrate\n" + "0\n" + "avgstatisticsrequestrate\n" + "0\n" + "Min/Max/Avg silence media requests per second\n" + "0/0/0 per sec\n" + "minsilence mediarequestrate\n" + "0\n" + "maxsilence mediarequestrate\n" + "0\n" + "avgsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg unsilence media requests per second\n" + "0/0/0 per sec\n" + "minunsilence mediarequestrate\n" + "0\n" + "maxunsilence mediarequestrate\n" + "0\n" + "avgunsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg publish requests per second\n" + "0/0/0 per sec\n" + "minpublishrequestrate\n" + "0\n" + "maxpublishrequestrate\n" + "0\n" + "avgpublishrequestrate\n" + "0\n" + "Min/Max/Avg subscribe request requests per second\n" + "0/0/0 per sec\n" + "minsubscribe requestrequestrate\n" + "0\n" + "maxsubscribe requestrequestrate\n" + "0\n" + "avgsubscribe requestrequestrate\n" + "0\n" + "Min/Max/Avg subscribe answer requests per second\n" + "0/0/0 per sec\n" + "minsubscribe answerrequestrate\n" + "0\n" + "maxsubscribe answerrequestrate\n" + "0\n" + "avgsubscribe answerrequestrate\n" + "0\n" + "Min/Max/Avg unsubscribe requests per second\n" + "0/0/0 per sec\n" + "minunsubscriberequestrate\n" + "0\n" + "maxunsubscriberequestrate\n" + "0\n" + "avgunsubscriberequestrate\n" + "0\n" "\n" "\n" "}\n" @@ -1587,6 +3897,9 @@ int main(void) { graph_str = print_graphite_data(&rtpe_totalstats_lastinterval); assert_g_string_eq(graph_str, + "ping_time_min 0.000000 200\n" + "ping_time_max 0.000000 200\n" + "ping_time_avg 0.000000 200\n" "offer_time_min 0.000000 200\n" "offer_time_max 0.000000 200\n" "offer_time_avg 0.000000 200\n" @@ -1596,6 +3909,66 @@ int main(void) { "delete_time_min 0.000000 200\n" "delete_time_max 0.000000 200\n" "delete_time_avg 0.000000 200\n" + "query_time_min 0.000000 200\n" + "query_time_max 0.000000 200\n" + "query_time_avg 0.000000 200\n" + "list_time_min 0.000000 200\n" + "list_time_max 0.000000 200\n" + "list_time_avg 0.000000 200\n" + "start recording_time_min 0.000000 200\n" + "start recording_time_max 0.000000 200\n" + "start recording_time_avg 0.000000 200\n" + "stop recording_time_min 0.000000 200\n" + "stop recording_time_max 0.000000 200\n" + "stop recording_time_avg 0.000000 200\n" + "start forwarding_time_min 0.000000 200\n" + "start forwarding_time_max 0.000000 200\n" + "start forwarding_time_avg 0.000000 200\n" + "stop forwarding_time_min 0.000000 200\n" + "stop forwarding_time_max 0.000000 200\n" + "stop forwarding_time_avg 0.000000 200\n" + "block DTMF_time_min 0.000000 200\n" + "block DTMF_time_max 0.000000 200\n" + "block DTMF_time_avg 0.000000 200\n" + "unblock DTMF_time_min 0.000000 200\n" + "unblock DTMF_time_max 0.000000 200\n" + "unblock DTMF_time_avg 0.000000 200\n" + "block media_time_min 0.000000 200\n" + "block media_time_max 0.000000 200\n" + "block media_time_avg 0.000000 200\n" + "unblock media_time_min 0.000000 200\n" + "unblock media_time_max 0.000000 200\n" + "unblock media_time_avg 0.000000 200\n" + "play media_time_min 0.000000 200\n" + "play media_time_max 0.000000 200\n" + "play media_time_avg 0.000000 200\n" + "stop media_time_min 0.000000 200\n" + "stop media_time_max 0.000000 200\n" + "stop media_time_avg 0.000000 200\n" + "play DTMF_time_min 0.000000 200\n" + "play DTMF_time_max 0.000000 200\n" + "play DTMF_time_avg 0.000000 200\n" + "statistics_time_min 0.000000 200\n" + "statistics_time_max 0.000000 200\n" + "statistics_time_avg 0.000000 200\n" + "silence media_time_min 0.000000 200\n" + "silence media_time_max 0.000000 200\n" + "silence media_time_avg 0.000000 200\n" + "unsilence media_time_min 0.000000 200\n" + "unsilence media_time_max 0.000000 200\n" + "unsilence media_time_avg 0.000000 200\n" + "publish_time_min 0.000000 200\n" + "publish_time_max 0.000000 200\n" + "publish_time_avg 0.000000 200\n" + "subscribe request_time_min 0.000000 200\n" + "subscribe request_time_max 0.000000 200\n" + "subscribe request_time_avg 0.000000 200\n" + "subscribe answer_time_min 0.000000 200\n" + "subscribe answer_time_max 0.000000 200\n" + "subscribe answer_time_avg 0.000000 200\n" + "unsubscribe_time_min 0.000000 200\n" + "unsubscribe_time_max 0.000000 200\n" + "unsubscribe_time_avg 0.000000 200\n" "call_dur 186.000000 200\n" "average_call_dur 0.000000 200\n" "forced_term_sess 0 200\n" @@ -1619,6 +3992,9 @@ int main(void) { "offer_timeout_sess 0 200\n" "timeout_sess 0 200\n" "reject_sess 0 200\n" + "pings_ps_min 0 200\n" + "pings_ps_max 0 200\n" + "pings_ps_avg 0 200\n" "offers_ps_min 0 200\n" "offers_ps_max 0 200\n" "offers_ps_avg 0 200\n" @@ -1627,7 +4003,67 @@ int main(void) { "answers_ps_avg 0 200\n" "deletes_ps_min 0 200\n" "deletes_ps_max 0 200\n" - "deletes_ps_avg 0 200\n"); + "deletes_ps_avg 0 200\n" + "querys_ps_min 0 200\n" + "querys_ps_max 0 200\n" + "querys_ps_avg 0 200\n" + "lists_ps_min 0 200\n" + "lists_ps_max 0 200\n" + "lists_ps_avg 0 200\n" + "start recordings_ps_min 0 200\n" + "start recordings_ps_max 0 200\n" + "start recordings_ps_avg 0 200\n" + "stop recordings_ps_min 0 200\n" + "stop recordings_ps_max 0 200\n" + "stop recordings_ps_avg 0 200\n" + "start forwardings_ps_min 0 200\n" + "start forwardings_ps_max 0 200\n" + "start forwardings_ps_avg 0 200\n" + "stop forwardings_ps_min 0 200\n" + "stop forwardings_ps_max 0 200\n" + "stop forwardings_ps_avg 0 200\n" + "block DTMFs_ps_min 0 200\n" + "block DTMFs_ps_max 0 200\n" + "block DTMFs_ps_avg 0 200\n" + "unblock DTMFs_ps_min 0 200\n" + "unblock DTMFs_ps_max 0 200\n" + "unblock DTMFs_ps_avg 0 200\n" + "block medias_ps_min 0 200\n" + "block medias_ps_max 0 200\n" + "block medias_ps_avg 0 200\n" + "unblock medias_ps_min 0 200\n" + "unblock medias_ps_max 0 200\n" + "unblock medias_ps_avg 0 200\n" + "play medias_ps_min 0 200\n" + "play medias_ps_max 0 200\n" + "play medias_ps_avg 0 200\n" + "stop medias_ps_min 0 200\n" + "stop medias_ps_max 0 200\n" + "stop medias_ps_avg 0 200\n" + "play DTMFs_ps_min 0 200\n" + "play DTMFs_ps_max 0 200\n" + "play DTMFs_ps_avg 0 200\n" + "statisticss_ps_min 0 200\n" + "statisticss_ps_max 0 200\n" + "statisticss_ps_avg 0 200\n" + "silence medias_ps_min 0 200\n" + "silence medias_ps_max 0 200\n" + "silence medias_ps_avg 0 200\n" + "unsilence medias_ps_min 0 200\n" + "unsilence medias_ps_max 0 200\n" + "unsilence medias_ps_avg 0 200\n" + "publishs_ps_min 0 200\n" + "publishs_ps_max 0 200\n" + "publishs_ps_avg 0 200\n" + "subscribe requests_ps_min 0 200\n" + "subscribe requests_ps_max 0 200\n" + "subscribe requests_ps_avg 0 200\n" + "subscribe answers_ps_min 0 200\n" + "subscribe answers_ps_max 0 200\n" + "subscribe answers_ps_avg 0 200\n" + "unsubscribes_ps_min 0 200\n" + "unsubscribes_ps_max 0 200\n" + "unsubscribes_ps_avg 0 200\n"); stats = statistics_gather_metrics(); assert_metrics_eq(stats, @@ -1695,117 +4131,453 @@ int main(void) { "silenttimeoutsessions\n" "0\n" "0\n" - "reason=\"silent_timeout\"\n" - "Total timed-out sessions via FINAL_TIMEOUT\n" - "finaltimeoutsessions\n" + "reason=\"silent_timeout\"\n" + "Total timed-out sessions via FINAL_TIMEOUT\n" + "finaltimeoutsessions\n" + "0\n" + "0\n" + "reason=\"final_timeout\"\n" + "Total timed-out sessions via OFFER_TIMEOUT\n" + "offertimeoutsessions\n" + "0\n" + "0\n" + "reason=\"offer_timeout\"\n" + "Total regular terminated sessions\n" + "regularterminatedsessions\n" + "0\n" + "0\n" + "reason=\"terminated\"\n" + "Total forced terminated sessions\n" + "forcedterminatedsessions\n" + "0\n" + "0\n" + "reason=\"force_terminated\"\n" + "Total relayed packets\n" + "relayedpackets\n" + "0\n" + "0\n" + "Total relayed packet errors\n" + "relayedpacketerrors\n" + "0\n" + "0\n" + "Total relayed bytes\n" + "relayedbytes\n" + "0\n" + "0\n" + "Total number of streams with no relayed packets\n" + "zerowaystreams\n" + "0\n" + "0\n" + "Total number of 1-way streams\n" + "onewaystreams\n" + "0\n" + "0\n" + "Average call duration\n" + "avgcallduration\n" + "0.000000\n" + "0.000000\n" + "\n" + "\n" + "}\n" + "Graphite interval statistics (last reported values to graphite):\n" + "intervalstatistics\n" + "{\n" + "Total calls duration\n" + "totalcallsduration\n" + "186.000000\n" + "186.000000\n" + "\n" + "Min managed sessions\n" + "minmanagedsessions\n" + "2\n" + "2\n" + "Max managed sessions\n" + "maxmanagedsessions\n" + "2\n" + "2\n" + "Min/Max/Avg ping processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpingdelay\n" + "0.000000\n" + "maxpingdelay\n" + "0.000000\n" + "avgpingdelay\n" + "0.000000\n" + "Min/Max/Avg offer processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minofferdelay\n" + "0.000000\n" + "maxofferdelay\n" + "0.000000\n" + "avgofferdelay\n" + "0.000000\n" + "Min/Max/Avg answer processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minanswerdelay\n" + "0.000000\n" + "maxanswerdelay\n" + "0.000000\n" + "avganswerdelay\n" + "0.000000\n" + "Min/Max/Avg delete processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "mindeletedelay\n" + "0.000000\n" + "maxdeletedelay\n" + "0.000000\n" + "avgdeletedelay\n" + "0.000000\n" + "Min/Max/Avg query processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minquerydelay\n" + "0.000000\n" + "maxquerydelay\n" + "0.000000\n" + "avgquerydelay\n" + "0.000000\n" + "Min/Max/Avg list processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minlistdelay\n" + "0.000000\n" + "maxlistdelay\n" + "0.000000\n" + "avglistdelay\n" + "0.000000\n" + "Min/Max/Avg start recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart recordingdelay\n" + "0.000000\n" + "maxstart recordingdelay\n" + "0.000000\n" + "avgstart recordingdelay\n" + "0.000000\n" + "Min/Max/Avg stop recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop recordingdelay\n" + "0.000000\n" + "maxstop recordingdelay\n" + "0.000000\n" + "avgstop recordingdelay\n" + "0.000000\n" + "Min/Max/Avg start forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart forwardingdelay\n" + "0.000000\n" + "maxstart forwardingdelay\n" + "0.000000\n" + "avgstart forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg stop forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop forwardingdelay\n" + "0.000000\n" + "maxstop forwardingdelay\n" + "0.000000\n" + "avgstop forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg block DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock DTMFdelay\n" + "0.000000\n" + "maxblock DTMFdelay\n" + "0.000000\n" + "avgblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg unblock DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock DTMFdelay\n" + "0.000000\n" + "maxunblock DTMFdelay\n" + "0.000000\n" + "avgunblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg block media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock mediadelay\n" + "0.000000\n" + "maxblock mediadelay\n" + "0.000000\n" + "avgblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg unblock media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock mediadelay\n" + "0.000000\n" + "maxunblock mediadelay\n" + "0.000000\n" + "avgunblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg play media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay mediadelay\n" + "0.000000\n" + "maxplay mediadelay\n" + "0.000000\n" + "avgplay mediadelay\n" + "0.000000\n" + "Min/Max/Avg stop media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop mediadelay\n" + "0.000000\n" + "maxstop mediadelay\n" + "0.000000\n" + "avgstop mediadelay\n" + "0.000000\n" + "Min/Max/Avg play DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay DTMFdelay\n" + "0.000000\n" + "maxplay DTMFdelay\n" + "0.000000\n" + "avgplay DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg statistics processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstatisticsdelay\n" + "0.000000\n" + "maxstatisticsdelay\n" + "0.000000\n" + "avgstatisticsdelay\n" + "0.000000\n" + "Min/Max/Avg silence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsilence mediadelay\n" + "0.000000\n" + "maxsilence mediadelay\n" + "0.000000\n" + "avgsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg unsilence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsilence mediadelay\n" + "0.000000\n" + "maxunsilence mediadelay\n" + "0.000000\n" + "avgunsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg publish processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpublishdelay\n" + "0.000000\n" + "maxpublishdelay\n" + "0.000000\n" + "avgpublishdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe request processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe requestdelay\n" + "0.000000\n" + "maxsubscribe requestdelay\n" + "0.000000\n" + "avgsubscribe requestdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe answer processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe answerdelay\n" + "0.000000\n" + "maxsubscribe answerdelay\n" + "0.000000\n" + "avgsubscribe answerdelay\n" + "0.000000\n" + "Min/Max/Avg unsubscribe processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsubscribedelay\n" + "0.000000\n" + "maxunsubscribedelay\n" + "0.000000\n" + "avgunsubscribedelay\n" + "0.000000\n" + "Min/Max/Avg ping requests per second\n" + "0/0/0 per sec\n" + "minpingrequestrate\n" + "0\n" + "maxpingrequestrate\n" + "0\n" + "avgpingrequestrate\n" + "0\n" + "Min/Max/Avg offer requests per second\n" + "0/0/0 per sec\n" + "minofferrequestrate\n" + "0\n" + "maxofferrequestrate\n" + "0\n" + "avgofferrequestrate\n" + "0\n" + "Min/Max/Avg answer requests per second\n" + "0/0/0 per sec\n" + "minanswerrequestrate\n" + "0\n" + "maxanswerrequestrate\n" + "0\n" + "avganswerrequestrate\n" + "0\n" + "Min/Max/Avg delete requests per second\n" + "0/0/0 per sec\n" + "mindeleterequestrate\n" + "0\n" + "maxdeleterequestrate\n" + "0\n" + "avgdeleterequestrate\n" + "0\n" + "Min/Max/Avg query requests per second\n" + "0/0/0 per sec\n" + "minqueryrequestrate\n" + "0\n" + "maxqueryrequestrate\n" + "0\n" + "avgqueryrequestrate\n" + "0\n" + "Min/Max/Avg list requests per second\n" + "0/0/0 per sec\n" + "minlistrequestrate\n" + "0\n" + "maxlistrequestrate\n" + "0\n" + "avglistrequestrate\n" + "0\n" + "Min/Max/Avg start recording requests per second\n" + "0/0/0 per sec\n" + "minstart recordingrequestrate\n" + "0\n" + "maxstart recordingrequestrate\n" + "0\n" + "avgstart recordingrequestrate\n" + "0\n" + "Min/Max/Avg stop recording requests per second\n" + "0/0/0 per sec\n" + "minstop recordingrequestrate\n" + "0\n" + "maxstop recordingrequestrate\n" + "0\n" + "avgstop recordingrequestrate\n" + "0\n" + "Min/Max/Avg start forwarding requests per second\n" + "0/0/0 per sec\n" + "minstart forwardingrequestrate\n" + "0\n" + "maxstart forwardingrequestrate\n" + "0\n" + "avgstart forwardingrequestrate\n" + "0\n" + "Min/Max/Avg stop forwarding requests per second\n" + "0/0/0 per sec\n" + "minstop forwardingrequestrate\n" + "0\n" + "maxstop forwardingrequestrate\n" + "0\n" + "avgstop forwardingrequestrate\n" + "0\n" + "Min/Max/Avg block DTMF requests per second\n" + "0/0/0 per sec\n" + "minblock DTMFrequestrate\n" + "0\n" + "maxblock DTMFrequestrate\n" + "0\n" + "avgblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg unblock DTMF requests per second\n" + "0/0/0 per sec\n" + "minunblock DTMFrequestrate\n" + "0\n" + "maxunblock DTMFrequestrate\n" + "0\n" + "avgunblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg block media requests per second\n" + "0/0/0 per sec\n" + "minblock mediarequestrate\n" + "0\n" + "maxblock mediarequestrate\n" + "0\n" + "avgblock mediarequestrate\n" + "0\n" + "Min/Max/Avg unblock media requests per second\n" + "0/0/0 per sec\n" + "minunblock mediarequestrate\n" + "0\n" + "maxunblock mediarequestrate\n" + "0\n" + "avgunblock mediarequestrate\n" + "0\n" + "Min/Max/Avg play media requests per second\n" + "0/0/0 per sec\n" + "minplay mediarequestrate\n" + "0\n" + "maxplay mediarequestrate\n" + "0\n" + "avgplay mediarequestrate\n" + "0\n" + "Min/Max/Avg stop media requests per second\n" + "0/0/0 per sec\n" + "minstop mediarequestrate\n" "0\n" + "maxstop mediarequestrate\n" "0\n" - "reason=\"final_timeout\"\n" - "Total timed-out sessions via OFFER_TIMEOUT\n" - "offertimeoutsessions\n" + "avgstop mediarequestrate\n" "0\n" + "Min/Max/Avg play DTMF requests per second\n" + "0/0/0 per sec\n" + "minplay DTMFrequestrate\n" "0\n" - "reason=\"offer_timeout\"\n" - "Total regular terminated sessions\n" - "regularterminatedsessions\n" + "maxplay DTMFrequestrate\n" "0\n" + "avgplay DTMFrequestrate\n" "0\n" - "reason=\"terminated\"\n" - "Total forced terminated sessions\n" - "forcedterminatedsessions\n" + "Min/Max/Avg statistics requests per second\n" + "0/0/0 per sec\n" + "minstatisticsrequestrate\n" "0\n" + "maxstatisticsrequestrate\n" "0\n" - "reason=\"force_terminated\"\n" - "Total relayed packets\n" - "relayedpackets\n" + "avgstatisticsrequestrate\n" "0\n" + "Min/Max/Avg silence media requests per second\n" + "0/0/0 per sec\n" + "minsilence mediarequestrate\n" "0\n" - "Total relayed packet errors\n" - "relayedpacketerrors\n" + "maxsilence mediarequestrate\n" "0\n" + "avgsilence mediarequestrate\n" "0\n" - "Total relayed bytes\n" - "relayedbytes\n" + "Min/Max/Avg unsilence media requests per second\n" + "0/0/0 per sec\n" + "minunsilence mediarequestrate\n" "0\n" + "maxunsilence mediarequestrate\n" "0\n" - "Total number of streams with no relayed packets\n" - "zerowaystreams\n" + "avgunsilence mediarequestrate\n" "0\n" + "Min/Max/Avg publish requests per second\n" + "0/0/0 per sec\n" + "minpublishrequestrate\n" "0\n" - "Total number of 1-way streams\n" - "onewaystreams\n" + "maxpublishrequestrate\n" "0\n" + "avgpublishrequestrate\n" "0\n" - "Average call duration\n" - "avgcallduration\n" - "0.000000\n" - "0.000000\n" - "\n" - "\n" - "}\n" - "Graphite interval statistics (last reported values to graphite):\n" - "intervalstatistics\n" - "{\n" - "Total calls duration\n" - "totalcallsduration\n" - "186.000000\n" - "186.000000\n" - "\n" - "Min managed sessions\n" - "minmanagedsessions\n" - "2\n" - "2\n" - "Max managed sessions\n" - "maxmanagedsessions\n" - "2\n" - "2\n" - "Min/Max/Avg offer processing delay\n" - "0.000000/0.000000/0.000000 sec\n" - "minofferdelay\n" - "0.000000\n" - "maxofferdelay\n" - "0.000000\n" - "avgofferdelay\n" - "0.000000\n" - "Min/Max/Avg answer processing delay\n" - "0.000000/0.000000/0.000000 sec\n" - "minanswerdelay\n" - "0.000000\n" - "maxanswerdelay\n" - "0.000000\n" - "avganswerdelay\n" - "0.000000\n" - "Min/Max/Avg delete processing delay\n" - "0.000000/0.000000/0.000000 sec\n" - "mindeletedelay\n" - "0.000000\n" - "maxdeletedelay\n" - "0.000000\n" - "avgdeletedelay\n" - "0.000000\n" - "Min/Max/Avg offer requests per second\n" + "Min/Max/Avg subscribe request requests per second\n" "0/0/0 per sec\n" - "minofferrequestrate\n" + "minsubscribe requestrequestrate\n" "0\n" - "maxofferrequestrate\n" + "maxsubscribe requestrequestrate\n" "0\n" - "avgofferrequestrate\n" + "avgsubscribe requestrequestrate\n" "0\n" - "Min/Max/Avg answer requests per second\n" + "Min/Max/Avg subscribe answer requests per second\n" "0/0/0 per sec\n" - "minanswerrequestrate\n" + "minsubscribe answerrequestrate\n" "0\n" - "maxanswerrequestrate\n" + "maxsubscribe answerrequestrate\n" "0\n" - "avganswerrequestrate\n" + "avgsubscribe answerrequestrate\n" "0\n" - "Min/Max/Avg delete requests per second\n" + "Min/Max/Avg unsubscribe requests per second\n" "0/0/0 per sec\n" - "mindeleterequestrate\n" + "minunsubscriberequestrate\n" "0\n" - "maxdeleterequestrate\n" + "maxunsubscriberequestrate\n" "0\n" - "avgdeleterequestrate\n" + "avgunsubscriberequestrate\n" "0\n" "\n" "\n" @@ -1889,6 +4661,9 @@ int main(void) { graph_str = print_graphite_data(&rtpe_totalstats_lastinterval); assert_g_string_eq(graph_str, + "ping_time_min 0.000000 200\n" + "ping_time_max 0.000000 200\n" + "ping_time_avg 0.000000 200\n" "offer_time_min 0.000000 200\n" "offer_time_max 0.000000 200\n" "offer_time_avg 0.000000 200\n" @@ -1898,6 +4673,66 @@ int main(void) { "delete_time_min 0.000000 200\n" "delete_time_max 0.000000 200\n" "delete_time_avg 0.000000 200\n" + "query_time_min 0.000000 200\n" + "query_time_max 0.000000 200\n" + "query_time_avg 0.000000 200\n" + "list_time_min 0.000000 200\n" + "list_time_max 0.000000 200\n" + "list_time_avg 0.000000 200\n" + "start recording_time_min 0.000000 200\n" + "start recording_time_max 0.000000 200\n" + "start recording_time_avg 0.000000 200\n" + "stop recording_time_min 0.000000 200\n" + "stop recording_time_max 0.000000 200\n" + "stop recording_time_avg 0.000000 200\n" + "start forwarding_time_min 0.000000 200\n" + "start forwarding_time_max 0.000000 200\n" + "start forwarding_time_avg 0.000000 200\n" + "stop forwarding_time_min 0.000000 200\n" + "stop forwarding_time_max 0.000000 200\n" + "stop forwarding_time_avg 0.000000 200\n" + "block DTMF_time_min 0.000000 200\n" + "block DTMF_time_max 0.000000 200\n" + "block DTMF_time_avg 0.000000 200\n" + "unblock DTMF_time_min 0.000000 200\n" + "unblock DTMF_time_max 0.000000 200\n" + "unblock DTMF_time_avg 0.000000 200\n" + "block media_time_min 0.000000 200\n" + "block media_time_max 0.000000 200\n" + "block media_time_avg 0.000000 200\n" + "unblock media_time_min 0.000000 200\n" + "unblock media_time_max 0.000000 200\n" + "unblock media_time_avg 0.000000 200\n" + "play media_time_min 0.000000 200\n" + "play media_time_max 0.000000 200\n" + "play media_time_avg 0.000000 200\n" + "stop media_time_min 0.000000 200\n" + "stop media_time_max 0.000000 200\n" + "stop media_time_avg 0.000000 200\n" + "play DTMF_time_min 0.000000 200\n" + "play DTMF_time_max 0.000000 200\n" + "play DTMF_time_avg 0.000000 200\n" + "statistics_time_min 0.000000 200\n" + "statistics_time_max 0.000000 200\n" + "statistics_time_avg 0.000000 200\n" + "silence media_time_min 0.000000 200\n" + "silence media_time_max 0.000000 200\n" + "silence media_time_avg 0.000000 200\n" + "unsilence media_time_min 0.000000 200\n" + "unsilence media_time_max 0.000000 200\n" + "unsilence media_time_avg 0.000000 200\n" + "publish_time_min 0.000000 200\n" + "publish_time_max 0.000000 200\n" + "publish_time_avg 0.000000 200\n" + "subscribe request_time_min 0.000000 200\n" + "subscribe request_time_max 0.000000 200\n" + "subscribe request_time_avg 0.000000 200\n" + "subscribe answer_time_min 0.000000 200\n" + "subscribe answer_time_max 0.000000 200\n" + "subscribe answer_time_avg 0.000000 200\n" + "unsubscribe_time_min 0.000000 200\n" + "unsubscribe_time_max 0.000000 200\n" + "unsubscribe_time_avg 0.000000 200\n" "call_dur 0.000000 200\n" "average_call_dur 93.000000 200\n" "forced_term_sess 0 200\n" @@ -1921,6 +4756,9 @@ int main(void) { "offer_timeout_sess 0 200\n" "timeout_sess 0 200\n" "reject_sess 0 200\n" + "pings_ps_min 0 200\n" + "pings_ps_max 0 200\n" + "pings_ps_avg 0 200\n" "offers_ps_min 0 200\n" "offers_ps_max 0 200\n" "offers_ps_avg 0 200\n" @@ -1929,7 +4767,67 @@ int main(void) { "answers_ps_avg 0 200\n" "deletes_ps_min 0 200\n" "deletes_ps_max 0 200\n" - "deletes_ps_avg 0 200\n"); + "deletes_ps_avg 0 200\n" + "querys_ps_min 0 200\n" + "querys_ps_max 0 200\n" + "querys_ps_avg 0 200\n" + "lists_ps_min 0 200\n" + "lists_ps_max 0 200\n" + "lists_ps_avg 0 200\n" + "start recordings_ps_min 0 200\n" + "start recordings_ps_max 0 200\n" + "start recordings_ps_avg 0 200\n" + "stop recordings_ps_min 0 200\n" + "stop recordings_ps_max 0 200\n" + "stop recordings_ps_avg 0 200\n" + "start forwardings_ps_min 0 200\n" + "start forwardings_ps_max 0 200\n" + "start forwardings_ps_avg 0 200\n" + "stop forwardings_ps_min 0 200\n" + "stop forwardings_ps_max 0 200\n" + "stop forwardings_ps_avg 0 200\n" + "block DTMFs_ps_min 0 200\n" + "block DTMFs_ps_max 0 200\n" + "block DTMFs_ps_avg 0 200\n" + "unblock DTMFs_ps_min 0 200\n" + "unblock DTMFs_ps_max 0 200\n" + "unblock DTMFs_ps_avg 0 200\n" + "block medias_ps_min 0 200\n" + "block medias_ps_max 0 200\n" + "block medias_ps_avg 0 200\n" + "unblock medias_ps_min 0 200\n" + "unblock medias_ps_max 0 200\n" + "unblock medias_ps_avg 0 200\n" + "play medias_ps_min 0 200\n" + "play medias_ps_max 0 200\n" + "play medias_ps_avg 0 200\n" + "stop medias_ps_min 0 200\n" + "stop medias_ps_max 0 200\n" + "stop medias_ps_avg 0 200\n" + "play DTMFs_ps_min 0 200\n" + "play DTMFs_ps_max 0 200\n" + "play DTMFs_ps_avg 0 200\n" + "statisticss_ps_min 0 200\n" + "statisticss_ps_max 0 200\n" + "statisticss_ps_avg 0 200\n" + "silence medias_ps_min 0 200\n" + "silence medias_ps_max 0 200\n" + "silence medias_ps_avg 0 200\n" + "unsilence medias_ps_min 0 200\n" + "unsilence medias_ps_max 0 200\n" + "unsilence medias_ps_avg 0 200\n" + "publishs_ps_min 0 200\n" + "publishs_ps_max 0 200\n" + "publishs_ps_avg 0 200\n" + "subscribe requests_ps_min 0 200\n" + "subscribe requests_ps_max 0 200\n" + "subscribe requests_ps_avg 0 200\n" + "subscribe answers_ps_min 0 200\n" + "subscribe answers_ps_max 0 200\n" + "subscribe answers_ps_avg 0 200\n" + "unsubscribes_ps_min 0 200\n" + "unsubscribes_ps_max 0 200\n" + "unsubscribes_ps_avg 0 200\n"); stats = statistics_gather_metrics(); assert_metrics_eq(stats, @@ -2061,6 +4959,14 @@ int main(void) { "maxmanagedsessions\n" "2\n" "2\n" + "Min/Max/Avg ping processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpingdelay\n" + "0.000000\n" + "maxpingdelay\n" + "0.000000\n" + "avgpingdelay\n" + "0.000000\n" "Min/Max/Avg offer processing delay\n" "0.000000/0.000000/0.000000 sec\n" "minofferdelay\n" @@ -2085,6 +4991,174 @@ int main(void) { "0.000000\n" "avgdeletedelay\n" "0.000000\n" + "Min/Max/Avg query processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minquerydelay\n" + "0.000000\n" + "maxquerydelay\n" + "0.000000\n" + "avgquerydelay\n" + "0.000000\n" + "Min/Max/Avg list processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minlistdelay\n" + "0.000000\n" + "maxlistdelay\n" + "0.000000\n" + "avglistdelay\n" + "0.000000\n" + "Min/Max/Avg start recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart recordingdelay\n" + "0.000000\n" + "maxstart recordingdelay\n" + "0.000000\n" + "avgstart recordingdelay\n" + "0.000000\n" + "Min/Max/Avg stop recording processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop recordingdelay\n" + "0.000000\n" + "maxstop recordingdelay\n" + "0.000000\n" + "avgstop recordingdelay\n" + "0.000000\n" + "Min/Max/Avg start forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstart forwardingdelay\n" + "0.000000\n" + "maxstart forwardingdelay\n" + "0.000000\n" + "avgstart forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg stop forwarding processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop forwardingdelay\n" + "0.000000\n" + "maxstop forwardingdelay\n" + "0.000000\n" + "avgstop forwardingdelay\n" + "0.000000\n" + "Min/Max/Avg block DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock DTMFdelay\n" + "0.000000\n" + "maxblock DTMFdelay\n" + "0.000000\n" + "avgblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg unblock DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock DTMFdelay\n" + "0.000000\n" + "maxunblock DTMFdelay\n" + "0.000000\n" + "avgunblock DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg block media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minblock mediadelay\n" + "0.000000\n" + "maxblock mediadelay\n" + "0.000000\n" + "avgblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg unblock media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunblock mediadelay\n" + "0.000000\n" + "maxunblock mediadelay\n" + "0.000000\n" + "avgunblock mediadelay\n" + "0.000000\n" + "Min/Max/Avg play media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay mediadelay\n" + "0.000000\n" + "maxplay mediadelay\n" + "0.000000\n" + "avgplay mediadelay\n" + "0.000000\n" + "Min/Max/Avg stop media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstop mediadelay\n" + "0.000000\n" + "maxstop mediadelay\n" + "0.000000\n" + "avgstop mediadelay\n" + "0.000000\n" + "Min/Max/Avg play DTMF processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minplay DTMFdelay\n" + "0.000000\n" + "maxplay DTMFdelay\n" + "0.000000\n" + "avgplay DTMFdelay\n" + "0.000000\n" + "Min/Max/Avg statistics processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minstatisticsdelay\n" + "0.000000\n" + "maxstatisticsdelay\n" + "0.000000\n" + "avgstatisticsdelay\n" + "0.000000\n" + "Min/Max/Avg silence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsilence mediadelay\n" + "0.000000\n" + "maxsilence mediadelay\n" + "0.000000\n" + "avgsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg unsilence media processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsilence mediadelay\n" + "0.000000\n" + "maxunsilence mediadelay\n" + "0.000000\n" + "avgunsilence mediadelay\n" + "0.000000\n" + "Min/Max/Avg publish processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minpublishdelay\n" + "0.000000\n" + "maxpublishdelay\n" + "0.000000\n" + "avgpublishdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe request processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe requestdelay\n" + "0.000000\n" + "maxsubscribe requestdelay\n" + "0.000000\n" + "avgsubscribe requestdelay\n" + "0.000000\n" + "Min/Max/Avg subscribe answer processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minsubscribe answerdelay\n" + "0.000000\n" + "maxsubscribe answerdelay\n" + "0.000000\n" + "avgsubscribe answerdelay\n" + "0.000000\n" + "Min/Max/Avg unsubscribe processing delay\n" + "0.000000/0.000000/0.000000 sec\n" + "minunsubscribedelay\n" + "0.000000\n" + "maxunsubscribedelay\n" + "0.000000\n" + "avgunsubscribedelay\n" + "0.000000\n" + "Min/Max/Avg ping requests per second\n" + "0/0/0 per sec\n" + "minpingrequestrate\n" + "0\n" + "maxpingrequestrate\n" + "0\n" + "avgpingrequestrate\n" + "0\n" "Min/Max/Avg offer requests per second\n" "0/0/0 per sec\n" "minofferrequestrate\n" @@ -2109,6 +5183,166 @@ int main(void) { "0\n" "avgdeleterequestrate\n" "0\n" + "Min/Max/Avg query requests per second\n" + "0/0/0 per sec\n" + "minqueryrequestrate\n" + "0\n" + "maxqueryrequestrate\n" + "0\n" + "avgqueryrequestrate\n" + "0\n" + "Min/Max/Avg list requests per second\n" + "0/0/0 per sec\n" + "minlistrequestrate\n" + "0\n" + "maxlistrequestrate\n" + "0\n" + "avglistrequestrate\n" + "0\n" + "Min/Max/Avg start recording requests per second\n" + "0/0/0 per sec\n" + "minstart recordingrequestrate\n" + "0\n" + "maxstart recordingrequestrate\n" + "0\n" + "avgstart recordingrequestrate\n" + "0\n" + "Min/Max/Avg stop recording requests per second\n" + "0/0/0 per sec\n" + "minstop recordingrequestrate\n" + "0\n" + "maxstop recordingrequestrate\n" + "0\n" + "avgstop recordingrequestrate\n" + "0\n" + "Min/Max/Avg start forwarding requests per second\n" + "0/0/0 per sec\n" + "minstart forwardingrequestrate\n" + "0\n" + "maxstart forwardingrequestrate\n" + "0\n" + "avgstart forwardingrequestrate\n" + "0\n" + "Min/Max/Avg stop forwarding requests per second\n" + "0/0/0 per sec\n" + "minstop forwardingrequestrate\n" + "0\n" + "maxstop forwardingrequestrate\n" + "0\n" + "avgstop forwardingrequestrate\n" + "0\n" + "Min/Max/Avg block DTMF requests per second\n" + "0/0/0 per sec\n" + "minblock DTMFrequestrate\n" + "0\n" + "maxblock DTMFrequestrate\n" + "0\n" + "avgblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg unblock DTMF requests per second\n" + "0/0/0 per sec\n" + "minunblock DTMFrequestrate\n" + "0\n" + "maxunblock DTMFrequestrate\n" + "0\n" + "avgunblock DTMFrequestrate\n" + "0\n" + "Min/Max/Avg block media requests per second\n" + "0/0/0 per sec\n" + "minblock mediarequestrate\n" + "0\n" + "maxblock mediarequestrate\n" + "0\n" + "avgblock mediarequestrate\n" + "0\n" + "Min/Max/Avg unblock media requests per second\n" + "0/0/0 per sec\n" + "minunblock mediarequestrate\n" + "0\n" + "maxunblock mediarequestrate\n" + "0\n" + "avgunblock mediarequestrate\n" + "0\n" + "Min/Max/Avg play media requests per second\n" + "0/0/0 per sec\n" + "minplay mediarequestrate\n" + "0\n" + "maxplay mediarequestrate\n" + "0\n" + "avgplay mediarequestrate\n" + "0\n" + "Min/Max/Avg stop media requests per second\n" + "0/0/0 per sec\n" + "minstop mediarequestrate\n" + "0\n" + "maxstop mediarequestrate\n" + "0\n" + "avgstop mediarequestrate\n" + "0\n" + "Min/Max/Avg play DTMF requests per second\n" + "0/0/0 per sec\n" + "minplay DTMFrequestrate\n" + "0\n" + "maxplay DTMFrequestrate\n" + "0\n" + "avgplay DTMFrequestrate\n" + "0\n" + "Min/Max/Avg statistics requests per second\n" + "0/0/0 per sec\n" + "minstatisticsrequestrate\n" + "0\n" + "maxstatisticsrequestrate\n" + "0\n" + "avgstatisticsrequestrate\n" + "0\n" + "Min/Max/Avg silence media requests per second\n" + "0/0/0 per sec\n" + "minsilence mediarequestrate\n" + "0\n" + "maxsilence mediarequestrate\n" + "0\n" + "avgsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg unsilence media requests per second\n" + "0/0/0 per sec\n" + "minunsilence mediarequestrate\n" + "0\n" + "maxunsilence mediarequestrate\n" + "0\n" + "avgunsilence mediarequestrate\n" + "0\n" + "Min/Max/Avg publish requests per second\n" + "0/0/0 per sec\n" + "minpublishrequestrate\n" + "0\n" + "maxpublishrequestrate\n" + "0\n" + "avgpublishrequestrate\n" + "0\n" + "Min/Max/Avg subscribe request requests per second\n" + "0/0/0 per sec\n" + "minsubscribe requestrequestrate\n" + "0\n" + "maxsubscribe requestrequestrate\n" + "0\n" + "avgsubscribe requestrequestrate\n" + "0\n" + "Min/Max/Avg subscribe answer requests per second\n" + "0/0/0 per sec\n" + "minsubscribe answerrequestrate\n" + "0\n" + "maxsubscribe answerrequestrate\n" + "0\n" + "avgsubscribe answerrequestrate\n" + "0\n" + "Min/Max/Avg unsubscribe requests per second\n" + "0/0/0 per sec\n" + "minunsubscriberequestrate\n" + "0\n" + "maxunsubscriberequestrate\n" + "0\n" + "avgunsubscriberequestrate\n" + "0\n" "\n" "\n" "}\n"