blob: 2f420bb99226d183c30e342bbb14259e1e8a55f4 [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2017 Ericsson Telecom AB
//
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
///////////////////////////////////////////////////////////////////////////////
// File: EPTF_COAP_Tests.ttcn
// Description:
// Rev: R1A
// Prodnr: CNL 113 858
// Updated: 2017-09-01
// Contact: http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
module EPTF_COAP_Tests
{
import from EPTF_MBT_LGen_Definitions all;
import from EPTF_MBT_LGen_Functions all;
import from EPTF_COAP_LGen_Definitions all;
import from EPTF_COAP_LGen_Functions all;
import from EPTF_COAP_LocalTransport_Definitions all;
import from EPTF_COAP_LocalTransport_Functions all;
import from EPTF_CLL_Base_Functions all;
import from CoAP_Types all;
import from IoT_FT_Framework all;
modulepar charstring tsp_SUT_localHost := "127.0.0.1";
modulepar integer tsp_SUT_localPort := 31111;
modulepar charstring tsp_SUT_remoteHost := "127.0.0.1";
modulepar integer tsp_SUT_remotePort := 5683;
// SUT: Coap LGen
type component SUT_CT extends EPTF_MBT_LGen_CT, EPTF_COAP_LGen_CT, EPTF_COAP_LocalTransport_CT {}
// Tester_CT
type component Tester_CT extends EPTF_MBT_Tester_CT, IFW_MAIN_CT {}
function f_COAP_Tests_begin() runs on Tester_CT
{
log(%definitionId, " started");
setverdict(pass);
f_EPTF_Base_init_CT("mtc");
log(%definitionId, " Creating SUT");
var SUT_CT vc_sut := SUT_CT.create;
connect(self:EPTF_MBT_TESTER_PCO, vc_sut:EPTF_MBT_PCO);
vc_sut.start(f_SUT_behavior());
EPTF_MBT_TESTER_PCO.receive(EPTF_MBT_CommandResponse:?) from vc_sut;
EPTF_MBT_TESTER_PCO.send(EPTF_MBT_ConfigRequest:
{
entityGroupName := "SUT_EntityType",
noEntities := 1,
behaviors := {c_EPTF_MBT_myBName, c_COAP_behaviorType},
fsmName := "FSM_MBT"
}
) to vc_sut;
EPTF_MBT_TESTER_PCO.receive(EPTF_MBT_ConfigResponse:?) from vc_sut;
log(%definitionId, " SUT ready");
log(%definitionId, " finished");
}
function f_COAP_Tests_end() runs on Tester_CT
{
log("### MAIN: END TESTCASE started");
f_EPTF_Base_stopAll(none, true);
log("### MAIN: END TESTCASE finished");
}
function f_handleVerdict(in boolean p_verdict)
{
if (p_verdict) { setverdict(pass) }
else { setverdict(fail) }
}
function f_SUT_behavior() runs on SUT_CT
{
// Init
f_EPTF_MBT_init("SUT_LGen",0, "SUT_");
f_EPTF_COAP_LGen_init("SUT_LGen");
f_EPTF_COAP_LocalTransport_init();
vf_EPTF_COAP_Transport_send := refers(f_EPTF_COAP_LocalTransport_send);
vf_EPTF_COAP_Transport_receiveMessage := refers(f_EPTF_COAP_LGen_receiveMessage);
vf_EPTF_COAP_Transport_receiveEvent := refers(f_EPTF_COAP_LGen_receiveEvent);
vf_EPTF_COAP_Transport_apiRequest := refers(f_EPTF_COAP_LocalTransport_transportApiRequest);
vf_EPTF_COAP_Transport_apiResponse := refers(f_EPTF_COAP_LGen_transportApiResponse);
var integer vl_addrIdx;
f_EPTF_COAP_addressDB_add({tsp_SUT_localHost, tsp_SUT_localPort}, vl_addrIdx);
f_EPTF_COAP_addressDB_add({tsp_SUT_remoteHost, tsp_SUT_remotePort}, vl_addrIdx);
var integer v_tempIdx;
v_tempIdx := f_EPTF_COAP_templateDB_add({id:= "t_reg_NON_GET", msg:=valueof(t_reg_NON_GET)});
v_tempIdx := f_EPTF_COAP_templateDB_add({id:="t_reg_CON_GET", msg:=valueof(t_reg_CON_GET)});
v_tempIdx := f_EPTF_COAP_templateDB_add({id:="t_reg_Content", msg:=valueof(t_reg_Content)});
f_EPTF_MBT_initLGenFsm(null, null);
EPTF_MBT_PCO.send(EPTF_MBT_CommandResponse:{ ready := {}}) to mtc;
// Loop
f_EPTF_Base_wait4Shutdown();
}
template CoAP_ReqResp t_reg_NON_GET :=
{
header :=
{
version := 1,
msg_type := NON_CONFIRMABLE,
code := METHOD_GET,
message_id := 0
},
token := ''O,
options :=
{
{
uri_path := "test"
}
},
payload := omit
}
template CoAP_ReqResp t_reg_CON_GET :=
{
header :=
{
version := 1,
msg_type := CONFIRMABLE,
code := METHOD_GET,
message_id := 0
},
token := ''O,
options :=
{
{
uri_path := "test"
}
},
payload := omit
}
template CoAP_ReqResp t_reg_Content :=
{
header :=
{
version := 1,
msg_type := NON_CONFIRMABLE,
code := RESPONSE_CODE_Content,
message_id := 0
},
token := ''O,
options :=
{
{
content_format := 0
}
},
payload := char2oct("Some payload")
}
template CoAP_ReqResp tr_NON_GET :=
{
header :=
{
version := 1,
msg_type := NON_CONFIRMABLE,
code := METHOD_GET,
message_id := ?
},
token := ?,
options :=
{
{
uri_path := "test"
}
},
payload := omit
}
template CoAP_ReqResp tr_CON_GET :=
{
header :=
{
version := 1,
msg_type := CONFIRMABLE,
code := METHOD_GET,
message_id := ?
},
token := ?,
options :=
{
{
uri_path := "test"
}
},
payload := omit
}
template CoAP_ReqResp t_Content(Type p_msgType) :=
{
header :=
{
version := 1,
msg_type := p_msgType,
code := RESPONSE_CODE_Content,
message_id := 0
},
token := ''O,
options :=
{
{
content_format := 0
}
},
payload := char2oct("Some payload")
}
template CoAP_ReqResp t_ACK_Empty :=
{
header :=
{
version := 1,
msg_type := ACKNOWLEDGEMENT,
code := EMPTY_MESSAGE,
message_id := 0
},
token := ''O,
options := omit,
payload := omit
}
template CoAP_ReqResp tr_ACK_Empty :=
{
header :=
{
version := 1,
msg_type := ACKNOWLEDGEMENT,
code := EMPTY_MESSAGE,
message_id := ?
},
token := ''O,
options := omit,
payload := omit
}
template CoAP_ReqResp tr_Content(Type p_msgType) :=
{
header :=
{
version := 1,
msg_type := p_msgType,
code := RESPONSE_CODE_Content,
message_id := ?
},
token := ?,
options :=
{
{
content_format := 0
}
},
payload := char2oct("Some payload")
}
template EPTF_MBT_LGen_Definitions.FsmAddr t_addr(integer eIdx, integer fIdx := 0) :=
{
entityGroupName := "SUT_EntityType",
eIdx := eIdx,
fIdx := fIdx
}
function f_delay(in float p_time)
{
timer t:= p_time;
t.start;
t.timeout;
}
const integer c_localAddr := 0;
const integer c_remoteAddr := 1;
const integer c_t_NON_GET := 0;
const integer c_t_CON_GET := 1;
const integer c_t_Content := 2;
testcase tc_send_NON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
f_MBT_execute(c_COAP_stepName_setRemoteAddress_byIntIdx, valueof(t_addr(0, 0)), {c_remoteAddr}, false);
// Tester -- call send(NON-GET) --> SUT
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_NON_GET}, false);
f_MBT_execute(c_COAP_stepName_send, valueof(t_addr(0, 0)), {}, false);
// Tester <-- NON-GET -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_NON_GET));
// Tester -- call cleanUp --> SUT
f_MBT_execute(c_COAP_stepName_cleanUp, valueof(t_addr(0, 0)), {}, false);
f_COAP_Tests_end();
}
testcase tc_send_NON_recv_NON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
f_MBT_execute(c_COAP_stepName_setRemoteAddress_byIntIdx, valueof(t_addr(0, 0)), {c_remoteAddr}, false);
// Tester -- call send(NON-GET) --> SUT
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_NON_GET}, false);
f_MBT_execute(c_COAP_stepName_send, valueof(t_addr(0, 0)), {}, false);
// Tester <-- NON-GET -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_NON_GET));
// Tester -- NON-205 --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_Content(NON_CONFIRMABLE)), USE_LAST_RECEIVED_MID, USE_LAST_RECEIVED_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind 205 -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName(205), valueof(t_addr(0, 0)), 3.0));
f_COAP_Tests_end();
}
testcase tc_send_CON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
f_MBT_execute(c_COAP_stepName_setRemoteAddress_byIntIdx, valueof(t_addr(0, 0)), {c_remoteAddr}, false);
// Tester -- call send(CON-GET) --> SUT
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_CON_GET}, false);
f_MBT_execute(c_COAP_stepName_send, valueof(t_addr(0, 0)), {}, false);
// Tester <-- CON-GET -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester -- call cleanUp --> SUT
f_MBT_execute(c_COAP_stepName_cleanUp, valueof(t_addr(0, 0)), {}, false);
f_COAP_Tests_end();
}
testcase tc_retransmit_CON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
f_MBT_execute(c_COAP_stepName_setRemoteAddress_byIntIdx, valueof(t_addr(0, 0)), {c_remoteAddr}, false);
// Tester -- call send(CON-GET) --> SUT
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_CON_GET}, false);
f_MBT_execute(c_COAP_stepName_send, valueof(t_addr(0, 0)), {}, false);
// Tester <-- CON-GET -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester <-- CON-GET -- SUT (retransmission)
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester <-- CON-GET -- SUT (retransmission)
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester -- call cleanUp --> SUT
f_MBT_execute(c_COAP_stepName_cleanUp, valueof(t_addr(0, 0)), {}, false);
f_COAP_Tests_end();
}
testcase tc_timeout_CON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
f_MBT_execute(c_COAP_stepName_setRemoteAddress_byIntIdx, valueof(t_addr(0, 0)), {c_remoteAddr}, false);
// Tester -- call send(CON-GET) --> SUT
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_CON_GET}, false);
f_MBT_execute(c_COAP_stepName_send, valueof(t_addr(0, 0)), {}, false);
// Tester <-- CON-GET -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester <-- CON-GET -- SUT (retransmission)
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester <-- ind trTimeout -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_trTimeout, valueof(t_addr(0, 0)), tsp_EPTF_COAP_EXCHANGE_LIFETIME+3.0));
// Tester -- call cleanUp --> SUT
f_MBT_execute(c_COAP_stepName_cleanUp, valueof(t_addr(0, 0)), {}, false);
f_COAP_Tests_end();
}
testcase tc_send_CON_recv_ACK() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
f_MBT_execute(c_COAP_stepName_setRemoteAddress_byIntIdx, valueof(t_addr(0, 0)), {c_remoteAddr}, false);
// Tester -- call send(CON-GET) --> SUT
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_CON_GET}, false);
f_MBT_execute(c_COAP_stepName_send, valueof(t_addr(0, 0)), {}, false);
// Tester <-- CON-GET -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester -- ACK-205 --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_Content(ACKNOWLEDGEMENT)), USE_LAST_RECEIVED_MID, USE_LAST_RECEIVED_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind 205 -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName(205), valueof(t_addr(0, 0)), 3.0));
f_COAP_Tests_end();
}
testcase tc_send_CON_retransmit_CON_recv_ACK() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
f_MBT_execute(c_COAP_stepName_setRemoteAddress_byIntIdx, valueof(t_addr(0, 0)), {c_remoteAddr}, false);
// Tester -- call send(CON-GET) --> SUT
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_CON_GET}, false);
f_MBT_execute(c_COAP_stepName_send, valueof(t_addr(0, 0)), {}, false);
// Tester <-- CON-GET -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester <-- CON-GET -- SUT (retransmission)
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester <-- CON-GET -- SUT (retransmission)
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester -- ACK-205 --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_Content(ACKNOWLEDGEMENT)), USE_LAST_RECEIVED_MID, USE_LAST_RECEIVED_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind 205 -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName(205), valueof(t_addr(0, 0)), 3.0));
// Tester -- call cleanUp --> SUT
f_MBT_execute(c_COAP_stepName_cleanUp, valueof(t_addr(0, 0)), {}, false);
f_COAP_Tests_end();
}
testcase tc_send_CON_recv_emptyACK_recv_NON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
f_MBT_execute(c_COAP_stepName_setRemoteAddress_byIntIdx, valueof(t_addr(0, 0)), {c_remoteAddr}, false);
// Tester -- call send(CON-GET) --> SUT
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_CON_GET}, false);
f_MBT_execute(c_COAP_stepName_send, valueof(t_addr(0, 0)), {}, false);
// Tester <-- CON-GET -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester -- ACK-empty --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_ACK_Empty), USE_LAST_RECEIVED_MID, USE_GIVEN_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester -- NON-205 --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_Content(NON_CONFIRMABLE)), GENERATE_NEW_MID, USE_LAST_RECEIVED_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind 205 -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName(205), valueof(t_addr(0, 0)), 3.0));
f_COAP_Tests_end();
}
testcase tc_send_CON_recv_emptyACK_recv_CON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
f_MBT_execute(c_COAP_stepName_setRemoteAddress_byIntIdx, valueof(t_addr(0, 0)), {c_remoteAddr}, false);
// Tester -- call send(CON-GET) --> SUT
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_CON_GET}, false);
f_MBT_execute(c_COAP_stepName_send, valueof(t_addr(0, 0)), {}, false);
// Tester <-- CON-GET -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_CON_GET));
// Tester -- ACK-empty --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_ACK_Empty), USE_LAST_RECEIVED_MID, USE_GIVEN_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester -- CON-205 --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_Content(CONFIRMABLE)), GENERATE_NEW_MID, USE_LAST_RECEIVED_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <- ACK-empty -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_ACK_Empty));
// Tester <-- ind 205 -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName(205), valueof(t_addr(0, 0)), 3.0));
f_COAP_Tests_end();
}
testcase tc_call_startListening() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
f_COAP_Tests_end();
}
testcase tc_recv_NON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- NON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_NON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
f_COAP_Tests_end();
}
testcase tc_recv_NON_send_NON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- NON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_NON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
// Tester -- call sendResponse(NON-Content) --> SUT
f_MBT_execute(c_COAP_stepName_handleRequest, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_Content}, false);
f_MBT_execute(c_COAP_stepName_sendResponse, valueof(t_addr(0, 0)), {}, false);
// Tester <-- NON-Content -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_Content(NON_CONFIRMABLE)));
f_COAP_Tests_end();
}
testcase tc_recv_NON_recv_Duplicate_send_NON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- NON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_NON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
// Tester -- NON-GET-duplicate --> SUT
f_IFW_CoapPeer_send(peer);
f_delay(0.2);
// Tester -- call sendResponse(NON-Content) --> SUT
f_MBT_execute(c_COAP_stepName_handleRequest, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_Content}, false);
f_MBT_execute(c_COAP_stepName_sendResponse, valueof(t_addr(0, 0)), {}, false);
// Tester <-- NON-Content -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_Content(NON_CONFIRMABLE)));
f_COAP_Tests_end();
}
testcase tc_recv_NON_send_NON_recv_Duplicate() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- NON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_NON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
// Tester -- call sendResponse(NON-Content) --> SUT
f_MBT_execute(c_COAP_stepName_handleRequest, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_Content}, false);
f_MBT_execute(c_COAP_stepName_sendResponse, valueof(t_addr(0, 0)), {}, false);
// Tester <-- NON-Content -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_Content(NON_CONFIRMABLE)));
// Tester -- NON-GET-duplicate --> SUT
f_IFW_CoapPeer_send(peer);
f_delay(0.2);
f_COAP_Tests_end();
}
testcase tc_recv_NON_send_NON_wait_lifetime_recv_no_duplicate() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- NON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_NON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
// Tester -- call sendResponse(NON-Content) --> SUT
f_MBT_execute(c_COAP_stepName_handleRequest, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_Content}, false);
f_MBT_execute(c_COAP_stepName_sendResponse, valueof(t_addr(0, 0)), {}, false);
// Tester <-- NON-Content -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_Content(NON_CONFIRMABLE)));
// Wait for EXCHANGE_LIFETIME
f_delay(tsp_EPTF_COAP_EXCHANGE_LIFETIME+1.0);
// Tester -- NON-GET-(no duplicate anymore) --> SUT
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
f_COAP_Tests_end();
}
testcase tc_recv_CON() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- CON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_CON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
f_COAP_Tests_end();
}
testcase tc_recv_CON_send_ACK() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- CON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_CON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
// Tester -- call sendResponse(ACK-Content) --> SUT
f_MBT_execute(c_COAP_stepName_handleRequest, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_Content}, false);
f_MBT_execute(c_COAP_stepName_sendResponse, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ACK-Content -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_Content(ACKNOWLEDGEMENT)));
f_COAP_Tests_end();
}
testcase tc_recv_CON_recv_Duplicate_send_ACK() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- CON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_CON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
// Tester -- CON-GET-duplicate --> SUT
f_IFW_CoapPeer_send(peer);
f_delay(0.2);
// Tester -- call sendResponse(CON-Content) --> SUT
f_MBT_execute(c_COAP_stepName_handleRequest, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_Content}, false);
f_MBT_execute(c_COAP_stepName_sendResponse, valueof(t_addr(0, 0)), {}, false);
// Tester <-- NON-Content -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_Content(ACKNOWLEDGEMENT)));
f_COAP_Tests_end();
}
testcase tc_recv_CON_send_ACK_recv_Duplicate_retransmit_ACK() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- CON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_CON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
// Tester -- call sendResponse(ACK-Content) --> SUT
f_MBT_execute(c_COAP_stepName_handleRequest, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_Content}, false);
f_MBT_execute(c_COAP_stepName_sendResponse, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ACK-Content -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_Content(ACKNOWLEDGEMENT)));
// Tester -- CON-GET-duplicate --> SUT
f_IFW_CoapPeer_send(peer);
// Tester <-- ACK-Content-retransmit -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_Content(ACKNOWLEDGEMENT)));
f_COAP_Tests_end();
}
testcase tc_recv_CON_send_emptyACK() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- CON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_CON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
// Tester -- call sendAccept(ACK-empty) --> SUT
f_MBT_execute(c_COAP_stepName_handleRequest, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_sendAccept, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ACK-empty -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_ACK_Empty));
f_COAP_Tests_end();
}
testcase tc_recv_CON_send_emptyACK_send_CON_recv_ACK() runs on Tester_CT
{
f_COAP_Tests_begin();
var integer peer := f_IFW_addComponent(COAP_PEER, "tester");
f_IFW_CoapPeer_setRemote(peer, "sut");
f_IFW_initComponents();
// Tester -- call init --> SUT
f_MBT_execute(c_COAP_stepName_init, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_setLocalAddress, valueof(t_addr(0, 0)), {c_localAddr}, false);
// Tester -- call startListening --> SUT
f_MBT_execute(c_COAP_stepName_startListening, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ind transportSucc -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_transportSucc, valueof(t_addr(0, 0)), 3.0));
// Tester -- CON-GET --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_reg_CON_GET), GENERATE_NEW_MID, GENERATE_NEW_TOKEN);
f_IFW_CoapPeer_send(peer);
// Tester <-- ind GET -- SUT
f_handleVerdict(f_MBT_waitFor(c_COAP_behaviorType, c_COAP_eventName_GET, valueof(t_addr(0, -1)), 3.0));
// Tester -- call sendAccept(ACK-empty) --> SUT
f_MBT_execute(c_COAP_stepName_handleRequest, valueof(t_addr(0, 0)), {}, false);
f_MBT_execute(c_COAP_stepName_sendAccept, valueof(t_addr(0, 0)), {}, false);
// Tester <-- ACK-empty -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_ACK_Empty));
// Tester -- call sendResponse(CON-Content) --> SUT
f_MBT_execute(c_COAP_stepName_loadTemplate_byIntIdx, valueof(t_addr(0, 0)), {c_t_Content}, false);
f_MBT_execute(c_COAP_stepName_sendResponse, valueof(t_addr(0, 0)), {}, false);
// Tester <-- CON-Content -- SUT
f_IFW_CoapPeer_receive(peer);
f_handleVerdict(f_IFW_CoapPeer_check(peer, tr_Content(CONFIRMABLE), DO_NOT_CHECK_MID));
// Tester -- ACK-empty --> SUT
f_IFW_CoapPeer_setMessageToSend(peer, valueof(t_ACK_Empty), USE_LAST_RECEIVED_MID, USE_LAST_RECEIVED_TOKEN);
f_IFW_CoapPeer_send(peer);
f_COAP_Tests_end();
}
control
{
// SUT: client
execute(tc_send_NON());
execute(tc_send_NON_recv_NON());
execute(tc_send_CON());
execute(tc_retransmit_CON());
execute(tc_timeout_CON());
execute(tc_send_CON_recv_ACK());
execute(tc_send_CON_retransmit_CON_recv_ACK());
execute(tc_send_CON_recv_emptyACK_recv_NON());
execute(tc_send_CON_recv_emptyACK_recv_CON());
// SUT: server
execute(tc_call_startListening());
execute(tc_recv_NON());
execute(tc_recv_NON_send_NON());
execute(tc_recv_NON_recv_Duplicate_send_NON());
execute(tc_recv_NON_send_NON_recv_Duplicate());
execute(tc_recv_NON_send_NON_wait_lifetime_recv_no_duplicate());
execute(tc_recv_CON());
execute(tc_recv_CON_send_ACK());
execute(tc_recv_CON_recv_Duplicate_send_ACK());
execute(tc_recv_CON_send_ACK_recv_Duplicate_retransmit_ACK());
execute(tc_recv_CON_send_emptyACK());
execute(tc_recv_CON_send_emptyACK_send_CON_recv_ACK());
}
}