Initial TTCN-3 test suite for osmo-remsim
This adds shared infrastructure and initial test suites for
osmo-remsim-{server,client,bankd}.
Change-Id: I00034d3a991f0f881cfd8ff0bfc4557113daf830
diff --git a/remsim/RSPRO_Types.ttcn b/remsim/RSPRO_Types.ttcn
new file mode 100644
index 0000000..1eb84bd
--- /dev/null
+++ b/remsim/RSPRO_Types.ttcn
@@ -0,0 +1,375 @@
+module RSPRO_Types {
+
+/* Templates and utility functions for the RSPRO protocol.
+ * (C) 2019 by Harald Welte <laforge@gnumonks.org>
+ * All rights reserved.
+ *
+ * Released under the terms of GNU General Public License, Version 2 or
+ * (at your option) any later version.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+import from RSPRO all;
+import from Native_Functions all;
+
+template ResultCode tr_Status_ok_or_nocard := (ok, cardNotPresent);
+
+external function dec_RsproPDU(in octetstring stream) return RsproPDU;
+external function enc_RsproPDU(in RsproPDU pdu) return octetstring;
+
+type integer RsproVersion (0..32);
+
+template (value) BankSlot ts_BankSlot(template (value) BankId bid,
+ template (value) SlotNumber slot) := {
+ bankId := bid,
+ slotNr := slot
+}
+
+template (value) ClientSlot ts_ClientSlot(template (value) ClientId cid,
+ template (value) SlotNumber slot) := {
+ clientId := cid,
+ slotNr := slot
+}
+
+template (value) ComponentIdentity ts_CompId(template (value) ComponentType ctype,
+ template (value) ComponentName name,
+ template (value) ComponentName sw := "TTCN3",
+ template (value) ComponentName sw_version := "0.1") := {
+ type_ := ctype,
+ name := name,
+ software := sw,
+ swVersion := sw_version,
+ hwManufacturer := "sysmocom",
+ hwModel := omit,
+ hwSerialNr := omit,
+ hwVersion := omit,
+ fwVersion := omit
+}
+template ComponentIdentity tr_CompId(template ComponentType ctype,
+ template ComponentName name,
+ template ComponentName sw := "TTCN3",
+ template ComponentName sw_version := "0.1") := {
+ type_ := ctype,
+ name := name,
+ software := sw,
+ swVersion := sw_version,
+ hwManufacturer := *,
+ hwModel := *,
+ hwSerialNr := *,
+ hwVersion := *,
+ fwVersion := *
+}
+
+template (value) IpPort ts_IpPort(template (value) IpAddress ip,
+ template (value) PortNumber port_nr) := {
+ ip := ip,
+ port_ := port_nr
+}
+template IpPort tr_IpPort(template IpAddress ip, template PortNumber port_nr) := {
+ ip := ip,
+ port_ := port_nr
+}
+
+template (value) IpAddress ts_IPv4(charstring ip_str) := {
+ ipv4 := f_inet_addr(ip_str)
+}
+
+
+
+
+template (value) RsproPDU ts_RSPRO(template (value) RsproPDUchoice msg,
+ template (value) RsproVersion version := 2,
+ template (value) OperationTag tag := 0) := {
+ version := version,
+ tag := tag,
+ msg := msg
+}
+
+template RsproPDU tr_RSPRO(template RsproPDUchoice msg,
+ template RsproVersion version := 2,
+ template OperationTag tag := ?) := {
+ version := version,
+ tag := tag,
+ msg := msg
+}
+
+
+template (value) RsproPDU ts_RSPRO_ConnectClientReq(template (value) ComponentIdentity id,
+ template (omit) ClientSlot clslot) :=
+ ts_RSPRO(RsproPDUchoice:{
+ connectClientReq := {
+ identity := id,
+ clientSlot := clslot
+ }
+ });
+template RsproPDU tr_RSPRO_ConnectClientReq(template ComponentIdentity id,
+ template ClientSlot clslot) :=
+ tr_RSPRO(RsproPDUchoice:{
+ connectClientReq := {
+ identity := id,
+ clientSlot := clslot
+ }
+ });
+
+
+template (value) RsproPDU ts_RSPRO_ConnectClientRes(template (value) ComponentIdentity id,
+ template (value) ResultCode res) :=
+ ts_RSPRO(RsproPDUchoice:{
+ connectClientRes := {
+ identity := id,
+ result := res
+ }
+ });
+template RsproPDU tr_RSPRO_ConnectClientRes(template ComponentIdentity id := ?,
+ template ResultCode res := ?) :=
+ tr_RSPRO(RsproPDUchoice:{
+ connectClientRes := {
+ identity := id,
+ result := res
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_ConnectBankReq(template (value) ComponentIdentity id,
+ template (value) BankId bid,
+ template (value) SlotNumber nslots,
+ template (omit) IpPort bound) :=
+ ts_RSPRO(RsproPDUchoice:{
+ connectBankReq := {
+ identity := id,
+ bankId := bid,
+ numberOfSlots := nslots,
+ bound := bound
+ }
+ });
+template RsproPDU tr_RSPRO_ConnectBankReq(template ComponentIdentity id,
+ template BankId bid,
+ template SlotNumber nslots,
+ template IpPort bound := *) :=
+ tr_RSPRO(RsproPDUchoice:{
+ connectBankReq := {
+ identity := id,
+ bankId := bid,
+ numberOfSlots := nslots,
+ bound := *
+ }
+ });
+
+
+template (value) RsproPDU ts_RSPRO_ConnectBankRes(template (value) ComponentIdentity id,
+ template (value) ResultCode res) :=
+ ts_RSPRO(RsproPDUchoice:{
+ connectBankRes := {
+ identity := id,
+ result := res
+ }
+ });
+template RsproPDU tr_RSPRO_ConnectBankRes(template ComponentIdentity id := ?,
+ template ResultCode res := ?) :=
+ tr_RSPRO(RsproPDUchoice:{
+ connectBankRes := {
+ identity := id,
+ result := res
+ }
+ });
+
+
+template (value) RsproPDU ts_RSPRO_SetAtrReq(template (value) ClientSlot clslot,
+ template (value) ATR atr) :=
+ ts_RSPRO(RsproPDUchoice:{
+ setAtrReq := {
+ slot := clslot,
+ atr := atr
+ }
+ });
+template RsproPDU tr_RSPRO_SetAtrReq(template ClientSlot clslot := ?,
+ template ATR atr := ?) :=
+ tr_RSPRO(RsproPDUchoice:{
+ setAtrReq := {
+ slot := clslot,
+ atr := atr
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_SetAtrRes(template (value) ResultCode res) :=
+ ts_RSPRO(RsproPDUchoice:{
+ setAtrRes := {
+ result := res
+ }
+ });
+template RsproPDU tr_RSPRO_SetAtrRes(template ResultCode res := ?) :=
+ tr_RSPRO(RsproPDUchoice:{
+ setAtrRes := {
+ result := res
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_TpduModemToCard(template (value) ClientSlot from_clslot,
+ template (value) BankSlot to_bslot,
+ template (value) TpduFlags flags,
+ template (value) octetstring data) :=
+ ts_RSPRO(RsproPDUchoice:{
+ tpduModemToCard := {
+ fromClientSlot := from_clslot,
+ toBankSlot := to_bslot,
+ flags := flags,
+ data := data
+ }
+ });
+template RsproPDU tr_RSPRO_TpduModemToCard(template ClientSlot from_clslot := ?,
+ template BankSlot to_bslot := ?,
+ template TpduFlags flags := ?,
+ template octetstring data := ?) :=
+ tr_RSPRO(RsproPDUchoice:{
+ tpduModemToCard := {
+ fromClientSlot := from_clslot,
+ toBankSlot := to_bslot,
+ flags := flags,
+ data := data
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_TpduCardToModem(template (value) BankSlot from_bslot,
+ template (value) ClientSlot to_clslot,
+ template (value) TpduFlags flags,
+ template (value) octetstring data) :=
+ ts_RSPRO(RsproPDUchoice:{
+ tpduCardToModem := {
+ fromBankSlot := from_bslot,
+ toClientSlot := to_clslot,
+ flags := flags,
+ data := data
+ }
+ });
+template RsproPDU tr_RSPRO_TpduCardToModem(template BankSlot from_bslot := ?,
+ template ClientSlot to_clslot := ?,
+ template TpduFlags flags := ?,
+ template octetstring data := ?) :=
+ tr_RSPRO(RsproPDUchoice:{
+ tpduCardToModem := {
+ fromBankSlot := from_bslot,
+ toClientSlot := to_clslot,
+ flags := flags,
+ data := data
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_CreateMappingReq(template (value) ClientSlot cslot,
+ template (value) BankSlot bslot) :=
+ ts_RSPRO(RsproPDUchoice:{
+ createMappingReq := {
+ client := cslot,
+ bank := bslot
+ }
+ });
+template RsproPDU tr_RSPRO_CreateMappingReq(template ClientSlot cslot,
+ template BankSlot bslot) :=
+ tr_RSPRO(RsproPDUchoice:{
+ createMappingReq := {
+ client := cslot,
+ bank := bslot
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_CreateMappingRes(template (value) ResultCode res) :=
+ ts_RSPRO(RsproPDUchoice:{
+ createMappingRes := {
+ result := res
+ }
+ });
+template RsproPDU tr_RSPRO_CreateMappingRes(template ResultCode res) :=
+ tr_RSPRO(RsproPDUchoice:{
+ createMappingRes := {
+ result := res
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_RemoveMappingReq(template (value) ClientSlot cslot,
+ template (value) BankSlot bslot) :=
+ ts_RSPRO(RsproPDUchoice:{
+ removeMappingReq := {
+ client := cslot,
+ bank := bslot
+ }
+ });
+template RsproPDU tr_RSPRO_RemoveMappingReq(template ClientSlot cslot,
+ template BankSlot bslot) :=
+ tr_RSPRO(RsproPDUchoice:{
+ removeMappingReq := {
+ client := cslot,
+ bank := bslot
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_RemoveMappingRes(template (value) ResultCode res) :=
+ ts_RSPRO(RsproPDUchoice:{
+ removeMappingRes := {
+ result := res
+ }
+ });
+template RsproPDU tr_RSPRO_RemoveMappingRes(template ResultCode res) :=
+ tr_RSPRO(RsproPDUchoice:{
+ removeMappingRes := {
+ result := res
+ }
+ });
+
+
+template (value) RsproPDU ts_RSPRO_ConfigClientIdReq(template (value) ClientSlot cslot) :=
+ ts_RSPRO(RsproPDUchoice: {
+ configClientIdReq := {
+ clientSlot := cslot
+ }
+ });
+template RsproPDU tr_RSPRO_ConfigClientIdReq(template ClientSlot cslot) :=
+ tr_RSPRO(RsproPDUchoice: {
+ configClientIdReq := {
+ clientSlot := cslot
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_ConfigClientIdRes(template (value) ResultCode res) :=
+ ts_RSPRO(RsproPDUchoice:{
+ configClientIdRes := {
+ result := res
+ }
+ });
+template RsproPDU tr_RSPRO_ConfigClientIdRes(template ResultCode res) :=
+ tr_RSPRO(RsproPDUchoice:{
+ configClientIdRes := {
+ result := res
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_ConfigClientBankReq(template (value) BankSlot bslot,
+ template (value) IpPort ip_port) :=
+ ts_RSPRO(RsproPDUchoice: {
+ configClientBankReq := {
+ bankSlot := bslot,
+ bankd := ip_port
+ }
+ });
+template RsproPDU tr_RSPRO_ConfigClientBankReq(template BankSlot bslot,
+ template IpPort ip_port) :=
+ tr_RSPRO(RsproPDUchoice: {
+ configClientBankReq := {
+ bankSlot := bslot,
+ bankd := ip_port
+ }
+ });
+
+template (value) RsproPDU ts_RSPRO_ConfigClientBankRes(template (value) ResultCode res) :=
+ ts_RSPRO(RsproPDUchoice:{
+ configClientBankRes := {
+ result := res
+ }
+ });
+template RsproPDU tr_RSPRO_ConfigClientBankRes(template ResultCode res) :=
+ tr_RSPRO(RsproPDUchoice:{
+ configClientBankRes := {
+ result := res
+ }
+ });
+
+
+}