Change in libosmocore[master]: stats_test: assert counter and stat item val counts separately

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

neels gerrit-no-reply at lists.osmocom.org
Wed Sep 15 06:40:36 UTC 2021


neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/25462 )


Change subject: stats_test: assert counter and stat item val counts separately
......................................................................

stats_test: assert counter and stat item val counts separately

Instead of just a send_count, keep one such count for the counter
updates, and a separate one for the stat item updates.
Print those numbers in the test output.

An upcoming patch will tweak stat_item reporting so that only an
actually changed value results in sending a new stat value. This patch
allows illustrating that change clearly.

Related: SYS#5542
Change-Id: I2da003ee6ec15f1c3959efe69e01b4ee24af82bb
---
M tests/stats/stats_test.c
M tests/stats/stats_test.err
2 files changed, 51 insertions(+), 57 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/62/25462/1

diff --git a/tests/stats/stats_test.c b/tests/stats/stats_test.c
index 2f2c6ec..9489e60 100644
--- a/tests/stats/stats_test.c
+++ b/tests/stats/stats_test.c
@@ -246,7 +246,8 @@
 
 /* define a special stats reporter for testing */
 
-static int send_count;
+static int sent_counter_vals;
+static int sent_stat_item_vals;
 
 enum {
 	OSMO_STATS_REPORTER_TEST = OSMO_STATS_REPORTER_LOG + 1,
@@ -265,7 +266,7 @@
 		group_name, ctrg ? ctrg->idx : 0,
 		desc->name, (long long)value, (long long)delta);
 
-	send_count += 1;
+	sent_counter_vals++;
 	return 0;
 }
 
@@ -279,7 +280,7 @@
 		statg->desc->group_name_prefix, statg->idx,
 		desc->name, value, desc->unit ? desc->unit : "");
 
-	send_count += 1;
+	sent_stat_item_vals++;
 	return 0;
 }
 
@@ -310,6 +311,17 @@
 	return srep;
 }
 
+static void _do_report(int expect_counter_vals, int expect_stat_item_vals, int line)
+{
+	sent_counter_vals = 0;
+	sent_stat_item_vals = 0;
+	osmo_stats_report();
+	fprintf(stderr, "reported: %d counter vals, %d stat item vals\n", sent_counter_vals, sent_stat_item_vals);
+	OSMO_ASSERT(sent_counter_vals == expect_counter_vals);
+	OSMO_ASSERT(sent_stat_item_vals == expect_stat_item_vals);
+}
+
+#define do_report(A, B) _do_report(A, B, __LINE__)
 
 static void test_reporting()
 {
@@ -363,36 +375,28 @@
 	OSMO_ASSERT(rc >= 0);
 
 	fprintf(stderr, "report (initial):\n");
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 20);
+	do_report(12, 8);
 
 	fprintf(stderr, "report (srep1 global):\n");
 	/* force single flush */
 	osmo_stats_reporter_set_max_class(srep1, OSMO_STATS_CLASS_GLOBAL);
 	srep1->force_single_flush = 1;
 	srep2->force_single_flush = 1;
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 10);
+	do_report(6, 4);
 
 	fprintf(stderr, "report (srep1 peer):\n");
 	/* force single flush */
 	osmo_stats_reporter_set_max_class(srep1, OSMO_STATS_CLASS_PEER);
 	srep1->force_single_flush = 1;
 	srep2->force_single_flush = 1;
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 14);
+	do_report(6, 8);
 
 	fprintf(stderr, "report (srep1 subscriber):\n");
 	/* force single flush */
 	osmo_stats_reporter_set_max_class(srep1, OSMO_STATS_CLASS_SUBSCRIBER);
 	srep1->force_single_flush = 1;
 	srep2->force_single_flush = 1;
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 20);
+	do_report(12, 8);
 
 	fprintf(stderr, "report (srep2 disabled):\n");
 	/* force single flush */
