pespin has uploaded this change for review.
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);
To view, visit change 43961. To unsubscribe, or for help writing mail filters, visit settings.