pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43961?usp=email )
Change subject: smf: Clean up SBI paths ......................................................................
smf: Clean up SBI paths
* Move constant and templates related to SBI paths to *_Templates files, so they can be reused by other testsuites. * Rename constants with prefix c_. * Fix naming of HTTP2_Server_Emulation_CT instance.
Change-Id: Idf0ed2e95937fe9a331be577d01cee8d309eab01 --- M library/TS29502_Nsmf_PDUSession_Templates.ttcn M library/TS29503_Nudm_SDM_Templates.ttcn M library/TS29503_Nudm_UECM_Templates.ttcn M library/TS29512_Npcf_SMPolicyControl_Templates.ttcn M library/TS29518_Namf_Communication_Templates.ttcn M smf/SMF_Session_CT_5G.ttcn M smf/SMF_Tests.ttcn 7 files changed, 115 insertions(+), 93 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/61/43961/1
diff --git a/library/TS29502_Nsmf_PDUSession_Templates.ttcn b/library/TS29502_Nsmf_PDUSession_Templates.ttcn index 208c404..b19ab71 100644 --- a/library/TS29502_Nsmf_PDUSession_Templates.ttcn +++ b/library/TS29502_Nsmf_PDUSession_Templates.ttcn @@ -2,6 +2,23 @@
import from TS29502_Nsmf_PDUSession all;
+const charstring c_Nsmf_PDUSession_path_api_prefix := "/nsmf-pdusession/v1" +const charstring c_Nsmf_PDUSession_path_sm_contexts := c_Nsmf_PDUSession_path_api_prefix & "/sm-contexts"; + +/* 6.1.3.2 Resource: SM contexts collection */ +template (value) charstring +ts_Nsmf_PDUSession_path_sm_contexts(template (value) charstring smContextRef) +:= c_Nsmf_PDUSession_path_sm_contexts & "/" & valueof(smContextRef); + +/* 6.1.3.3 Resource: Individual SM context */ +template (value) charstring +ts_Nsmf_PDUSession_path_sm_context_modify(template (value) charstring smContextRef) +:= c_Nsmf_PDUSession_path_sm_contexts & "/" & valueof(smContextRef) & "/modify"; + +template (value) charstring +ts_Nsmf_PDUSession_path_sm_context_release(template (value) charstring smContextRef) +:= c_Nsmf_PDUSession_path_sm_contexts & "/" & valueof(smContextRef) & "/release"; + type TS29502_Nsmf_PDUSession.SmContextCreateData.additionalHsmfSetIdList AdditionalHsmfSetIdList; type TS29502_Nsmf_PDUSession.SmContextCreateData.additionalSmfSetIdList AdditionalSmfSetIdList; type TS29502_Nsmf_PDUSession.SmContextCreateData.nrfOauth2Required NrfOauth2Required; diff --git a/library/TS29503_Nudm_SDM_Templates.ttcn b/library/TS29503_Nudm_SDM_Templates.ttcn index 43c85e0..7fab624 100644 --- a/library/TS29503_Nudm_SDM_Templates.ttcn +++ b/library/TS29503_Nudm_SDM_Templates.ttcn @@ -2,6 +2,25 @@
import from TS29503_Nudm_SDM all;
+const charstring c_Nudm_SDM_path_api_prefix := "/nudm-sdm/v2"; + +/* 6.1.3.3 Resource: SdmSubscriptions (Collection) */ +template (value) charstring +ts_Nudm_SDM_path_sdm_subscriptions(template (value) charstring imsi) +:= c_Nudm_SDM_path_api_prefix & "/imsi-" & valueof(imsi) & "/sdm-subscriptions"; + +/* 6.1.3.4 Resource: Individual subscription (Document) */ +template (present) charstring +tr_Nudm_SDM_path_individual_subscription(template (present) charstring imsi := pattern "\d+", + template (present) charstring subscr_id := pattern "\d+") +:= pattern c_Nudm_SDM_path_api_prefix & "/imsi-" & imsi & "/sdm-subscriptions/" & subscr_id; + +template (value) charstring +ts_Nudm_SDM_path_individual_subscription(template (value) charstring imsi, + template (value) charstring subscr_id) +:= valueof(ts_Nudm_SDM_path_sdm_subscriptions(imsi)) & "/" & valueof(subscr_id); + + template (value) PduSessionType1 ts_PduSessionType1(template (value) PduSessionType1_enum enum_val) := { enum_val := enum_val diff --git a/library/TS29503_Nudm_UECM_Templates.ttcn b/library/TS29503_Nudm_UECM_Templates.ttcn index 9636c82..b4f1074 100644 --- a/library/TS29503_Nudm_UECM_Templates.ttcn +++ b/library/TS29503_Nudm_UECM_Templates.ttcn @@ -2,6 +2,20 @@
import from TS29503_Nudm_UECM all;
+const charstring c_Nudm_UECM_path_api_prefix := "/nudm-uecm/v1"; + +/* 6.2.3.5 Resource: IndividualSmfRegistration */ +template (present) charstring +tr_Nudm_UECM_path_individual_smf_registration(template (present) charstring imsi := pattern "\d+", + template (present) charstring smf_reg := pattern "\d+") +:= pattern c_Nudm_UECM_path_api_prefix & "/imsi-" & imsi & "/registrations/smf-registrations/" & smf_reg; + +template (value) charstring +ts_Nudm_UECM_path_individual_smf_registration(template (value) charstring imsi, + template (value) charstring smf_reg) +:= c_Nudm_UECM_path_api_prefix & "/imsi-" & valueof(imsi) & "/registrations/smf-registrations/" & valueof(smf_reg); + + template (present) SmfRegistration tr_SmfRegistration(template (present) NfInstanceId smfInstanceId := ?, template NfSetId smfSetId := *, diff --git a/library/TS29512_Npcf_SMPolicyControl_Templates.ttcn b/library/TS29512_Npcf_SMPolicyControl_Templates.ttcn index 194f60d..8c16e72 100644 --- a/library/TS29512_Npcf_SMPolicyControl_Templates.ttcn +++ b/library/TS29512_Npcf_SMPolicyControl_Templates.ttcn @@ -2,6 +2,21 @@
import from TS29512_Npcf_SMPolicyControl all;
+const charstring c_Npcf_SMPolicyControl_path_api_prefix := "/npcf-smpolicycontrol/v1"; + +/* 5.3.2 Resource: SM Policies */ +const charstring c_Npcf_SMPolicyControl_path_sm_policies := c_Npcf_SMPolicyControl_path_api_prefix & "/sm-policies"; + +/* 5.3.3 Resource: Individual SM Policy */ +template (present) charstring +tr_Npcf_SMPolicyControl_path_individual_sm_policy_delete(template (present) charstring sm_policy_id := pattern "?+") +:= pattern c_Npcf_SMPolicyControl_path_sm_policies & "/" & sm_policy_id & "/delete"; + +template (value) charstring +ts_Npcf_SMPolicyControl_path_individual_sm_policy(template (value) charstring sm_policy_id) +:= c_Npcf_SMPolicyControl_path_sm_policies & "/" & valueof(sm_policy_id); + + template (present) SmPolicyContextData1 tr_SmPolicyContextData1(template AccNetChId1 accNetChId := *, template AccNetChargingAddress1 chargEntityAddr := *, diff --git a/library/TS29518_Namf_Communication_Templates.ttcn b/library/TS29518_Namf_Communication_Templates.ttcn index acba933..f151757 100644 --- a/library/TS29518_Namf_Communication_Templates.ttcn +++ b/library/TS29518_Namf_Communication_Templates.ttcn @@ -2,6 +2,26 @@
import from TS29518_Namf_Communication all;
+const charstring c_Namf_Communication_path_api_prefix := "/namf-comm/v1"; +const charstring c_Namf_Communication_path_ue_contexts := c_Namf_Communication_path_api_prefix & "/ue-contexts"; + +template (value) charstring +ts_Namf_Communication_path_ue_contexts(template (value) charstring imsi) +:= c_Namf_Communication_path_ue_contexts & "/imsi-" & valueof(imsi); + +template (value) charstring +ts_Namf_Communication_path_ue_contexts_sm_context_status(template (value) charstring imsi) +:= valueof(ts_Namf_Communication_path_ue_contexts(imsi)) & "/sm-context-status"; + +template (value) charstring +ts_Namf_Communication_path_ue_contexts_sm_context_status_id(template (value) charstring imsi, + template (value) charstring id) +:= valueof(ts_Namf_Communication_path_ue_contexts_sm_context_status(imsi)) & "/" & valueof(id); + +template (value) charstring +ts_Namf_Communication_path_ue_contexts_n1_n2_messages(template (value) charstring imsi) +:= valueof(ts_Namf_Communication_path_ue_contexts(imsi)) & "/n1-n2-messages"; +
template (present) N1N2MessageTransferReqData tr_N1N2MessageTransferReqData(template (omit) N1MessageContainer n1MessageContainer := omit, diff --git a/smf/SMF_Session_CT_5G.ttcn b/smf/SMF_Session_CT_5G.ttcn index 5343dfd..03d172c 100644 --- a/smf/SMF_Session_CT_5G.ttcn +++ b/smf/SMF_Session_CT_5G.ttcn @@ -72,31 +72,19 @@ /******************************************** * SCP /*******************************************/ -const charstring SCP_uri_hostport := mp_scp_local_ip & ":" & int2str(mp_scp_local_port); -const charstring SCP_uri_prefix := "http://" & SCP_uri_hostport; +const charstring c_SCP_uri_hostport := mp_scp_local_ip & ":" & int2str(mp_scp_local_port); +const charstring c_SCP_uri_prefix := "http://" & c_SCP_uri_hostport;
/************************************************************ * N11 Nsmf (SBI): Requests towards IUT SMFs, 3GPP TS 29.502 ************************************************************/ - -const charstring Nsmf_uri_hostport := mp_smf_hostname & ":" & int2str(mp_smf_sbi_port); -const charstring Nsmf_uri_prefix := "http://" & Nsmf_uri_hostport; -const charstring Nsmf_PDUSession_path_api_prefix := "/nsmf-pdusession/v1" -const charstring Nsmf_PDUSession_path_sm_contexts := Nsmf_PDUSession_path_api_prefix & "/sm-contexts"; - -/* 6.1.3.2 Resource: SM contexts collection */ -template (value) charstring ts_Nsmf_PDUSession_path_sm_contexts(template (value) charstring smContextRef) := - Nsmf_PDUSession_path_sm_contexts & "/" & valueof(smContextRef); +const charstring c_Nsmf_uri_hostport := mp_smf_hostname & ":" & int2str(mp_smf_sbi_port); +const charstring c_Nsmf_uri_prefix := "http://" & c_Nsmf_uri_hostport;
/* 6.1.3.3 Resource: Individual SM context */ -template (present) charstring tr_Nsmf_PDUSession_uri_sm_contexts(template charstring smContextRef := pattern "\d+") := - pattern Nsmf_uri_prefix & Nsmf_PDUSession_path_sm_contexts & "/" & smContextRef; - -template (value) charstring ts_Nsmf_PDUSession_path_sm_context_modify(template (value) charstring smContextRef) := - Nsmf_PDUSession_path_sm_contexts & "/" & valueof(smContextRef) & "/modify"; - -template (value) charstring ts_Nsmf_PDUSession_path_sm_context_release(template (value) charstring smContextRef) := - Nsmf_PDUSession_path_sm_contexts & "/" & valueof(smContextRef) & "/release"; +template (present) charstring +tr_Nsmf_PDUSession_uri_sm_contexts(template charstring smContextRef := pattern "\d+") +:= pattern c_Nsmf_uri_prefix & c_Nsmf_PDUSession_path_sm_contexts & "/" & smContextRef;
function f_n11_init() runs on SMF_Session_CT { f_http2_adapter_init(); @@ -162,8 +150,8 @@ hb := { pseudo_headers := ts_HTTP2_pseudo_headers_Req(method := "POST", scheme := "http", - authority := Nsmf_uri_hostport, - path := Nsmf_PDUSession_path_sm_contexts), + authority := c_Nsmf_uri_hostport, + path := c_Nsmf_PDUSession_path_sm_contexts), headers := { ts_HTTP2_Hdr_content_type_multipart(http2_boundary), ts_HTTP2_Hdr_accept("application/json,application/vnd.3gpp.ngap,application/problem+json"), @@ -217,7 +205,7 @@ [] as_http2_adapter_receive(http2_rx, http2_exp_rx, idx := http2_tx.conn_id) { /* Store obtained smContextRef:*/ var charstring created_location := valueof(f_HTTP2_header_list_find_header(http2_rx.hb.headers, c_HTTP2_HDR_location)); - g_pars.nsmf.smContextRef := regexp(created_location, Nsmf_uri_prefix & Nsmf_PDUSession_path_sm_contexts & "/(?+)", 0); + g_pars.nsmf.smContextRef := regexp(created_location, c_Nsmf_uri_prefix & c_Nsmf_PDUSession_path_sm_contexts & "/(?+)", 0); } }
@@ -251,7 +239,7 @@
/* PCF: register to rx generic path. We take advantage of the fact that * we are inside a mutual exclusion zone, so only one session can be here at a time. */ - f_http2_server_emu_register(Npcf_SMPolicyControl_path_sm_policies, idx := HTTP2_CONN_SCP); + f_http2_server_emu_register(c_Npcf_SMPolicyControl_path_sm_policies, idx := HTTP2_CONN_SCP);
/* Expect UDM to receive GET sm-data: */ as_nudm_sdm_get_sm_data(); @@ -268,7 +256,7 @@
/* Expect PCF to receive POST sm-policies: */ as_npcf_smpolicycontrol_post_sm_policies(); - f_http2_server_emu_unregister(Npcf_SMPolicyControl_path_sm_policies, idx := HTTP2_CONN_SCP); + f_http2_server_emu_unregister(c_Npcf_SMPolicyControl_path_sm_policies, idx := HTTP2_CONN_SCP);
/* Expect PFCP Session Establishment Request. */ as_pfcp_sess_est_req(); @@ -328,7 +316,7 @@ hb := { pseudo_headers := ts_HTTP2_pseudo_headers_Req(method := "POST", scheme := "http", - authority := Nsmf_uri_hostport, + authority := c_Nsmf_uri_hostport, path := ts_Nsmf_PDUSession_path_sm_context_modify(g_pars.nsmf.smContextRef)), headers := { ts_HTTP2_Hdr_content_type_multipart(http2_boundary), @@ -452,7 +440,7 @@ hb := { pseudo_headers := ts_HTTP2_pseudo_headers_Req(method := "POST", scheme := "http", - authority := Nsmf_uri_hostport, + authority := c_Nsmf_uri_hostport, path := ts_Nsmf_PDUSession_path_sm_context_release(g_pars.nsmf.smContextRef)), headers := { ts_HTTP2_Hdr_content_type_multipart(http2_boundary), @@ -505,22 +493,11 @@ * N11 Namf (SBI): Emulated AMF **************************************/
-const charstring Namf_uri_prefix := SCP_uri_prefix; +const charstring c_Namf_uri_prefix := c_SCP_uri_prefix;
-const charstring Namf_Callback_path_api_prefix := "/namf-callback/v1"; - -template (value) charstring ts_Namf_Callback_uri_imsi_sm_context_status_id(template (value) charstring imsi, template (value) charstring id) := - Namf_uri_prefix & Namf_Communication_path_ue_contexts & "/imsi-" & valueof(imsi) & "/sm-context-status/" & valueof(id); - - -const charstring Namf_Communication_path_api_prefix := "/namf-comm/v1"; -const charstring Namf_Communication_path_ue_contexts := Namf_Communication_path_api_prefix & "/ue-contexts"; - -template (value) charstring ts_Namf_Communication_path_ue_contexts(template (value) charstring imsi) := - Namf_Communication_path_ue_contexts & "/imsi-" & valueof(imsi); - -template (value) charstring ts_Namf_Communication_path_ue_contexts_n1_n2_messages(template (value) charstring imsi) := - Namf_Communication_path_ue_contexts & "/imsi-" & valueof(imsi) & "/n1-n2-messages"; +template (value) charstring +ts_Namf_Callback_uri_imsi_sm_context_status_id(template (value) charstring imsi, template (value) charstring id) +:= c_Namf_uri_prefix & valueof(ts_Namf_Communication_path_ue_contexts_sm_context_status_id(imsi, id));
/* 3GPP TS 29.518: * 6.1.3.5 Resource: N1N2 Messages Collection */ @@ -660,47 +637,17 @@ /************************************************ * N10 Nudm (SBI): Emulated UDM, 3GPP TS 29.503 ************************************************/ - -const charstring Nudm_uri_prefix := SCP_uri_prefix; -const charstring Nudm_UECM_path_api_prefix := "/nudm-uecm/v1" -const charstring Nudm_SDM_path_api_prefix := "/nudm-sdm/v2" - -/* 6.2.3.5 Resource: IndividualSmfRegistration */ -template (present) charstring -tr_Nudm_UECM_path_individual_smf_registration(template (present) charstring imsi := pattern "\d+", - template (present) charstring smf_reg := pattern "\d+") -:= pattern Nudm_UECM_path_api_prefix & "/imsi-" & imsi & "/registrations/smf-registrations/" & smf_reg; - -template (value) charstring -ts_Nudm_UECM_path_individual_smf_registration(template (value) charstring imsi, - template (value) charstring smf_reg) -:= Nudm_UECM_path_api_prefix & "/imsi-" & valueof(imsi) & "/registrations/smf-registrations/" & valueof(smf_reg); +const charstring c_Nudm_uri_prefix := c_SCP_uri_prefix;
template (value) charstring ts_Nudm_UECM_uri_individual_smf_registration(template (value) charstring imsi, template (value) charstring smf_reg) -:= Nudm_uri_prefix & valueof(ts_Nudm_UECM_path_individual_smf_registration(imsi, smf_reg)); - -/* 6.1.3.3 Resource: SdmSubscriptions (Collection) */ -template (value) charstring -ts_Nudm_SDM_path_sdm_subscriptions(template (value) charstring imsi) -:= Nudm_SDM_path_api_prefix & "/imsi-" & valueof(imsi) & "/sdm-subscriptions"; - -/* 6.1.3.4 Resource: Individual subscription (Document) */ -template (present) charstring -tr_Nudm_SDM_path_individual_subscription(template (present) charstring imsi := pattern "\d+", - template (present) charstring subscr_id := pattern "\d+") -:= pattern Nudm_SDM_path_api_prefix & "/imsi-" & imsi & "/sdm-subscriptions/" & subscr_id; - -template (value) charstring -ts_Nudm_SDM_path_individual_subscription(template (value) charstring imsi, - template (value) charstring subscr_id) -:= valueof(ts_Nudm_SDM_path_sdm_subscriptions(imsi)) & "/" & valueof(subscr_id); +:= c_Nudm_uri_prefix & valueof(ts_Nudm_UECM_path_individual_smf_registration(imsi, smf_reg));
template (value) charstring ts_Nudm_SDM_uri_individual_subscription(template (value) charstring imsi, template (value) charstring subscr_id) -:= Nudm_uri_prefix & valueof(ts_Nudm_SDM_path_individual_subscription(imsi, subscr_id)); +:= c_Nudm_uri_prefix & valueof(ts_Nudm_SDM_path_individual_subscription(imsi, subscr_id));
/* 3GPP TS 29.244 8.2.79 PDN Type -> 3GPP TS 29.503 PduSessionType */ private function f_pfcp_pdn_type_2_Nudm_SDM_pdu_session_type(INT3b pfcp_pdn_type) @@ -805,7 +752,7 @@ var template HTTP2_header_list headers := *;
pseudo_headers := tr_HTTP2_pseudo_headers_Req(method := "GET", - path := pattern Nudm_SDM_path_api_prefix & "/imsi-" & g_pars.imsi_str & "/sm-data*"); + path := pattern c_Nudm_SDM_path_api_prefix & "/imsi-" & g_pars.imsi_str & "/sm-data*"); hb := tr_HTTP2_header_block(pseudo_headers, headers); http2_msg := tr_HTTP2_Msg(?, ?, hb := hb, body := omit); return http2_msg; @@ -949,20 +896,7 @@ * N8 NPcf (SBI): Emulated PCF, 3GPP TS 29.512 **********************************************/
-const charstring Npcf_uri_prefix := SCP_uri_prefix; -const charstring Npcf_SMPolicyControl_path_api_prefix := "/npcf-smpolicycontrol/v1" - -/* 5.3.2 Resource: SM Policies */ -const charstring Npcf_SMPolicyControl_path_sm_policies := Npcf_SMPolicyControl_path_api_prefix & "/sm-policies"; - -/* 5.3.3 Resource: Individual SM Policy */ -template (present) charstring -tr_Npcf_SMPolicyControl_path_individual_sm_policy_delete(template (present) charstring sm_policy_id := pattern "?+") -:= pattern Npcf_SMPolicyControl_path_sm_policies & "/" & sm_policy_id & "/delete"; - -template (value) charstring -ts_Npcf_SMPolicyControl_path_individual_sm_policy(template (value) charstring sm_policy_id) -:= Npcf_SMPolicyControl_path_sm_policies & "/" & valueof(sm_policy_id); +const charstring Npcf_uri_prefix := c_SCP_uri_prefix;
template (value) charstring ts_Npcf_SMPolicyControl_uri_individual_sm_policy(template (value) charstring sm_policy_id) @@ -978,7 +912,7 @@ var template HTTP2_header_list headers := *;
pseudo_headers := tr_HTTP2_pseudo_headers_Req(method := "POST", - path := Npcf_SMPolicyControl_path_sm_policies); + path := c_Npcf_SMPolicyControl_path_sm_policies); hb := tr_HTTP2_header_block(pseudo_headers, headers); http2_msg := tr_HTTP2_Msg(?, ?, hb := hb, diff --git a/smf/SMF_Tests.ttcn b/smf/SMF_Tests.ttcn index c596baf..c9945c9 100644 --- a/smf/SMF_Tests.ttcn +++ b/smf/SMF_Tests.ttcn @@ -38,6 +38,9 @@
import from NG_NAS_Templates all;
+import from TS29502_Nsmf_PDUSession_Templates all; +import from TS29512_Npcf_SMPolicyControl_Templates all; + import from Mutex all; import from SMF_Session_CT all; import from SMF_Session_CT_4G all; @@ -247,7 +250,7 @@ }
private function f_init_http2_srv(charstring id) runs on SMF_Test_CT { - id := id & "-PFCP"; + id := id & "-HTTP2SRV";
var Http2ServerEmulationCfg http2_srv_cfg := { http2_bind_ip := mp_scp_local_ip, @@ -837,7 +840,7 @@
/* PCF: register to rx generic path. We take advantage of the fact that * we are inside a mutual exclusion zone, so only one session can be here at a time. */ - f_http2_server_emu_register(Npcf_SMPolicyControl_path_sm_policies, idx := HTTP2_CONN_SCP); + f_http2_server_emu_register(c_Npcf_SMPolicyControl_path_sm_policies, idx := HTTP2_CONN_SCP);
/* Expect UDM to receive GET sm-data: */ as_nudm_sdm_get_sm_data(); @@ -854,7 +857,7 @@
/* Expect PCF to receive POST sm-policies: */ as_npcf_smpolicycontrol_post_sm_policies(); - f_http2_server_emu_unregister(Npcf_SMPolicyControl_path_sm_policies, idx := HTTP2_CONN_SCP); + f_http2_server_emu_unregister(c_Npcf_SMPolicyControl_path_sm_policies, idx := HTTP2_CONN_SCP);
f_prometheus_expect(expects1, wait_converge := true);