@@ -400,57 +404,39 @@
 	srep2->force_single_flush = 1;
 	rc = osmo_stats_reporter_disable(srep2);
 	OSMO_ASSERT(rc >= 0);
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 10);
+	do_report(6, 4);
 
 	fprintf(stderr, "report (srep2 enabled, no flush forced):\n");
 	rc = osmo_stats_reporter_enable(srep2);
 	OSMO_ASSERT(rc >= 0);
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 10);
+	do_report(6, 4);
 
 	fprintf(stderr, "report (should be empty):\n");
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 0);
+	do_report(0, 0);
 
 	fprintf(stderr, "report (group 1, counter 1 update):\n");
 	rate_ctr_inc(rate_ctr_group_get_ctr(ctrg1, TEST_A_CTR));
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 2);
+	do_report(2, 0);
 
 	fprintf(stderr, "report (group 1, item 1 update):\n");
 	osmo_stat_item_set(osmo_stat_item_group_get_item(statg1, TEST_A_ITEM), 10);
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 2);
+	do_report(0, 2);
 
 	fprintf(stderr, "report (group 1, item 1 update twice):\n");
 	osmo_stat_item_set(osmo_stat_item_group_get_item(statg1, TEST_A_ITEM), 10);
 	osmo_stat_item_set(osmo_stat_item_group_get_item(statg1, TEST_A_ITEM), 10);
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 2);
+	do_report(0, 2);
 
 	fprintf(stderr, "report (group 1, item 1 update twice, check max):\n");
 	osmo_stat_item_set(osmo_stat_item_group_get_item(statg1, TEST_A_ITEM), 20);
 	osmo_stat_item_set(osmo_stat_item_group_get_item(statg1, TEST_A_ITEM), 10);
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 2);
+	do_report(0, 2);
 
 	fprintf(stderr, "report (group 1, item 1 no update, send last item (!= last max), OS#5215):\n");
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 2);
+	do_report(0, 2);
 
 	fprintf(stderr, "report (group 1, item 1 no update, nothing to send):\n");
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 0);
+	do_report(0, 0);
 
 	fprintf(stderr, "report (remove statg1, ctrg1):\n");
 	/* force single flush */
@@ -458,40 +444,30 @@
 	srep2->force_single_flush = 1;
 	osmo_stat_item_group_free(statg1);
 	rate_ctr_group_free(ctrg1);
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 12);
+	do_report(8, 4);
 
 	fprintf(stderr, "report (remove srep1):\n");
 	/* force single flush */
 	srep1->force_single_flush = 1;
 	srep2->force_single_flush = 1;
 	osmo_stats_reporter_free(srep1);
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 6);
+	do_report(4, 2);
 
 	fprintf(stderr, "report (remove statg2):\n");
 	/* force single flush */
 	srep2->force_single_flush = 1;
 	osmo_stat_item_group_free(statg2);
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 4);
+	do_report(4, 0);
 
 	fprintf(stderr, "report (remove srep2):\n");
 	/* force single flush */
 	srep2->force_single_flush = 1;
 	osmo_stats_reporter_free(srep2);
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 0);
+	do_report(0, 0);
 
 	fprintf(stderr, "report (remove ctrg2, should be empty):\n");
 	rate_ctr_group_free(ctrg2);
-	send_count = 0;
-	osmo_stats_report();
-	OSMO_ASSERT(send_count == 0);
+	do_report(0, 0);
 
 	rate_ctr_group_free(ctrg3);
 
diff --git a/tests/stats/stats_test.err b/tests/stats/stats_test.err
index daa3e5c..92d6ce1 100644
--- a/tests/stats/stats_test.err
+++ b/tests/stats/stats_test.err
@@ -31,6 +31,7 @@
   test1: item p= g=test.one i=1 n=item.a v=-1 u=ma
   test2: item p= g=test.one i=1 n=item.b v=-1 u=kb
   test1: item p= g=test.one i=1 n=item.b v=-1 u=kb
+reported: 12 counter vals, 8 stat item vals
 report (srep1 global):
   test2: counter p= g=ctr-test:one_dot i=3 n=ctr:a v=0 d=0
   test2: counter p= g=ctr-test:one_dot i=3 n=ctr:b v=0 d=0
@@ -42,6 +43,7 @@
   test2: item p= g=test.one i=2 n=item.b v=-1 u=kb
   test2: item p= g=test.one i=1 n=item.a v=-1 u=ma
   test2: item p= g=test.one i=1 n=item.b v=-1 u=kb
+reported: 6 counter vals, 4 stat item vals
 report (srep1 peer):
   test2: counter p= g=ctr-test:one_dot i=3 n=ctr:a v=0 d=0
   test2: counter p= g=ctr-test:one_dot i=3 n=ctr:b v=0 d=0
@@ -57,6 +59,7 @@
   test1: item p= g=test.one i=1 n=item.a v=-1 u=ma
   test2: item p= g=test.one i=1 n=item.b v=-1 u=kb
   test1: item p= g=test.one i=1 n=item.b v=-1 u=kb
+reported: 6 counter vals, 8 stat item vals
 report (srep1 subscriber):
   test2: counter p= g=ctr-test:one_dot i=3 n=ctr:a v=0 d=0
   test1: counter p= g=ctr-test:one_dot i=3 n=ctr:a v=0 d=0
