From 355ab56a24e1b0298ff2117f9444d6b7d8f2249e Mon Sep 17 00:00:00 2001 From: Alexander Couzens Date: Sun, 26 Jul 2020 22:04:33 +0200 Subject: [PATCH] PCU_Tests_NS: allow an UNBLOCK message to arrive before ALIVE The ALIVE PDU does not have to be sent before an UNBLOCK message. Ignore UNBLOCK messages in cases a single ALIVE is expected. According to TS 48.016 v5.2.0, 7.4: "Upon successful completion of an NS-VC reset procedure, a BSS (or SGSN) shall start timer Tns-test, then [..]" The ALIVE should arive Tns-test after the reset procedure (typ. 1s-60s). Change-Id: I11d77b7477981998082967e5123b61636af2b980 --- pcu/PCU_Tests_NS.ttcn | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/pcu/PCU_Tests_NS.ttcn b/pcu/PCU_Tests_NS.ttcn index ce2560f89..f953be449 100644 --- a/pcu/PCU_Tests_NS.ttcn +++ b/pcu/PCU_Tests_NS.ttcn @@ -109,9 +109,11 @@ testcase TC_ns_alive() runs on RAW_Test_CT { /* Expect inbound NS-RESET procedure */ as_rx_ns_reset_ack(oneshot := true); + alt { /* wait for one ALIVE cycle, then ACK any further ALIVE in the background */ - as_rx_alive_tx_ack(oneshot := true); - setverdict(pass); + [] NSCP[0].receive(t_NS_RecvFrom(t_NS_ALIVE)) { setverdict(pass); }; + [] NSCP[0].receive(t_NS_RecvFrom(t_NS_UNBLOCK)) { repeat; } + } } /* Test for NS-RESET after NS-ALIVE timeout */ @@ -123,12 +125,16 @@ testcase TC_ns_alive_timeout_reset() runs on RAW_Test_CT { as_rx_ns_reset_ack(oneshot := true); /* wait for at least one NS-ALIVE */ - NSCP[0].receive(t_NS_RecvFrom(t_NS_ALIVE)); + alt { + [] as_rx_alive_tx_ack(oneshot := true) { }; + [] NSCP[0].receive(t_NS_RecvFrom(t_NS_UNBLOCK)) { repeat; } + } /* wait for NS-RESET to re-appear, ignoring any NS-ALIVE until then */ alt { [] as_rx_ns_reset_ack(oneshot := true) { setverdict(pass); } [] NSCP[0].receive(t_NS_RecvFrom(t_NS_ALIVE)) { repeat; } + [] NSCP[0].receive(t_NS_RecvFrom(t_NS_UNBLOCK)) { repeat; } } } @@ -140,8 +146,7 @@ testcase TC_ns_unblock() runs on RAW_Test_CT { /* Expect inbound NS-RESET procedure */ as_rx_ns_reset_ack(oneshot := true); - /* wait for one ALIVE cycle, then ACK any further ALIVE in the background */ - as_rx_alive_tx_ack(oneshot := true); + /* keep it alive */ activate(as_rx_alive_tx_ack()); as_rx_ns_unblock_ack(oneshot := true); @@ -156,8 +161,7 @@ testcase TC_ns_unblock_retrans() runs on RAW_Test_CT { /* Expect inbound NS-RESET procedure */ as_rx_ns_reset_ack(oneshot := true); - /* wait for one ALIVE cycle, then ACK any further ALIVE in the background */ - as_rx_alive_tx_ack(oneshot := true); + /* keep it alive */ activate(as_rx_alive_tx_ack()); /* wait for first NS-UNBLOCK, don't respond */ @@ -176,8 +180,7 @@ testcase TC_ns_full_bringup() runs on RAW_Test_CT { /* Expect inbound NS-RESET procedure */ as_rx_ns_reset_ack(oneshot := true); - /* wait for one ALIVE cycle, then ACK any further ALIVE in the background */ - as_rx_alive_tx_ack(oneshot := true); + /* keep it alive */ activate(as_rx_alive_tx_ack()); as_rx_ns_unblock_ack(oneshot := true); @@ -203,8 +206,7 @@ testcase TC_ns_so_block() runs on RAW_Test_CT { /* Expect inbound NS-RESET procedure */ as_rx_ns_reset_ack(oneshot := true); - /* wait for one ALIVE cycle, then ACK any further ALIVE in the background */ - as_rx_alive_tx_ack(oneshot := true); + /* keep it alive */ activate(as_rx_alive_tx_ack()); as_rx_ns_unblock_ack(oneshot := true);