blob: de2f498791b212f0d73926c79cc28df847790af3 [file] [log] [blame]
Harald Welteafec4712018-03-19 22:52:17 +01001module SIP_Tests {
2
3import from General_Types all;
4import from Osmocom_Types all;
5
6import from Osmocom_CTRL_Functions all;
7import from Osmocom_CTRL_Types all;
8import from Osmocom_CTRL_Adapter all;
9
10import from TELNETasp_PortType all;
11import from Osmocom_VTY_Functions all;
12
13import from MNCC_Emulation all;
14import from MNCC_Types all;
15
16import from SDP_Types all;
17
18import from SIP_Emulation all;
19import from SIPmsg_Types all;
20
21modulepar {
22 //charstring mp_local_host := "127.0.0.2;
23 charstring mp_osmosip_host := "127.0.0.1";
24 integer mp_osmosip_port_ctrl := -1; /* RFU */
25 charstring mp_mncc := "/tmp/mncc";
26}
27
28type component test_CT extends CTRL_Adapter_CT {
29 var MNCC_Emulation_CT vc_MNCC;
30 var SIP_Emulation_CT vc_SIP;
31
32 port TELNETasp_PT SIPVTY;
33}
34
35type component ConnHdlr extends SIP_ConnHdlr, MNCC_ConnHdlr {
36 var ConnHdlrPars g_pars;
37 timer g_Tguard;
38}
39
40type record ConnHdlrPars {
41 float t_guard
42}
43
44
45function f_init_mncc(charstring id) runs on test_CT {
46 id := id & "-MNCC";
47 var MnccOps ops := {
48 create_cb := refers(MNCC_Emulation.ExpectedCreateCallback),
49 unitdata_cb := refers(MNCC_Emulation.DummyUnitdataCallback)
50 };
51
52 vc_MNCC := MNCC_Emulation_CT.create(id);
53 map(vc_MNCC:MNCC, system:MNCC_CODEC_PT);
54 vc_MNCC.start(MNCC_Emulation.main(ops, id, mp_mncc, true));
55}
56
57function f_init() runs on test_CT {
58 //f_ipa_ctrl_start(mp_osmosip_host, mp_osmosip_port_ctrl);
59 f_init_mncc("SIP_Test");
60 log("end of f_init_mncc");
61 f_init_sip(vc_SIP, "SIP_Test");
62 log("end of f_init_sip");
63
64 map(self:SIPVTY, system:SIPVTY);
65 f_vty_set_prompts(SIPVTY);
66 f_vty_transceive(SIPVTY, "enable");
67 log("end of f_init");
68}
69
70type function void_fn(charstring id) runs on ConnHdlr;
71
72function f_start_handler(void_fn fn, ConnHdlrPars pars)
73runs on test_CT return ConnHdlr {
74 var ConnHdlr vc_conn;
75 var charstring id := testcasename();
76
77 vc_conn := ConnHdlr.create(id);
78
79 connect(vc_conn:SIP, vc_SIP:CLIENT);
80 connect(vc_conn:SIP_PROC, vc_SIP:CLIENT_PROC);
81
82 connect(vc_conn:MNCC, vc_MNCC:MNCC_CLIENT);
83 connect(vc_conn:MNCC_PROC, vc_MNCC:MNCC_PROC);
84
85 vc_conn.start(f_handler_init(fn, id, pars));
86 return vc_conn;
87}
88
89private altstep as_Tguard() runs on ConnHdlr {
90 [] g_Tguard.timeout {
91 setverdict(fail, "Tguard timeout");
92 self.stop;
93 }
94}
95
96private function f_handler_init(void_fn fn, charstring id, ConnHdlrPars pars)
97runs on ConnHdlr {
98 g_pars := pars;
99 g_Tguard.start(pars.t_guard);
100 activate(as_Tguard());
101
102 /* call the user-supied test case function */
103 fn.apply(id);
104}
105
106
107template (value) ConnHdlrPars t_Pars := {
108 t_guard := 30.0
109}
110
111private function f_TC_mo_setup(charstring id) runs on ConnHdlr {
112 var PDU_SIP_Request sip_req;
113
114 var MNCC_number dst := valueof(ts_MNCC_number("01234567"));
115 var MNCC_number src := valueof(ts_MNCC_number("112"));
116
117 f_create_sip_expect(valueof(ts_SIP_Url("+01234567")));
118
119 log("sending mncc setup");
120 MNCC.send(ts_MNCC_SETUP_ind(2342, dst, src, "262420123456789"));
121
122 MNCC.receive(tr_MNCC_RTP_CREATE(2342));
123 MNCC.send(ts_MNCC_RTP_CREATE(2342));
124
125 SIP.receive(PDU_SIP_Request:?) -> value sip_req {
126 log(sip_req);
127 }
128}
129
130testcase TC_mo_setup() runs on test_CT {
131 var ConnHdlrPars pars;
132 var ConnHdlr vc_conn;
133
134 f_init();
135
136 pars := valueof(t_Pars);
137 vc_conn := f_start_handler(refers(f_TC_mo_setup), pars);
138 vc_conn.done;
139}
140
141
142
143
144
145/* SIP specifics */
146
147const integer c_SIP_PORT := 5060;
148
149template (value) SIP_comm_adress ts_SipAddr(charstring rhost,
150 template (omit) charstring lhost := omit,
151 integer rport := c_SIP_PORT,
152 integer lport := c_SIP_PORT,
153 SIP_com_prot prot := UDP_E) := {
154 remote_host := rhost,
155 remote_port := rport,
156 local_host := lhost,
157 local_port := lport,
158 protocol := prot
159}
160
161template (value) ASP_SIP_open ts_SIP_open(SIP_comm_adress addr) := {
162 addr := addr
163}
164
165
166
167control {
168 execute( TC_mo_setup() );
169}
170
171
172
173}