104 lines
2.4 KiB
Plaintext
104 lines
2.4 KiB
Plaintext
module Selftest {
|
|
|
|
import from General_Types all;
|
|
import from Osmocom_Types all;
|
|
import from GSM_Types all;
|
|
import from IPL4asp_Types all;
|
|
import from IPL4asp_PortType all;
|
|
|
|
import from BSSAP_Types all;
|
|
//import from BSSAP_Adapter all;
|
|
import from BSSAP_CodecPort all;
|
|
import from BSSMAP_Templates all;
|
|
import from IPA_Emulation all;
|
|
import from IPA_Types all;
|
|
import from RSL_Types all;
|
|
|
|
import from Osmocom_CTRL_Functions all;
|
|
import from Osmocom_CTRL_Types all;
|
|
|
|
import from MobileL3_CommonIE_Types all;
|
|
import from L3_Templates all;
|
|
import from GSM_RR_Types all;
|
|
|
|
|
|
type component IPA_selftest_CT {
|
|
/* upper end of IPA_Emulation */
|
|
port IPA_RSL_PT IPA_RSL;
|
|
port IPA_CTRL_PT IPA_CTRL;
|
|
port IPA_SP_PT IPA_SP;
|
|
|
|
var IPA_Emulation_CT vc_IPA;
|
|
|
|
/* raw IP port */
|
|
port IPL4asp_PT IP;
|
|
var ConnectionId g_ip_conn_id := -1;
|
|
}
|
|
|
|
|
|
function f_ipa_srv_init() runs on IPA_selftest_CT {
|
|
vc_IPA := IPA_Emulation_CT.create("IPA_Emulation");
|
|
map(vc_IPA:IPA_PORT, system: IPA_CODEC_PT);
|
|
connect(vc_IPA:IPA_RSL_PORT, self:IPA_RSL);
|
|
connect(vc_IPA:IPA_CTRL_PORT, self:IPA_CTRL);
|
|
vc_IPA.start(IPA_Emulation.main_server("127.0.0.1", 55555));
|
|
}
|
|
|
|
function f_ipa_wait_up() runs on IPA_selftest_CT {
|
|
interleave {
|
|
[] IPA_RSL.receive(t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_UP));
|
|
[] IPA_CTRL.receive(t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_UP));
|
|
}
|
|
}
|
|
|
|
function f_tcp_client_init() runs on IPA_selftest_CT {
|
|
var Result res;
|
|
map(self:IP, system:IP);
|
|
res := IPL4asp_PortType.f_IPL4_connect(IP, "127.0.0.1", 55555, "", -1,-1, {tcp:={}});
|
|
if (not ispresent(res.connId)) {
|
|
setverdict(fail, "Could not connect to TCP port, check your configuration");
|
|
self.stop;
|
|
}
|
|
g_ip_conn_id := res.connId;
|
|
}
|
|
|
|
|
|
template ASP_Send ts_ASP_Send(ConnectionId id, template octetstring tx) := {
|
|
connId := id,
|
|
proto := omit,
|
|
msg := tx
|
|
}
|
|
|
|
testcase TC_ipa_fragment() runs on IPA_selftest_CT {
|
|
var integer i;
|
|
var octetstring tx_buf;
|
|
var RSL_Message rsl;
|
|
|
|
f_ipa_srv_init();
|
|
f_tcp_client_init();
|
|
f_ipa_wait_up();
|
|
|
|
rsl := valueof(ts_RSL_CHAN_RQD('23'O, 2342));
|
|
tx_buf := enc_PDU_IPA(valueof(ts_PDU_IPA(IPAC_PROTO_RSL_TRX0, enc_RSL_Message(rsl))));
|
|
/* send in rapid sequence to fill multiple messages in one TCP segment */
|
|
for (i := 0; i < 10; i := i+1) {
|
|
IP.send(ts_ASP_Send(g_ip_conn_id, tx_buf));
|
|
}
|
|
timer T:= 1.0;
|
|
T.start;
|
|
T.timeout;
|
|
|
|
for (i := 0; i < 10; i := i+1) {
|
|
IPA_RSL.receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, rsl));
|
|
}
|
|
setverdict(pass);
|
|
}
|
|
|
|
|
|
control {
|
|
execute( TC_ipa_fragment() );
|
|
}
|
|
|
|
|
|
}
|