Harald Welte | f7b7407 | 2019-02-20 20:48:50 +0100 | [diff] [blame^] | 1 | module PCU_Tests_RAW_SNS { |
| 2 | |
| 3 | import from Osmocom_Types all; |
| 4 | import from PCU_Tests all; |
| 5 | import from PCU_Tests_RAW all; |
| 6 | |
| 7 | /********************************************************************************** |
| 8 | * Modern Gb/IP bring-up test cases using IP Sub-Network Service (SNS) |
| 9 | **********************************************************************************/ |
| 10 | |
| 11 | /* PCU-originated SNS-SIZE: successful case */ |
| 12 | testcase TC_sns_po_size_success() runs on RAW_NS_CT { |
| 13 | f_init_ns_codec(); |
| 14 | f_init_pcuif(); |
| 15 | f_incoming_sns_size(); |
| 16 | f_sleep(1.0); |
| 17 | setverdict(pass); |
| 18 | } |
| 19 | |
| 20 | /* PCU-originated SNS-SIZE: NACK from our side */ |
| 21 | testcase TC_sns_po_size_nack() runs on RAW_NS_CT { |
| 22 | f_init_ns_codec(); |
| 23 | f_init_pcuif(); |
| 24 | f_incoming_sns_size(NS_CAUSE_PROTOCOL_ERROR_UNSPEIFIED); |
| 25 | /* FIXME: ensure we don't get a SNS-CONFIG */ |
| 26 | /* FIXME: ensure we get re-transmitted SNS-SIZE attempts */ |
| 27 | f_sleep(10.0); |
| 28 | setverdict(pass); |
| 29 | } |
| 30 | |
| 31 | /* PCU-originated SNS-CONFIG: successful case */ |
| 32 | testcase TC_sns_po_config_success() runs on RAW_NS_CT { |
| 33 | f_init_ns_codec(); |
| 34 | f_init_pcuif(); |
| 35 | f_incoming_sns_size(); |
| 36 | f_incoming_sns_config(); |
| 37 | f_sleep(1.0); |
| 38 | setverdict(pass); |
| 39 | } |
| 40 | |
| 41 | /* PCU-originated SNS-CONFIG: successful case */ |
| 42 | testcase TC_sns_po_config_nack() runs on RAW_NS_CT { |
| 43 | f_init_ns_codec(); |
| 44 | f_init_pcuif(); |
| 45 | f_incoming_sns_size(); |
| 46 | f_incoming_sns_config(NS_CAUSE_PROTOCOL_ERROR_UNSPEIFIED); |
| 47 | /* FIXME: ensure we get re-transmitted SNS-CONFIG attempts */ |
| 48 | f_sleep(10.0); |
| 49 | setverdict(pass); |
| 50 | } |
| 51 | |
| 52 | |
| 53 | /* SGSN-originated SNS-SIZE: successful case */ |
| 54 | testcase TC_sns_so_config_success() runs on RAW_NS_CT { |
| 55 | f_init_ns_codec(); |
| 56 | f_init_pcuif(); |
| 57 | f_incoming_sns_size(); |
| 58 | f_incoming_sns_config(); |
| 59 | f_outgoing_sns_config(); |
| 60 | |
| 61 | /* wait for one ALIVE cycle, then ACK any further ALIVE in the background */ |
| 62 | as_rx_alive_tx_ack(oneshot := true); |
| 63 | activate(as_rx_alive_tx_ack()); |
| 64 | |
| 65 | f_outgoing_ns_alive(); |
| 66 | |
| 67 | /* Expect BVC-RESET for signaling (0) and ptp BVCI */ |
| 68 | as_rx_bvc_reset_tx_ack(0, oneshot := true); |
| 69 | as_rx_bvc_reset_tx_ack(mp_gb_cfg.bvci, oneshot := true); |
| 70 | as_rx_bvc_unblock_tx_ack(mp_gb_cfg.bvci, oneshot := true); |
| 71 | |
| 72 | /* wait for one FLOW-CONTROL BVC and then ACK any further in the future */ |
| 73 | as_rx_bvc_fc_tx_ack(mp_gb_cfg.bvci, oneshot := true); |
| 74 | activate(as_rx_bvc_fc_tx_ack(mp_gb_cfg.bvci)); |
| 75 | setverdict(pass); |
| 76 | } |
| 77 | |
| 78 | control { |
| 79 | execute( TC_sns_po_size_success() ); |
| 80 | execute( TC_sns_po_size_nack() ); |
| 81 | execute( TC_sns_po_config_success() ); |
| 82 | execute( TC_sns_po_config_nack() ); |
| 83 | execute( TC_sns_so_config_success() ); |
| 84 | } |
| 85 | |
| 86 | } |