| /////////////////////////////////////////////////////////////////////////////// |
| // |
| // 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()); |
| } |
| |
| } |