diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2022-03-30 02:15:41 +0300 |
---|---|---|
committer | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2022-03-30 03:48:26 +0300 |
commit | c2696fa1082f85b71528627171ab548e5ac96c63 (patch) | |
tree | 5eed65acdaa253172d3d027e97550f77f2676d6b | |
parent | 562d28e305446f648cd58bcf87c0a3c2c9d3853d (diff) |
BSC_Tests_CBSP: add a new testcase TC_cbsp_write_rep_period_num
Change-Id: I169c482ea5de040df63db4c605ac9cae19f8d28f
Related: SYS#5905
-rw-r--r-- | bsc/BSC_Tests_CBSP.ttcn | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/bsc/BSC_Tests_CBSP.ttcn b/bsc/BSC_Tests_CBSP.ttcn index 25f00d84..0d8fb386 100644 --- a/bsc/BSC_Tests_CBSP.ttcn +++ b/bsc/BSC_Tests_CBSP.ttcn @@ -696,6 +696,61 @@ testcase TC_cbsp_write_then_replace() runs on cbsp_test_CT { setverdict(pass); } +/* Verify handling of the Repetition Period and the Number of Broadcasts */ +testcase TC_cbsp_write_rep_period_num() runs on cbsp_test_CT { + var CBSP_IE page := f_gen_page(); + const integer rep_period := 2; /* units of 1.883s */ + const integer rep_number := 5; + var integer msg_count := 0; + var float last_time := 0.0; + timer T; + + g_pars := valueof(ts_CBSP_Pars_default(false, 9001, 9501)); + f_init(guard_timeout := 60.0); + + f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, + cell_list := ts_BSSMAP_CIL_LAC_CI({bssmap_lac_ci(mp_cgi_bts0)}), + rep_period := rep_period, num_bcast_req := rep_number, + content := { page }, success_list := ?, fail_list := omit); + + /* Count SMSCB messages during N=rep_number+2 repetition periods */ + T.start(int2float(rep_period * (rep_number + 2)) * 1.883); + alt { + [] IPA_RSL[0].receive(tr_ASP_RSL_UD(f_page2rsl(page, g_cbsp_msg_id, g_cbsp_ser_no))) { + var float exp_period := int2float(rep_period) * 1.883; + var float calc_period := T.read - last_time; + + log("Rx SMSCB message: count := ", msg_count + 1, ", ", + "elapsed := ", T.read, "s, diff := ", calc_period, "s"); + + if (msg_count > 0) { + /* Check the actual repetition period (+/- 0.5s) */ + var template float tr_exp_period := (exp_period - 0.5 .. exp_period + 0.5); + if (not match(calc_period, tr_exp_period)) { + setverdict(fail, "Repetition period mismatch: ", + "calculated := ", calc_period, "s vs ", + "expected := ", tr_exp_period, "s"); + } + } + + msg_count := msg_count + 1; + last_time := T.read; + repeat; + } + [] T.timeout { + log("Received ", msg_count, " messages during ", last_time, "s"); + } + } + + if (msg_count != rep_number) { + setverdict(fail, "Received ", msg_count, " messages, ", + "while we expected ", rep_number); + } + + f_sleep(1.0); + setverdict(pass); +} + /* Replace a message that doesn't exist: failure */ testcase TC_cbsp_replace_nonexist() runs on cbsp_test_CT { var CBSP_IEs pages := {f_gen_page()}; @@ -945,6 +1000,7 @@ control { execute( TC_cbsp_write_lac() ); execute( TC_cbsp_write_then_replace() ); + execute( TC_cbsp_write_rep_period_num() ); execute( TC_cbsp_replace_nonexist() ); execute( TC_cbsp_write_too_many() ); execute( TC_cbsp_kill_nonexist() ); |