diff options
author | Oliver Smith <osmith@sysmocom.de> | 2021-03-17 12:37:41 +0100 |
---|---|---|
committer | Oliver Smith <osmith@sysmocom.de> | 2021-03-17 17:52:37 +0100 |
commit | d290439b4afe928e7e341540cb92f1abf36a82cb (patch) | |
tree | 7bd6f0ce96a532c2fa0a05c3a9220d346ecd8c38 | |
parent | tests/stats: enable logging in test output (diff) | |
download | libosmocore-d290439b4afe928e7e341540cb92f1abf36a82cb.tar.xz libosmocore-d290439b4afe928e7e341540cb92f1abf36a82cb.zip |
stats: log error when missing stats values
Let the user know when the stats were not consumed fast enough for the
given FIFO length.
Related: SYS#4877
Change-Id: If0e8ab55103007693101538fb6ea310075217774
-rw-r--r-- | src/stat_item.c | 5 | ||||
-rw-r--r-- | tests/stats/stats_test.c | 7 | ||||
-rw-r--r-- | tests/stats/stats_test.err | 144 |
3 files changed, 156 insertions, 0 deletions
diff --git a/src/stat_item.c b/src/stat_item.c index ba364640..a44b3ad7 100644 --- a/src/stat_item.c +++ b/src/stat_item.c @@ -60,6 +60,7 @@ #include <osmocom/core/talloc.h> #include <osmocom/core/timer.h> #include <osmocom/core/stat_item.h> +#include <osmocom/core/logging.h> /*! global list of stat_item groups */ static LLIST_HEAD(osmo_stat_item_groups); @@ -242,6 +243,10 @@ int osmo_stat_item_get_next(const struct osmo_stat_item *item, int32_t *next_idx idx_delta = item_value->id + 1 - *next_idx; + if (idx_delta > 1) { + LOGP(DLSTATS, LOGL_ERROR, "%s: %d stats values skipped\n", item->desc->name, idx_delta - 1); + } + *next_idx = item_value->id + 1; return idx_delta; diff --git a/tests/stats/stats_test.c b/tests/stats/stats_test.c index 707f606f..b81ad6b5 100644 --- a/tests/stats/stats_test.c +++ b/tests/stats/stats_test.c @@ -120,6 +120,7 @@ static void stat_test(void) value = osmo_stat_item_get_last(statg->items[TEST_A_ITEM]); OSMO_ASSERT(value == -1); + fprintf(stderr, "osmo_stat_item_get_next rc == 0\n"); rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value); OSMO_ASSERT(rc == 0); @@ -128,13 +129,16 @@ static void stat_test(void) value = osmo_stat_item_get_last(statg->items[TEST_A_ITEM]); OSMO_ASSERT(value == 1); + fprintf(stderr, "osmo_stat_item_get_next rc > 0\n"); rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value); OSMO_ASSERT(rc > 0); OSMO_ASSERT(value == 1); + fprintf(stderr, "osmo_stat_item_get_next rc == 0\n"); rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value); OSMO_ASSERT(rc == 0); + fprintf(stderr, "osmo_stat_item_get_next rc > 0\n"); for (i = 2; i <= 32; i++) { osmo_stat_item_set(statg->items[TEST_A_ITEM], i); osmo_stat_item_set(statg->items[TEST_B_ITEM], 1000 + i); @@ -220,17 +224,20 @@ static void stat_test(void) rc = osmo_stat_item_discard(statg->items[TEST_A_ITEM], &rd_a); OSMO_ASSERT(rc > 0); + fprintf(stderr, "osmo_stat_item_get_next rc == 0\n"); rc = osmo_stat_item_discard(statg->items[TEST_A_ITEM], &rd_a); OSMO_ASSERT(rc == 0); rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value); OSMO_ASSERT(rc == 0); + fprintf(stderr, "osmo_stat_item_get_next rc > 0\n"); osmo_stat_item_set(statg->items[TEST_A_ITEM], 98); rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value); OSMO_ASSERT(rc > 0); OSMO_ASSERT(value == 98); + fprintf(stderr, "osmo_stat_item_get_next rc == 0\n"); rc = osmo_stat_item_get_next(statg->items[TEST_A_ITEM], &rd_a, &value); OSMO_ASSERT(rc == 0); diff --git a/tests/stats/stats_test.err b/tests/stats/stats_test.err index 3accf545..d059ffd1 100644 --- a/tests/stats/stats_test.err +++ b/tests/stats/stats_test.err @@ -1,3 +1,147 @@ +osmo_stat_item_get_next rc == 0 +osmo_stat_item_get_next rc > 0 +DLSTATS ERROR item.a: 1 stats values skipped +osmo_stat_item_get_next rc == 0 +osmo_stat_item_get_next rc > 0 +DLSTATS ERROR item.b: 3 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 4 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.a: 57 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.a: 1 stats values skipped +DLSTATS ERROR item.b: 51 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +DLSTATS ERROR item.b: 1 stats values skipped +osmo_stat_item_get_next rc == 0 +osmo_stat_item_get_next rc > 0 +osmo_stat_item_get_next rc == 0 Start test: test_reporting DLGLOBAL ERROR counter group 'ctr-test:one' already exists for index 2, instead using index 3. This is a software bug that needs fixing. DLGLOBAL ERROR 'ctr-test.one_dot' is not a valid counter group identifier |