blob: 990518c3fddd6d8ca73481a2d55ee879d9d38743 [file] [log] [blame]
Harald Welte0db44132019-10-17 11:09:05 +02001module STP_Tests {
2
3/* Osmocom STP test suite in in TTCN-3
4 * (C) 2019 Harald Welte <laforge@gnumonks.org>
5 * All rights reserved.
6 *
7 * Released under the terms of GNU General Public License, Version 2 or
8 * (at your option) any later version.
9 *
10 * SPDX-License-Identifier: GPL-2.0-or-later
11 */
12
13import from General_Types all;
14import from Osmocom_Types all;
15import from IPL4asp_Types all;
16
17import from Osmocom_VTY_Functions all;
18
19import from M3UA_Types all;
20import from M3UA_Templates all;
21import from M3UA_CodecPort all;
22import from M3UA_CodecPort_CtrlFunct all;
23
24import from M3UA_Emulation all;
25import from MTP3asp_Types all;
26import from MTP3asp_PortType all;
27
28import from SCCP_Types all;
29import from SCCP_Templates all;
30import from SCCPasp_Types all;
31import from SCCP_Emulation all;
32
33import from IPA_Emulation all;
34
35import from STP_Tests_Common all;
36import from STP_Tests_IPA all;
37import from STP_Tests_M3UA all;
38
39
40type component IPA_M3UA_CT extends RAW_M3UA_CT, IPA_CT {
41};
42
43const OCT1 c_M3UA_SI_SCCP := '03'O;
44
Harald Welte0db44132019-10-17 11:09:05 +020045template (value) PDU_SCCP ts_SCCP_UDT(SCCP_PAR_Address called, SCCP_PAR_Address calling,
46 template (value) octetstring data,
47 template (value) BIT4 msg_hdl := '0000'B) := {
48 unitdata := {
49 messageType := udt,
50 protClass := {'0000'B, msg_hdl},
51 pointer1 := 0,
52 pointer2 := 0,
53 pointer3 := 0,
54 calledPAddress := ConvertASPAddressToEncodedAddress_itu(called),
55 callingPAddress := ConvertASPAddressToEncodedAddress_itu(calling),
56 data := {
57 paramLength := 0,
58 data := data
59 }
60 }
61}
62
63/* Test routing of SCCP between an M3UA and an IPA ASP */
64testcase TC_m3ua_to_ipa() runs on IPA_M3UA_CT {
65 var OCT4 rctx_sender := int2oct(1023, 4);
66 var OCT4 pc_sender := int2oct(23, 4);
67 var OCT4 pc_receiver := int2oct(5, 4);
68
69 f_init_m3ua();
70 f_init_ipa();
71
Pau Espin Pedrol01ec0bf2019-11-07 14:50:07 +010072 f_connect_ipa(3);
Harald Welte0db44132019-10-17 11:09:05 +020073 f_M3UA_asp_up_act(0, omit, omit); // TODO: rctx
74
75 /* send a well-formed, encoded SCCP message via M3UA */
76 var octetstring data := f_rnd_octstring(f_rnd_int(100));
77 var SCCP_PAR_Address called := valueof(ts_SccpAddr_GT('1234'H));
78 var SCCP_PAR_Address calling := valueof(ts_SccpAddr_GT('5678'H));
79 var PDU_SCCP sccp := valueof(ts_SCCP_UDT(called, calling, data));
80 var octetstring sccp_enc := enc_PDU_SCCP(sccp);
81 var template (value) M3UA_Protocol_Data tx_pd;
82 tx_pd := ts_M3UA_protocol_data(pc_sender, pc_receiver, c_M3UA_SI_SCCP, '00'O, '00'O, '00'O, sccp_enc);
83 f_M3UA_send(0, ts_M3UA_DATA(rctx_sender, tx_pd), 1);
84
85 /* expect to receive it via IPA */
Pau Espin Pedrol01ec0bf2019-11-07 14:50:07 +010086 f_IPA_exp(3, sccp_enc);
Pau Espin Pedrol05726dd2019-11-06 15:55:57 +010087
88 f_clear_m3ua();
Harald Welte0db44132019-10-17 11:09:05 +020089}
90
91/* test routing an SCCP message from IPA ASP to M3UA ASP */
92testcase TC_ipa_to_m3ua() runs on IPA_M3UA_CT {
93 var OCT4 pc_sender := int2oct(5, 4);
94 var OCT4 rctx_receiver := int2oct(1023, 4);
95 var OCT4 pc_receiver := int2oct(23, 4);
96
97 f_init_common();
Pau Espin Pedrol01ec0bf2019-11-07 14:50:07 +010098 f_vty_config2(VTY, {"cs7 instance 0", "as ipa-as-dynamic-asp ipa"},
Harald Welte0db44132019-10-17 11:09:05 +020099 "point-code override patch-sccp disabled");
100
101 f_init_m3ua();
102 f_init_ipa();
103
Pau Espin Pedrol01ec0bf2019-11-07 14:50:07 +0100104 f_connect_ipa(3);
Harald Welte0db44132019-10-17 11:09:05 +0200105 f_M3UA_asp_up_act(0, omit, omit); // TODO: rctx
106
107 /* send a well-formed, encoded SCCP message via IPA */
108 var octetstring data := f_rnd_octstring(f_rnd_int(100));
109 var SCCP_PAR_Address called := valueof(ts_SccpAddr_GT('1234'H));
110 var SCCP_PAR_Address calling := valueof(ts_SccpAddr_GT('5678'H));
111 var PDU_SCCP sccp := valueof(ts_SCCP_UDT(called, calling, data));
112 var octetstring sccp_enc := enc_PDU_SCCP(sccp);
Pau Espin Pedrol01ec0bf2019-11-07 14:50:07 +0100113 f_IPA_send(3, sccp_enc);
Harald Welte0db44132019-10-17 11:09:05 +0200114
115 /* expect to receive it via M3UA */
116 var template (present) M3UA_Protocol_Data rx_pd;
117 rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, c_M3UA_SI_SCCP, '00'O, '00'O, '00'O, sccp_enc);
118 f_M3UA_exp(0, tr_M3UA_DATA(rctx_receiver, rx_pd));
Pau Espin Pedrol05726dd2019-11-06 15:55:57 +0100119
120 f_clear_m3ua();
Harald Welte0db44132019-10-17 11:09:05 +0200121}
122
123/* test routing an SCCP message from IPA ASP to M3UA ASP while patching PC into SCCP addresses */
124testcase TC_ipa_to_m3ua_patch_sccp() runs on IPA_M3UA_CT {
125 var OCT4 pc_sender := int2oct(5, 4);
126 var OCT4 rctx_receiver := int2oct(1023, 4);
127 var OCT4 pc_receiver := int2oct(23, 4);
128
129 f_init_common();
Pau Espin Pedrol01ec0bf2019-11-07 14:50:07 +0100130 f_vty_config2(VTY, {"cs7 instance 0", "as ipa-as-dynamic-asp ipa"},
Harald Welte0db44132019-10-17 11:09:05 +0200131 "point-code override patch-sccp both");
132
133 f_init_m3ua();
134 f_init_ipa();
135
Pau Espin Pedrol01ec0bf2019-11-07 14:50:07 +0100136 f_connect_ipa(3);
Harald Welte0db44132019-10-17 11:09:05 +0200137 f_M3UA_asp_up_act(0, omit, omit); // TODO: rctx
138
139 /* send a well-formed, encoded SCCP message via IPA */
140 var octetstring data := f_rnd_octstring(f_rnd_int(100));
141 var SCCP_PAR_Address called := valueof(ts_SccpAddr_GT('1234'H));
142 var SCCP_PAR_Address calling := valueof(ts_SccpAddr_GT('5678'H));
143 var PDU_SCCP sccp := valueof(ts_SCCP_UDT(called, calling, data));
Pau Espin Pedrol01ec0bf2019-11-07 14:50:07 +0100144 f_IPA_send(3, enc_PDU_SCCP(sccp));
Harald Welte0db44132019-10-17 11:09:05 +0200145
146 /* patch point codes into addresses */
147 called := valueof(ts_SccpAddr_PC_GT(oct2int(pc_receiver), '83'O, "mtp3_itu", '1234'H));
148 calling := valueof(ts_SccpAddr_PC_GT(oct2int(pc_sender), '83'O, "mtp3_itu", '5678'H));
149 var PDU_SCCP sccp_exp := valueof(ts_SCCP_UDT(called, calling, data));
150
151 /* expect to receive it via M3UA */
152 var template (present) M3UA_Protocol_Data rx_pd;
153 rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, c_M3UA_SI_SCCP, '00'O, '00'O, '00'O,
154 enc_PDU_SCCP(sccp_exp));
155 f_M3UA_exp(0, tr_M3UA_DATA(rctx_receiver, rx_pd));
Pau Espin Pedrol05726dd2019-11-06 15:55:57 +0100156
157 f_clear_m3ua();
Harald Welte0db44132019-10-17 11:09:05 +0200158}
159
160
161
162control {
163 /* M3UA <-> IPA Tests */
164 execute( TC_m3ua_to_ipa() );
165 execute( TC_ipa_to_m3ua() );
166 execute( TC_ipa_to_m3ua_patch_sccp() );
167}
168
169
170
171}