pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28173 )
Change subject: pgw: Validate charging reported values ......................................................................
pgw: Validate charging reported values
Change-Id: I5024abc672bf92d41027c4c78d2925d0537bb470 --- M pgw/PGW_Tests.ttcn 1 file changed, 18 insertions(+), 9 deletions(-)
Approvals: Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve pespin: Looks good to me, approved
diff --git a/pgw/PGW_Tests.ttcn b/pgw/PGW_Tests.ttcn index 6df4ca7..d8ee60d 100644 --- a/pgw/PGW_Tests.ttcn +++ b/pgw/PGW_Tests.ttcn @@ -111,6 +111,9 @@ var OCT4 g_ip4_addr; var OCT16 g_ip6_addr; var integer g_ip6_plen; + + /* Store last received Gy message */ + var PDU_DIAMETER g_rx_gy; }
/* configuration data for a given Session */ @@ -487,31 +490,31 @@ return tpl; }
-private altstep as_DIA_Gy_CCR(DCC_NONE_CC_Request_Type req_type) runs on PGW_Session_CT { - var PDU_DIAMETER rx_dia; - [] Gy.receive(f_tr_DIA_Gy_CCR(req_type := req_type)) -> value rx_dia { +private altstep as_DIA_Gy_CCR(DCC_NONE_CC_Request_Type req_type) +runs on PGW_Session_CT { + [] Gy.receive(f_tr_DIA_Gy_CCR(req_type := req_type)) -> value g_rx_gy { var template (value) PDU_DIAMETER tx_dia; var template (omit) AVP avp; var octetstring sess_id; var AVP_Unsigned32 req_num;
- avp := f_DIAMETER_get_avp(rx_dia, c_AVP_Code_BASE_NONE_Session_Id); + avp := f_DIAMETER_get_avp(g_rx_gy, c_AVP_Code_BASE_NONE_Session_Id); sess_id := valueof(avp.avp_data.avp_BASE_NONE_Session_Id);
- avp := f_DIAMETER_get_avp(rx_dia, c_AVP_Code_DCC_NONE_CC_Request_Number); + avp := f_DIAMETER_get_avp(g_rx_gy, c_AVP_Code_DCC_NONE_CC_Request_Number); req_num := valueof(avp.avp_data.avp_DCC_NONE_CC_Request_Number); if (g_pars.gy_validity_time > 0) { - tx_dia := ts_DIA_Gy_CCA_ValidityTime(rx_dia.hop_by_hop_id, rx_dia.end_to_end_id, sess_id, + tx_dia := ts_DIA_Gy_CCA_ValidityTime(g_rx_gy.hop_by_hop_id, g_rx_gy.end_to_end_id, sess_id, req_type, req_num, g_pars.gy_validity_time); } else { - tx_dia := ts_DIA_Gy_CCA(rx_dia.hop_by_hop_id, rx_dia.end_to_end_id, sess_id, + tx_dia := ts_DIA_Gy_CCA(g_rx_gy.hop_by_hop_id, g_rx_gy.end_to_end_id, sess_id, req_type, req_num); } Gy.send(tx_dia); } - [] Gy.receive(PDU_DIAMETER:?) -> value rx_dia { + [] Gy.receive(PDU_DIAMETER:?) -> value g_rx_gy { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, - log2str("Received unexpected DIAMETER Gy", rx_dia)); + log2str("Received unexpected DIAMETER Gy", g_rx_gy)); } }
@@ -858,14 +861,20 @@
/* We should receive an update even if no traffic is sent: */ as_DIA_Gy_CCR(UPDATE_REQUEST); + f_validate_gy_cc_report(g_rx_gy, VALIDITY_TIME, (3..4), 0, 0);
d := activate(as_DIA_Gy_CCR(UPDATE_REQUEST)); f_ping4(mp_ping_hostname); /* Let the CCA reach the GGSN */ f_sleep(0.5); deactivate(d); + f_validate_gy_cc_report(g_rx_gy, VALIDITY_TIME, (3..4), (28..1000), (28..1000)); + + as_DIA_Gy_CCR(UPDATE_REQUEST); + f_validate_gy_cc_report(g_rx_gy, VALIDITY_TIME, (3..4), ?, ?);
f_delete_session(omit, g_teic, '10'O); + f_validate_gy_cc_report(g_rx_gy, FINAL, (0..1), 0, 0); setverdict(pass); } testcase TC_gy_charging_cc_time() runs on PGW_Test_CT {