@@ -78,6 +81,7 @@
   test1: item p= g=test.one i=1 n=item.a v=-1 u=ma
   test2: item p= g=test.one i=1 n=item.b v=-1 u=kb
   test1: item p= g=test.one i=1 n=item.b v=-1 u=kb
+reported: 12 counter vals, 8 stat item vals
 report (srep2 disabled):
   test2: close
   test1: counter p= g=ctr-test:one_dot i=3 n=ctr:a v=0 d=0
@@ -90,6 +94,7 @@
   test1: item p= g=test.one i=2 n=item.b v=-1 u=kb
   test1: item p= g=test.one i=1 n=item.a v=-1 u=ma
   test1: item p= g=test.one i=1 n=item.b v=-1 u=kb
+reported: 6 counter vals, 4 stat item vals
 report (srep2 enabled, no flush forced):
   test2: open
   test2: counter p= g=ctr-test:one_dot i=3 n=ctr:a v=0 d=0
@@ -102,23 +107,31 @@
   test2: item p= g=test.one i=2 n=item.b v=-1 u=kb
   test2: item p= g=test.one i=1 n=item.a v=-1 u=ma
   test2: item p= g=test.one i=1 n=item.b v=-1 u=kb
+reported: 6 counter vals, 4 stat item vals
 report (should be empty):
+reported: 0 counter vals, 0 stat item vals
 report (group 1, counter 1 update):
   test2: counter p= g=ctr-test:one i=1 n=ctr:a v=1 d=1
   test1: counter p= g=ctr-test:one i=1 n=ctr:a v=1 d=1
+reported: 2 counter vals, 0 stat item vals
 report (group 1, item 1 update):
   test2: item p= g=test.one i=1 n=item.a v=10 u=ma
   test1: item p= g=test.one i=1 n=item.a v=10 u=ma
+reported: 0 counter vals, 2 stat item vals
 report (group 1, item 1 update twice):
   test2: item p= g=test.one i=1 n=item.a v=10 u=ma
   test1: item p= g=test.one i=1 n=item.a v=10 u=ma
+reported: 0 counter vals, 2 stat item vals
 report (group 1, item 1 update twice, check max):
   test2: item p= g=test.one i=1 n=item.a v=20 u=ma
   test1: item p= g=test.one i=1 n=item.a v=20 u=ma
+reported: 0 counter vals, 2 stat item vals
 report (group 1, item 1 no update, send last item (!= last max), OS#5215):
   test2: item p= g=test.one i=1 n=item.a v=10 u=ma
   test1: item p= g=test.one i=1 n=item.a v=10 u=ma
+reported: 0 counter vals, 2 stat item vals
 report (group 1, item 1 no update, nothing to send):
+reported: 0 counter vals, 0 stat item vals
 report (remove statg1, ctrg1):
   test2: counter p= g=ctr-test:one_dot i=3 n=ctr:a v=0 d=0
   test1: counter p= g=ctr-test:one_dot i=3 n=ctr:a v=0 d=0
@@ -132,6 +145,7 @@
   test1: item p= g=test.one i=2 n=item.a v=-1 u=ma
   test2: item p= g=test.one i=2 n=item.b v=-1 u=kb
   test1: item p= g=test.one i=2 n=item.b v=-1 u=kb
+reported: 8 counter vals, 4 stat item vals
 report (remove srep1):
   test1: close
   test2: counter p= g=ctr-test:one_dot i=3 n=ctr:a v=0 d=0
@@ -140,12 +154,16 @@
   test2: counter p= g=ctr-test:one i=2 n=ctr:b v=0 d=0
   test2: item p= g=test.one i=2 n=item.a v=-1 u=ma
   test2: item p= g=test.one i=2 n=item.b v=-1 u=kb
+reported: 4 counter vals, 2 stat item vals
 report (remove statg2):
   test2: counter p= g=ctr-test:one_dot i=3 n=ctr:a v=0 d=0
   test2: counter p= g=ctr-test:one_dot i=3 n=ctr:b v=0 d=0
   test2: counter p= g=ctr-test:one i=2 n=ctr:a v=0 d=0
   test2: counter p= g=ctr-test:one i=2 n=ctr:b v=0 d=0
+reported: 4 counter vals, 0 stat item vals
 report (remove srep2):
   test2: close
+reported: 0 counter vals, 0 stat item vals
 report (remove ctrg2, should be empty):
+reported: 0 counter vals, 0 stat item vals
 End test: test_reporting

-- 
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/25462
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I2da003ee6ec15f1c3959efe69e01b4ee24af82bb
Gerrit-Change-Number: 25462
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210915/a2a9b78a/attachment.htm>


More information about the gerrit-log mailing list