blob: 6739338592cd567ea0778774205535ba3af3d764 [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2019 Ericsson Telecom AB
//
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v2.0
// which accompanies this distribution, and is available at
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
///////////////////////////////////////////////////////////////////////////////
// File: Lwm2mTestSuite.ttcn
// Description:
// Rev: <RnXnn>
// Prodnr: CNL 113 xxx
// Updated: 2020-02-06
// Contact: http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
module Lwm2mTestSuite
{
import from IoT_FT_Framework_Definitions all;
import from IoT_FT_Framework_Functions all;
import from IFW_CoAP_Peer_Definitions all;
import from IFW_CoAP_Peer_TestSteps all;
import from CoAP_Types all;
import from LightweightM2M_Types all;
import from LightweightM2M_CoAP_Binding all;
import from IFW_Common all;
testcase tc_client_LightweightM2M_10_int_101_102_103_regdereg() runs on IFW_MAIN_CT
{
setverdict(pass);
var integer client := f_IFW_addComponent(COAP_PEER, "client");
f_IFW_CoapPeer_setRemote(client, "server");
f_IFW_initComponents();
f_IFW_CoapPeer_setMessageToSend(client, valueof(t_client_LightweightM2M_10_int_101_register));
f_IFW_CoapPeer_send(client);
f_IFW_CoapPeer_receive(client);
if (not f_IFW_CoapPeer_check(client, t_client_LightweightM2M_10_int_101_registered))
{
setverdict(fail); stop;
}
f_IFW_CoapPeer_saveLocationPath(client);
f_IFW_wait(3.0);
f_IFW_CoapPeer_setMessageToSend(client, valueof(t_client_LightweightM2M_10_int_102_update));
f_IFW_CoapPeer_addUriPath(client);
f_IFW_CoapPeer_send(client);
f_IFW_CoapPeer_receive(client);
if (not f_IFW_CoapPeer_check(client, t_client_LightweightM2M_10_int_102_updated))
{
setverdict(fail); stop;
}
f_IFW_wait(3.0);
f_IFW_CoapPeer_setMessageToSend(client, valueof(t_client_LightweightM2M_10_int_103_deregister));
f_IFW_CoapPeer_addUriPath(client);
f_IFW_CoapPeer_send(client);
f_IFW_CoapPeer_receive(client);
if (not f_IFW_CoapPeer_check(client, t_client_LightweightM2M_10_int_103_deregistered))
{
setverdict(fail); stop;
}
}
template CoAP_ReqResp t_client_LightweightM2M_10_int_101_register :=
{
header :=
{
version := 1,
msg_type := CONFIRMABLE,
code := METHOD_POST,
message_id := 0
},
token := ''O,
options :=
{
{
uri_path := "rd"
},
{
content_format := 40
},
{
uri_query := "ep=client1"
},
{
uri_query := "lt=60"
},
{
uri_query := "b=U"
}
},
payload := char2oct("</0/0>,</1/0>,</3/0>")
}
template CoAP_ReqResp t_client_LightweightM2M_10_int_101_registered :=
{
header :=
{
version := 1,
msg_type := ACKNOWLEDGEMENT,
code := RESPONSE_CODE_Created,
message_id := ?
},
token := ''O,
options := {},
payload := omit
}
template CoAP_ReqResp t_client_LightweightM2M_10_int_102_update :=
{
header :=
{
version := 1,
msg_type := CONFIRMABLE,
code := METHOD_PUT,
message_id := 0
},
token := ''O,
options :=
{
{
uri_query := "lt=60"
},
{
uri_query := "b=U"
}
},
payload := omit
}
template CoAP_ReqResp t_client_LightweightM2M_10_int_102_updated :=
{
header :=
{
version := 1,
msg_type := ACKNOWLEDGEMENT,
code := RESPONSE_CODE_Changed,
message_id := ?
},
token := ''O,
options := {},
payload := omit
}
template CoAP_ReqResp t_client_LightweightM2M_10_int_103_deregister :=
{
header :=
{
version := 1,
msg_type := CONFIRMABLE,
code := METHOD_DELETE,
message_id := 0
},
token := ''O,
options :=
{
},
payload := omit
}
template CoAP_ReqResp t_client_LightweightM2M_10_int_103_deregistered :=
{
header :=
{
version := 1,
msg_type := ACKNOWLEDGEMENT,
code := RESPONSE_CODE_Deleted,
message_id := ?
},
token := ''O,
options := {},
payload := omit
}
testcase tc_client_LightweightM2M_10_int_101_102_103_regdereg_dtls() runs on IFW_MAIN_CT
{
setverdict(pass);
var integer client := f_IFW_addComponent(COAP_PEER, "client");
f_IFW_CoapPeer_setRemote(client, "server");
// Setting DTLS parameters
var CoapContext v_ctx;
f_IFW_CoapPeer_getContext(client, v_ctx);
v_ctx.connectProtocol := { dtls := { udp := {} } };
v_ctx.connectOptions[sizeof(v_ctx.connectOptions)] := {
psk_options := {
psk_identity := "client1",
psk_identity_hint := omit,
psk_key := "01020304"
}
}
f_IFW_CoapPeer_setContext(client, v_ctx);
f_IFW_initComponents();
f_IFW_CoapPeer_setMessageToSend(client, valueof(t_client_LightweightM2M_10_int_101_register));
f_IFW_CoapPeer_send(client);
f_IFW_CoapPeer_receive(client);
if (not f_IFW_CoapPeer_check(client, t_client_LightweightM2M_10_int_101_registered))
{
setverdict(fail); stop;
}
f_IFW_CoapPeer_saveLocationPath(client);
f_IFW_wait(3.0);
f_IFW_CoapPeer_setMessageToSend(client, valueof(t_client_LightweightM2M_10_int_102_update));
f_IFW_CoapPeer_addUriPath(client);
f_IFW_CoapPeer_send(client);
f_IFW_CoapPeer_receive(client);
if (not f_IFW_CoapPeer_check(client, t_client_LightweightM2M_10_int_102_updated))
{
setverdict(fail); stop;
}
f_IFW_wait(3.0);
f_IFW_CoapPeer_setMessageToSend(client, valueof(t_client_LightweightM2M_10_int_103_deregister));
f_IFW_CoapPeer_addUriPath(client);
f_IFW_CoapPeer_send(client);
f_IFW_CoapPeer_receive(client);
if (not f_IFW_CoapPeer_check(client, t_client_LightweightM2M_10_int_103_deregistered))
{
setverdict(fail); stop;
}
}
testcase tc_client_LightweightM2M_10_int_101_102_103_regdereg_lwm2mPDU() runs on IFW_MAIN_CT
{
setverdict(pass);
var CoAP_ReqResp v_coap_encoded;
var integer client := f_IFW_addComponent(COAP_PEER, "client");
f_IFW_CoapPeer_setRemote(client, "server");
f_IFW_initComponents();
f_enc_LWM2M_to_COAP(valueof(t_client_LightweightM2M_10_int_101_register_lwm2mPDU), v_coap_encoded);
f_IFW_CoapPeer_setMessageToSend(client, v_coap_encoded);
f_IFW_CoapPeer_send(client);
f_IFW_CoapPeer_receive(client);
if (not f_IFW_CoapPeer_check(client, t_client_LightweightM2M_10_int_101_registered))
{
setverdict(fail); stop;
}
f_IFW_CoapPeer_saveLocationPath(client);
f_enc_LWM2M_to_COAP(valueof(t_client_LightweightM2M_10_int_102_update_lwm2mPDU), v_coap_encoded);
f_IFW_CoapPeer_setMessageToSend(client, v_coap_encoded);
f_IFW_CoapPeer_addUriPath(client);
f_IFW_CoapPeer_send(client);
f_IFW_CoapPeer_receive(client);
if (not f_IFW_CoapPeer_check(client, t_client_LightweightM2M_10_int_102_updated))
{
setverdict(fail); stop;
}
f_enc_LWM2M_to_COAP(valueof(t_client_LightweightM2M_10_int_103_deregister_lwm2mPDU), v_coap_encoded);
f_IFW_CoapPeer_setMessageToSend(client, v_coap_encoded);
f_IFW_CoapPeer_addUriPath(client);
f_IFW_CoapPeer_send(client);
f_IFW_CoapPeer_receive(client);
if (not f_IFW_CoapPeer_check(client, t_client_LightweightM2M_10_int_103_deregistered))
{
setverdict(fail); stop;
}
}
template LWM2M_PDU t_client_LightweightM2M_10_int_101_register_lwm2mPDU :=
{
Register :=
{
endpointClientName := "client1",
lifetime := 60,
version := omit,
bindingMode := U,
smsNumber := omit,
objectsAndObjectInstances :=
{
{0, 0, omit},
{1, 0, omit},
{3, 0, omit}
}
}
}
template LWM2M_PDU t_client_LightweightM2M_10_int_102_update_lwm2mPDU :=
{
Update :=
{
location := {},
lifetime := 60,
bindingMode := U,
smsNumber := omit,
objectsAndObjectInstances := {}
}
}
template LWM2M_PDU t_client_LightweightM2M_10_int_103_deregister_lwm2mPDU :=
{
Deregister :=
{
location := {}
}
}
testcase tc_json_encdec() runs on IFW_MAIN_CT
{
log("data: ",t_res);
var octetstring v_encoded := f_enc_LwM2M_JSON_Resources(valueof(t_res));
log("encoded: ", oct2char(v_encoded), "\n", v_encoded);
var LwM2M_JSON_Resources v_decoded := f_dec_LwM2M_JSON_Resources(v_encoded);
if (match(v_decoded, t_res)) { setverdict(pass)}
else { setverdict(fail) }
}
template LwM2M_JSON_Resources t_res :=
{
e := {
{ n := "0", sv := "sg" },
{ n := "7/1", bv := true },
{ n := "11", v := 4.0 }
}
}
control
{
execute(tc_client_LightweightM2M_10_int_101_102_103_regdereg());
execute(tc_client_LightweightM2M_10_int_101_102_103_regdereg_lwm2mPDU());
execute(tc_json_encdec());
}
}