bsc: properly test assignment counters

Verify the BTS level assignment:attempted_speech / _sign as well as
assignment:completed_speech / _sign counters, in four selected
assignment tests (fr, hr, amr_f, amr_h).

Shows a bug where we counted a speech assignment as
assignment:completed_sign.

Related: SYS#4878
Depends: Ie9fcd1e86f27ecb2f11e2e8813faac365cb470b8 (osmo-bsc)
Change-Id: Icb1386ec2ccd70eb3c026301b9b08ad7177278f7
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 0c03bde..22df0cb 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -4153,16 +4153,57 @@
 	f_establish_fully(ass_cmd, exp_fail);
 }
 
+const CounterNameVals counternames_bsc_bts_assignment := {
+	{ "assignment:attempted", 0 },
+	{ "assignment:completed", 0 },
+	{ "assignment:stopped", 0 },
+	{ "assignment:no_channel", 0 },
+	{ "assignment:timeout", 0 },
+	{ "assignment:failed", 0 },
+	{ "assignment:error", 0 }
+};
+
+const CounterNameVals counternames_bts_assignment := {
+	{ "assignment:attempted_sign", 0 },
+	{ "assignment:attempted_speech", 0 },
+	{ "assignment:completed_sign", 0 },
+	{ "assignment:completed_speech", 0 },
+	{ "assignment:stopped_sign", 0 },
+	{ "assignment:stopped_speech", 0 },
+	{ "assignment:no_channel_sign", 0 },
+	{ "assignment:no_channel_speech", 0 },
+	{ "assignment:timeout_sign", 0 },
+	{ "assignment:timeout_speech", 0 },
+	{ "assignment:failed_sign", 0 },
+	{ "assignment:failed_speech", 0 },
+	{ "assignment:error_sign", 0 },
+	{ "assignment:error_speech", 0 }
+};
+
+function f_ctrs_bsc_and_bts_assignment_init(integer bts_count := NUM_BTS) runs on test_CT {
+	var CounterNameVals bts_names := counternames_bsc_bts_assignment & counternames_bts_assignment;
+	f_ctrs_bts_init(bts_count, bts_names);
+	f_ctrs_bsc_init(counternames_bsc_bts_assignment);
+}
+
 testcase TC_assignment_codec_fr() runs on test_CT {
 	var TestHdlrParams pars := f_gen_test_hdlr_pars();
 	var MSC_ConnHdlr vc_conn;
 
 	f_init(1, true);
 	f_sleep(1.0);
+	f_ctrs_bsc_and_bts_assignment_init(1);
 
 	pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
 	vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted", 1);
+	f_ctrs_bts_add(0, "assignment:attempted_speech", 1);
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed", 1);
+	f_ctrs_bts_add(0, "assignment:completed_speech", 1);
+	f_ctrs_bts_verify();
+
 	f_shutdown_helper();
 }
 
@@ -4172,10 +4213,18 @@
 
 	f_init(1, true);
 	f_sleep(1.0);
+	f_ctrs_bsc_and_bts_assignment_init(1);
 
 	pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecHR}));
 	vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted", 1);
+	f_ctrs_bts_add(0, "assignment:attempted_speech", 1);
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed", 1);
+	f_ctrs_bts_add(0, "assignment:completed_speech", 1);
+	f_ctrs_bts_verify();
+
 	f_shutdown_helper();
 }
 
@@ -4258,10 +4307,17 @@
 	f_init(1, true);
 	f_sleep(1.0);
 	f_vty_amr_start_mode_set(true, "1");
+	f_ctrs_bsc_and_bts_assignment_init(1);
 
 	vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
 	vc_conn.done;
 
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted", 1);
+	f_ctrs_bts_add(0, "assignment:attempted_speech", 1);
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed", 1);
+	f_ctrs_bts_add(0, "assignment:completed_speech", 1);
+	f_ctrs_bts_verify();
+
 	f_vty_amr_start_mode_restore(true);
 	f_shutdown_helper();
 }
@@ -4286,10 +4342,17 @@
 	f_init(1, true);
 	f_sleep(1.0);
 	f_vty_amr_start_mode_set(false, "1");
+	f_ctrs_bsc_and_bts_assignment_init(1);
 
 	vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
 	vc_conn.done;
 
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted", 1);
+	f_ctrs_bts_add(0, "assignment:attempted_speech", 1);
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed", 1);
+	f_ctrs_bts_add(0, "assignment:completed_speech", 1);
+	f_ctrs_bts_verify();
+
 	f_vty_amr_start_mode_restore(false);
 	f_shutdown_helper();
 }