pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/34718?usp=email )
Change subject: hss: Test Operator-Determined-Barring feature ......................................................................
hss: Test Operator-Determined-Barring feature
Related: SYS#6588 Change-Id: I8deea9e284447f8991bdeced982c14fae2f211c5 --- M hss/HSS_Tests.ttcn M library/DIAMETER_Templates.ttcn 2 files changed, 72 insertions(+), 16 deletions(-)
Approvals: Jenkins Builder: Verified osmith: Looks good to me, but someone else must approve laforge: Looks good to me, approved
diff --git a/hss/HSS_Tests.ttcn b/hss/HSS_Tests.ttcn index 88a82a4..bd493c4 100644 --- a/hss/HSS_Tests.ttcn +++ b/hss/HSS_Tests.ttcn @@ -22,7 +22,8 @@ charstring mp_diam_dest_host := "hss.localdomain"; SubscriberConfigs subscribers := { /* Existing subscriber, ULA returns SERVICE_GRANTED */ - '001010000000000'H + '001010000000000'H, + '001010000000001'H }; }
@@ -183,9 +184,8 @@ }
/* ULR + ULA against HSS */ -private function f_dia_ulr_ula() runs on Cli_Session_CT { +private function f_dia_ulr_ula(template (present) AVP_list ula_sub_data) runs on Cli_Session_CT { var octetstring sess_id := char2oct("foobar"); - var template (present) AVP_list sub_data; var PDU_DIAMETER rx_dia; var UINT32 hbh_id := int2oct(g_pars.s6a_next_hbh_id, 4); var UINT32 ete_id := int2oct(g_pars.s6a_next_ete_id, 4); @@ -202,19 +202,8 @@ g_pars.s6a_next_hbh_id := g_pars.s6a_next_hbh_id + 1; g_pars.s6a_next_ete_id := g_pars.s6a_next_ete_id + 1;
- sub_data := superset( - tr_AVP_3GPP_SubscriberStatus(SERVICE_GRANTED), - tr_AVP_3GPP_SubscrRauTauTmr(?), - tr_AVP_3GPP_AMBR(?, ?), - tr_AVP_3GPP_ApnConfigProfile(superset( - tr_AVP_3GPP_ContextId(?), - tr_AVP_3GPP_AllApnConfigsIncl, - tr_AVP_3GPP_ApnConfig(?, ?, ?) - )) - ); - alt { - [] S6a.receive(tr_DIA_ULA(sub_data, sess_id, ?, ?, hbh_id, ete_id)) -> value rx_dia { + [] S6a.receive(tr_DIA_ULA(ula_sub_data, sess_id, ?, ?, hbh_id, ete_id)) -> value rx_dia { setverdict(pass); } [] S6a.receive(PDU_DIAMETER:?) -> value rx_dia { @@ -226,7 +215,18 @@
/* create a session, expect it to succeed */ private function f_TC_ulr_ula() runs on Cli_Session_CT { - f_dia_ulr_ula(); + var template (present) AVP_list sub_data := superset( + tr_AVP_3GPP_SubscriberStatus(SERVICE_GRANTED), + tr_AVP_3GPP_SubscrRauTauTmr(?), + tr_AVP_3GPP_AMBR(?, ?), + tr_AVP_3GPP_ApnConfigProfile(superset( + tr_AVP_3GPP_ContextId(?), + tr_AVP_3GPP_AllApnConfigsIncl, + tr_AVP_3GPP_ApnConfig(?, ?, ?) + )) + ); + + f_dia_ulr_ula(sub_data); setverdict(pass); } testcase TC_ulr_ula() runs on MTC_CT { @@ -237,9 +237,37 @@ vc_conn.done; }
+/* Same as TC_ulr_ula, but done on a subscriber configured with +Subscriber-Status=1 (OPERATOR_DETERMINED_BARRING) and +Operator-Determined-Barring=7. */ +private function f_TC_ulr_ula_subscr_op_det_barring_7() runs on Cli_Session_CT { + var template (present) AVP_list sub_data := superset( + tr_AVP_3GPP_SubscriberStatus(OPERATOR_DETERMINED_BARRING), + tr_AVP_3GPP_OperatorDeterminedBarring(7), + tr_AVP_3GPP_SubscrRauTauTmr(?), + tr_AVP_3GPP_AMBR(?, ?), + tr_AVP_3GPP_ApnConfigProfile(superset( + tr_AVP_3GPP_ContextId(?), + tr_AVP_3GPP_AllApnConfigsIncl, + tr_AVP_3GPP_ApnConfig(?, ?, ?) + )) + ); + + f_dia_ulr_ula(sub_data); + setverdict(pass); +} +testcase TC_ulr_ula_subscr_op_det_barring_7() runs on MTC_CT { + var Cli_Session_CT vc_conn; + var SessionPars pars := valueof(t_SessionPars(subscribers[1])); + f_init(); + vc_conn := f_start_handler(refers(f_TC_ulr_ula_subscr_op_det_barring_7), pars); + vc_conn.done; +} +
control { execute( TC_ulr_ula() ); + execute( TC_ulr_ula_subscr_op_det_barring_7() ); }
diff --git a/library/DIAMETER_Templates.ttcn b/library/DIAMETER_Templates.ttcn index 5bbb2c3..4dd686a 100644 --- a/library/DIAMETER_Templates.ttcn +++ b/library/DIAMETER_Templates.ttcn @@ -887,6 +887,24 @@ } }
+/* Ts 29.272 7.3.30 Operator-Determined-Barring */ +template (present) GenericAVP tr_AVP_3GPP_OperatorDeterminedBarring(template (present) uint32_t val := ?) := { + avp := { + avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Operator_Determined_Barring), + avp_data := { + avp_AAA_3GPP_Operator_Determined_Barring := int2oct_tmpl(val, 4) + } + } +} +template (value) GenericAVP ts_AVP_3GPP_OperatorDeterminedBarring(uint32_t val) := { + avp := { + avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Operator_Determined_Barring), + avp_data := { + avp_AAA_3GPP_Operator_Determined_Barring := int2oct(val, 4) + } + } +} + template (present) GenericAVP tr_AVP_3GPP_SubscrRauTauTmr(template (present) uint32_t tmr := ?) := { avp := { avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Subscribed_Periodic_RAU_TAU_Timer),