HTTP_Server component added
Signed-off-by: eantwuh <antal.wu-hen-chang@ericsson.com>
diff --git a/IFW_HTTP_Server_Definitions.ttcn b/IFW_HTTP_Server_Definitions.ttcn
new file mode 100644
index 0000000..4d8a3f6
--- /dev/null
+++ b/IFW_HTTP_Server_Definitions.ttcn
@@ -0,0 +1,63 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// 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: IFW_HTTP_Server_Definitions.ttcn
+// Description:
+// Rev: R1A
+// Prodnr: LPA 108 661
+// Updated: 2019-07-30
+// Contact: http://ttcn.ericsson.se
+///////////////////////////////////////////////////////////////////////////////
+module IFW_HTTP_Server_Definitions
+{
+
+ import from HTTPmsg_Types all;
+ import from IPL4asp_PortType all;
+ import from IFW_Common all;
+
+ type component IFW_HTTP_Server_CT extends IFW_BASE_CT
+ {
+ var HttpServerContext ctx := c_HttpServerContext_empty;
+
+ var HTTPMessage msgToSend := c_HTTPMessage_empty;
+ var HTTPMessage lastReceived := c_HTTPMessage_empty;
+
+ port IPL4asp_PT IPL4_PCO;
+ }
+
+ type record HttpServerContext
+ {
+ integer serverConnId,
+ integer clientConnId,
+ charstring localHost,
+ integer localPort,
+ charstring remoteHost,
+ integer remotePort
+ }
+ with { extension "done" }
+
+ const HttpServerContext c_HttpServerContext_empty :=
+ {
+ serverConnId := -1,
+ clientConnId := -1,
+ localHost := "",
+ localPort := -1,
+ remoteHost := "",
+ remotePort := -1
+ }
+
+ const HTTPMessage c_HTTPMessage_empty :=
+ {
+ erronous_msg :=
+ {
+ client_id := omit,
+ msg := ""
+ }
+ }
+}
diff --git a/IFW_HTTP_Server_Functions.ttcn b/IFW_HTTP_Server_Functions.ttcn
new file mode 100644
index 0000000..4f1574b
--- /dev/null
+++ b/IFW_HTTP_Server_Functions.ttcn
@@ -0,0 +1,162 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// 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: IFW_HTTP_Server_Functions.ttcn
+// Description:
+// Rev: R1A
+// Prodnr: LPA 108 661
+// Updated: 2019-07-30
+// Contact: http://ttcn.ericsson.se
+///////////////////////////////////////////////////////////////////////////////
+module IFW_HTTP_Server_Functions
+{
+ import from IFW_HTTP_Server_Definitions all;
+ import from HTTPmsg_Types all;
+ import from IPL4asp_Types all;
+ import from IPL4asp_PortType all;
+ import from IFW_Common all;
+ import from TCCMessageHandling_Functions all;
+ import from HTTPmsg_MessageLen all;
+
+ function f_HTTP_Server_init() runs on IFW_HTTP_Server_CT
+ {
+ log(%definitionId, " started");
+ var Result vl_result;
+
+ log("Mapping started");
+ map(self:IPL4_PCO,system:IPL4_PCO);
+ var f_IPL4_getMsgLen vl_f := refers(f_HTTP_Server_getMessageLength);
+ f_IPL4_setGetMsgLen(IPL4_PCO, -1, vl_f, {});
+
+ log("Creating the server socket");
+ vl_result := f_IPL4_listen(IPL4_PCO, ctx.localHost, ctx.localPort, {tcp := {}}, {{reuseAddress := {enable := true}}});
+ f_checkResult(vl_result);
+ ctx.serverConnId := vl_result.connId;
+
+ log(%definitionId, " finished");
+ }
+
+ function f_HTTP_Server_cleanUp() runs on IFW_HTTP_Server_CT
+ {
+ log(%definitionId, " started");
+ var Result vl_result;
+
+ log("Closing connection");
+ if (ctx.serverConnId >= 0)
+ {
+ vl_result := f_IPL4_close(IPL4_PCO, ctx.serverConnId, {tcp := {}});
+ //f_checkResult(vl_result);
+ }
+
+ log(%definitionId, " finished");
+ }
+
+ function f_HTTP_Server_getContext() runs on IFW_HTTP_Server_CT
+ return HttpServerContext
+ {
+ return ctx;
+ }
+
+ function f_HTTP_Server_setContext(in HttpServerContext p_ctx) runs on IFW_HTTP_Server_CT
+ {
+ ctx := p_ctx;
+ }
+
+ function f_HTTP_Server_setMessageToSend(in HTTPMessage p_msg) runs on IFW_HTTP_Server_CT
+ {
+ msgToSend := p_msg;
+ }
+
+ function f_HTTP_Server_send() runs on IFW_HTTP_Server_CT
+ {
+ var octetstring v_encoded;
+
+ v_encoded := enc_HTTPMessage(msgToSend);
+
+ var ASP_SendTo vl_send;
+
+ vl_send.connId := ctx.clientConnId;
+ vl_send.remName := ctx.remoteHost;
+ vl_send.remPort := ctx.remotePort;
+ vl_send.proto := {tcp := {}}
+
+ vl_send.msg := v_encoded;
+
+ log("HTTP PDU: ", msgToSend);
+ log("IPL4 PDU: ", vl_send);
+ IPL4_PCO.send(vl_send);
+ }
+
+ function f_HTTP_Server_receive(in float p_maxWait := 10.0) runs on IFW_HTTP_Server_CT
+ {
+ timer t_Timeout := p_maxWait;
+ if (p_maxWait > 0.0) { t_Timeout.start; }
+
+ var ASP_RecvFrom v_ipl4Recv;
+ var ASP_Event v_ipl4Event;
+
+ alt
+ {
+ [] IPL4_PCO.receive(ASP_RecvFrom:?) -> value v_ipl4Recv
+ {
+ log("Received: ", v_ipl4Recv);
+
+ if (ispresent(v_ipl4Recv.connId)) { ctx.clientConnId := v_ipl4Recv.connId; }
+
+ var HTTPMessage v_httpMsg;
+ dec_HTTPMessage(v_ipl4Recv.msg, v_httpMsg);
+
+ lastReceived := v_httpMsg;
+ ctx.remoteHost := v_ipl4Recv.remName;
+ ctx.remotePort := v_ipl4Recv.remPort;
+ log("IPL4 PDU: ", lastReceived);
+ log("HTTP PDU: ", v_httpMsg);
+ }
+ [] IPL4_PCO.receive(ASP_Event:?) -> value v_ipl4Event
+ {
+ log("Received: ", v_ipl4Event);
+ repeat;
+ }
+ [] t_Timeout.timeout
+ {
+ lastReceived := c_HTTPMessage_empty;
+ }
+ }
+ }
+
+ function f_HTTP_Server_check(in template HTTPMessage p_expected) runs on IFW_HTTP_Server_CT
+ return ReturnBoolean
+ {
+ if (not match(lastReceived, p_expected))
+ {
+ log("CHECK: last received is not matching with expected template");
+ return false;
+ }
+
+ log("CHECK: return true");
+ return true;
+ }
+
+ function f_HTTP_Server_getMessageLength(in octetstring stream, inout ro_integer args)
+ return integer
+ {
+ // return f_TCCMessageHandling_getMessageLength(stream)
+ return f_HTTPMessage_len(stream);
+ }
+
+ function f_HTTP_lookupHeader(charstring p_headerName, in HeaderLines p_headers)
+ return integer
+ {
+ for (var integer i:=0; i<sizeof(p_headers); i:=i+1)
+ {
+ if (p_headers[i].header_name == p_headerName) { return i; }
+ }
+ return -1;
+ }
+}
diff --git a/IFW_HTTP_Server_TestSteps.ttcn b/IFW_HTTP_Server_TestSteps.ttcn
new file mode 100644
index 0000000..8024807
--- /dev/null
+++ b/IFW_HTTP_Server_TestSteps.ttcn
@@ -0,0 +1,130 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// 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: IFW_HTTP_Server_TestSteps.ttcn
+// Description:
+// Rev: R1A
+// Prodnr: LPA 108 661
+// Updated: 2019-07-30
+// Contact: http://ttcn.ericsson.se
+///////////////////////////////////////////////////////////////////////////////
+module IFW_HTTP_Server_TestSteps
+{
+
+ import from IoT_FT_Framework_Definitions all;
+ import from IFW_Common all;
+ import from IFW_HTTP_Server_Definitions all;
+ import from IFW_HTTP_Server_Functions all;
+ import from HTTPmsg_Types all;
+
+ function f_IFW_HttpServer_init(in integer p_serverIdx) runs on IFW_MAIN_CT
+ return boolean
+ {
+ var IFW_HTTP_Server_CT v_server := httpServers[p_serverIdx];
+ if (v_server == null) { log("IFW: No http server found"); return false; }
+ f_isRunningGuard(v_server);
+
+ v_server.start(f_HTTP_Server_init());
+ v_server.done;
+
+ return true;
+ }
+
+ function f_IFW_HttpServer_cleanUp(in integer p_serverIdx) runs on IFW_MAIN_CT
+ return boolean
+ {
+ var IFW_HTTP_Server_CT v_server := httpServers[p_serverIdx];
+ if (v_server == null) { log("IFW: No http server found"); return false; }
+ f_isRunningGuard(v_server);
+
+ v_server.start(f_HTTP_Server_cleanUp());
+ v_server.done;
+
+ return true;
+ }
+
+ function f_IFW_HttpServer_getContext(in integer p_serverIdx, out HttpServerContext p_httpServerContext) runs on IFW_MAIN_CT
+ return boolean
+ {
+ var IFW_HTTP_Server_CT v_server := httpServers[p_serverIdx];
+ if (v_server == null) { log("IFW: No http server found"); return false; }
+ f_isRunningGuard(v_server);
+
+ v_server.start(f_HTTP_Server_getContext());
+ v_server.done(HttpServerContext:?) -> value p_httpServerContext;
+
+ return true;
+ }
+
+ function f_IFW_HttpServer_setContext(in integer p_serverIdx, in HttpServerContext p_httpServerContext) runs on IFW_MAIN_CT
+ return boolean
+ {
+ var IFW_HTTP_Server_CT v_server := httpServers[p_serverIdx];
+ if (v_server == null) { log("IFW: No http server found"); return false; }
+ f_isRunningGuard(v_server);
+
+ v_server.start(f_HTTP_Server_setContext(p_httpServerContext));
+ v_server.done;
+
+ return true;
+ }
+
+ function f_IFW_HttpServer_setMessageToSend(in integer p_serverIdx, HTTPMessage p_msg) runs on IFW_MAIN_CT
+ return boolean
+ {
+ var IFW_HTTP_Server_CT v_server := httpServers[p_serverIdx];
+ if (v_server == null) { log("IFW: No http server found"); return false; }
+ f_isRunningGuard(v_server);
+
+ v_server.start(f_HTTP_Server_setMessageToSend(p_msg));
+ v_server.done;
+
+ return true;
+ }
+
+ function f_IFW_HttpServer_send(in integer p_serverIdx) runs on IFW_MAIN_CT
+ return boolean
+ {
+ var IFW_HTTP_Server_CT v_server := httpServers[p_serverIdx];
+ if (v_server == null) { log("IFW: No http server found"); return false; }
+ f_isRunningGuard(v_server);
+
+ v_server.start(f_HTTP_Server_send());
+ v_server.done;
+
+ return true;
+ }
+
+ function f_IFW_HttpServer_receive(in integer p_serverIdx) runs on IFW_MAIN_CT
+ return boolean
+ {
+ var IFW_HTTP_Server_CT v_server := httpServers[p_serverIdx];
+ if (v_server == null) { log("IFW: No http server found"); return false; }
+ f_isRunningGuard(v_server);
+
+ v_server.start(f_HTTP_Server_receive());
+ v_server.done;
+
+ return true;
+ }
+
+ function f_IFW_HttpServer_check(in integer p_serverIdx, template HTTPMessage p_msg) runs on IFW_MAIN_CT
+ return boolean
+ {
+ var boolean v_ret;
+ var IFW_HTTP_Server_CT v_server := httpServers[p_serverIdx];
+ if (v_server == null) { log("IFW: No http server found"); return false; }
+ f_isRunningGuard(v_server);
+
+ v_server.start(f_HTTP_Server_check(p_msg));
+ v_server.done(ReturnBoolean:?) -> value v_ret;
+
+ return v_ret;
+ }
+}
diff --git a/IoT_FT_Framework_Definitions.ttcn b/IoT_FT_Framework_Definitions.ttcn
index 499f936..6beb4c8 100644
--- a/IoT_FT_Framework_Definitions.ttcn
+++ b/IoT_FT_Framework_Definitions.ttcn
@@ -11,34 +11,38 @@
// Description:
// Rev: R1A
// Prodnr: LPA 108 661
-// Updated: 2017-09-01
+// Updated: 2019-08-28
// Contact: http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
module IoT_FT_Framework_Definitions
{
- import from IFW_Common all;
- import from IFW_CoAP_Peer_Definitions all;
- import from IFW_HTTP_Client_Definitions all;
- import from IFW_MQTT_Client_Definitions all;
+ import from IFW_Common all;
+ import from IFW_CoAP_Peer_Definitions all;
+ import from IFW_HTTP_Client_Definitions all;
+ import from IFW_HTTP_Server_Definitions all;
+ import from IFW_MQTT_Client_Definitions all;
- type component IFW_MAIN_CT
- extends IFW_BASE_CT
- {
- var IFW_COAP_CT_List coapPeers := {};
- var IFW_HTTP_Client_CT_List httpClients := {};
- var IFW_MQTT_Client_CT_List mqttClients := {};
+ type component IFW_MAIN_CT
+ extends IFW_BASE_CT
+ {
+ var IFW_COAP_CT_List coapPeers := {};
+ var IFW_HTTP_Client_CT_List httpClients := {};
+ var IFW_HTTP_Server_CT_List httpServers := {};
+ var IFW_MQTT_Client_CT_List mqttClients := {};
- var integer mid := 0;
- }
+ var integer mid := 0;
+ }
- type record of IFW_COAP_CT IFW_COAP_CT_List;
- type record of IFW_HTTP_Client_CT IFW_HTTP_Client_CT_List;
- type record of IFW_MQTT_Client_CT IFW_MQTT_Client_CT_List;
+ type record of IFW_COAP_CT IFW_COAP_CT_List;
+ type record of IFW_HTTP_Client_CT IFW_HTTP_Client_CT_List;
+ type record of IFW_HTTP_Server_CT IFW_HTTP_Server_CT_List;
+ type record of IFW_MQTT_Client_CT IFW_MQTT_Client_CT_List;
- type enumerated IFW_ComponentTypes
- {
- COAP_PEER,
- HTTP_CLIENT,
- MQTT_CLIENT
- }
+ type enumerated IFW_ComponentTypes
+ {
+ COAP_PEER,
+ HTTP_CLIENT,
+ HTTP_SERVER,
+ MQTT_CLIENT
+ }
}
diff --git a/IoT_FT_Framework_Functions.ttcn b/IoT_FT_Framework_Functions.ttcn
index 3d31535..4960d5f 100644
--- a/IoT_FT_Framework_Functions.ttcn
+++ b/IoT_FT_Framework_Functions.ttcn
@@ -11,129 +11,164 @@
// Description:
// Rev: R1A
// Prodnr: LPA 108 661
-// Updated: 2017-09-01
+// Updated: 2019-07-30
// Contact: http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
module IoT_FT_Framework_Functions
{
- import from IoT_FT_Framework_Definitions all;
- import from IFW_CoAP_Peer_Definitions all;
- import from IFW_CoAP_Peer_TestSteps all;
- import from IFW_HTTP_Client_Definitions all;
- import from IFW_HTTP_Client_TestSteps all;
- import from IFW_MQTT_Client_Definitions all;
- import from IFW_MQTT_Client_TestSteps all;
- import from IFW_Common all;
+ import from IoT_FT_Framework_Definitions all;
+ import from IFW_CoAP_Peer_Definitions all;
+ import from IFW_CoAP_Peer_TestSteps all;
+ import from IFW_HTTP_Client_Definitions all;
+ import from IFW_HTTP_Client_TestSteps all;
+ import from IFW_HTTP_Server_Definitions all;
+ import from IFW_HTTP_Server_TestSteps all;
+ import from IFW_MQTT_Client_Definitions all;
+ import from IFW_MQTT_Client_TestSteps all;
+ import from IFW_Common all;
- function f_IFW_addComponent(IFW_ComponentTypes p_componentType, charstring p_addrId := "")
- runs on IFW_MAIN_CT
- return integer
- {
- if (p_componentType == COAP_PEER) {
- return f_IFW_addCoapPeerComponent(p_addrId);
- }
- else if (p_componentType == HTTP_CLIENT)
- {
- return f_IFW_addHttpClientComponent(p_addrId);
- }
- else if (p_componentType == MQTT_CLIENT)
- {
- return f_IFW_addMqttClientComponent(p_addrId);
- }
-
- return -1;
- }
+ function f_IFW_addComponent(IFW_ComponentTypes p_componentType, charstring p_addrId := "")
+ runs on IFW_MAIN_CT
+ return integer
+ {
+ if (p_componentType == COAP_PEER)
+ {
+ return f_IFW_addCoapPeerComponent(p_addrId);
+ }
+ else if (p_componentType == HTTP_CLIENT)
+ {
+ return f_IFW_addHttpClientComponent(p_addrId);
+ }
+ else if (p_componentType == HTTP_SERVER)
+ {
+ return f_IFW_addHttpServerComponent(p_addrId);
+ }
+ else if (p_componentType == MQTT_CLIENT)
+ {
+ return f_IFW_addMqttClientComponent(p_addrId);
+ }
+
+ return -1;
+ }
- function f_IFW_addCoapPeerComponent(charstring p_addrId := "") runs on IFW_MAIN_CT
- return integer
- {
- var IFW_COAP_CT v_peer := IFW_COAP_CT.create alive;
- var integer v_peerIdx := sizeof(coapPeers);
-
- coapPeers[v_peerIdx] := v_peer;
-
- var NamedHostPort v_addr;
- if (f_lookupAddress(p_addrId, v_addr))
- {
- var CoapContext v_ctx;
- f_IFW_CoapPeer_getContext(v_peerIdx, v_ctx);
- v_ctx.localHost := v_addr.hostName;
- v_ctx.localPort := v_addr.portNumber;
-
- f_IFW_CoapPeer_setContext(v_peerIdx, v_ctx);
- }
-
- return v_peerIdx;
- }
+ function f_IFW_addCoapPeerComponent(charstring p_addrId := "") runs on IFW_MAIN_CT
+ return integer
+ {
+ var IFW_COAP_CT v_peer := IFW_COAP_CT.create alive;
+ var integer v_peerIdx := sizeof(coapPeers);
+
+ coapPeers[v_peerIdx] := v_peer;
+
+ var NamedHostPort v_addr;
+ if (f_lookupAddress(p_addrId, v_addr))
+ {
+ var CoapContext v_ctx;
+ f_IFW_CoapPeer_getContext(v_peerIdx, v_ctx);
+ v_ctx.localHost := v_addr.hostName;
+ v_ctx.localPort := v_addr.portNumber;
+
+ f_IFW_CoapPeer_setContext(v_peerIdx, v_ctx);
+ }
+
+ return v_peerIdx;
+ }
- function f_IFW_addHttpClientComponent(charstring p_addrId := "") runs on IFW_MAIN_CT
- return integer
- {
- var IFW_HTTP_Client_CT v_client := IFW_HTTP_Client_CT.create alive;
- var integer v_clientIdx := sizeof(httpClients);
-
- httpClients[v_clientIdx] := v_client;
-
- var NamedHostPort v_addr;
- if (f_lookupAddress(p_addrId, v_addr))
- {
- var HttpClientContext v_ctx;
- f_IFW_HttpClient_getContext(v_clientIdx, v_ctx);
- v_ctx.localHost := v_addr.hostName;
- v_ctx.localPort := v_addr.portNumber;
-
- f_IFW_HttpClient_setContext(v_clientIdx, v_ctx);
- }
-
- return v_clientIdx;
- }
+ function f_IFW_addHttpClientComponent(charstring p_addrId := "") runs on IFW_MAIN_CT
+ return integer
+ {
+ var IFW_HTTP_Client_CT v_client := IFW_HTTP_Client_CT.create alive;
+ var integer v_clientIdx := sizeof(httpClients);
+
+ httpClients[v_clientIdx] := v_client;
+
+ var NamedHostPort v_addr;
+ if (f_lookupAddress(p_addrId, v_addr))
+ {
+ var HttpClientContext v_ctx;
+ f_IFW_HttpClient_getContext(v_clientIdx, v_ctx);
+ v_ctx.localHost := v_addr.hostName;
+ v_ctx.localPort := v_addr.portNumber;
+
+ f_IFW_HttpClient_setContext(v_clientIdx, v_ctx);
+ }
+
+ return v_clientIdx;
+ }
- function f_IFW_addMqttClientComponent(charstring p_addrId := "") runs on IFW_MAIN_CT
- return integer
- {
- var IFW_MQTT_Client_CT v_client := IFW_MQTT_Client_CT.create alive;
- var integer v_clientIdx := sizeof(mqttClients);
-
- mqttClients[v_clientIdx] := v_client;
-
- var NamedHostPort v_addr;
- if (f_lookupAddress(p_addrId, v_addr))
- {
- var MqttClientContext v_ctx;
- f_IFW_MqttClient_getContext(v_clientIdx, v_ctx);
- v_ctx.localHost := v_addr.hostName;
- v_ctx.localPort := v_addr.portNumber;
-
- f_IFW_MqttClient_setContext(v_clientIdx, v_ctx);
- }
-
- return v_clientIdx;
- }
+ function f_IFW_addHttpServerComponent(charstring p_addrId := "") runs on IFW_MAIN_CT
+ return integer
+ {
+ var IFW_HTTP_Server_CT v_server := IFW_HTTP_Server_CT.create alive;
+ var integer v_serverIdx := sizeof(httpServers);
+
+ httpServers[v_serverIdx] := v_server;
+
+ var NamedHostPort v_addr;
+ if (f_lookupAddress(p_addrId, v_addr))
+ {
+ var HttpServerContext v_ctx;
+ f_IFW_HttpServer_getContext(v_serverIdx, v_ctx);
+ v_ctx.localHost := v_addr.hostName;
+ v_ctx.localPort := v_addr.portNumber;
+
+ f_IFW_HttpServer_setContext(v_serverIdx, v_ctx);
+ }
+
+ return v_serverIdx;
+ }
- function f_IFW_initComponents() runs on IFW_MAIN_CT
- {
- setverdict(pass);
- mid := float2int(int2float(65000)*rnd());
-
- for (var integer i:=0; i<sizeof(coapPeers); i:=i+1) {
- f_IFW_CoapPeer_init(i);
- }
- for (var integer i:=0; i<sizeof(httpClients); i:=i+1) {
- f_IFW_HttpClient_init(i);
- }
- for (var integer i:=0; i<sizeof(mqttClients); i:=i+1) {
- f_IFW_MqttClient_init(i);
- }
- }
+ function f_IFW_addMqttClientComponent(charstring p_addrId := "") runs on IFW_MAIN_CT
+ return integer
+ {
+ var IFW_MQTT_Client_CT v_client := IFW_MQTT_Client_CT.create alive;
+ var integer v_clientIdx := sizeof(mqttClients);
+
+ mqttClients[v_clientIdx] := v_client;
+
+ var NamedHostPort v_addr;
+ if (f_lookupAddress(p_addrId, v_addr))
+ {
+ var MqttClientContext v_ctx;
+ f_IFW_MqttClient_getContext(v_clientIdx, v_ctx);
+ v_ctx.localHost := v_addr.hostName;
+ v_ctx.localPort := v_addr.portNumber;
+
+ f_IFW_MqttClient_setContext(v_clientIdx, v_ctx);
+ }
+
+ return v_clientIdx;
+ }
- function f_IFW_cleanUp() runs on IFW_MAIN_CT
- {
- for (var integer i:=0; i<sizeof(httpClients); i:=i+1) {
- f_IFW_HttpClient_cleanUp(i);
- }
- for (var integer i:=0; i<sizeof(mqttClients); i:=i+1) {
- f_IFW_MqttClient_cleanUp(i);
- }
- stop;
- }
+ function f_IFW_initComponents() runs on IFW_MAIN_CT
+ {
+ setverdict(pass);
+ mid := float2int(int2float(65000)*rnd());
+
+ for (var integer i:=0; i<sizeof(coapPeers); i:=i+1) {
+ f_IFW_CoapPeer_init(i);
+ }
+ for (var integer i:=0; i<sizeof(httpClients); i:=i+1) {
+ f_IFW_HttpClient_init(i);
+ }
+ for (var integer i:=0; i<sizeof(httpServers); i:=i+1) {
+ f_IFW_HttpServer_init(i);
+ }
+ for (var integer i:=0; i<sizeof(mqttClients); i:=i+1) {
+ f_IFW_MqttClient_init(i);
+ }
+ }
+
+ function f_IFW_cleanUp() runs on IFW_MAIN_CT
+ {
+ for (var integer i:=0; i<sizeof(httpClients); i:=i+1) {
+ f_IFW_HttpClient_cleanUp(i);
+ }
+ for (var integer i:=0; i<sizeof(httpServers); i:=i+1) {
+ f_IFW_HttpServer_cleanUp(i);
+ }
+ for (var integer i:=0; i<sizeof(mqttClients); i:=i+1) {
+ f_IFW_MqttClient_cleanUp(i);
+ }
+ stop;
+ }
}
diff --git a/IoT_Functiontest_Framework.tpd b/IoT_Functiontest_Framework.tpd
index ceba740..bc7b688 100644
--- a/IoT_Functiontest_Framework.tpd
+++ b/IoT_Functiontest_Framework.tpd
@@ -11,7 +11,7 @@
Description: tpd project file
Rev: <RnXnn>
Prodnr: LPA108661
- Updated: 2018-05-31
+ Updated: 2019-08-28
Contact: http://ttcn.ericsson.se
-->
<ProjectName>IoT_Functiontest_Framework</ProjectName>
@@ -31,6 +31,9 @@
<FileResource projectRelativePath="IFW_HTTP_Client_Definitions.ttcn" relativeURI="IFW_HTTP_Client_Definitions.ttcn"/>
<FileResource projectRelativePath="IFW_HTTP_Client_Functions.ttcn" relativeURI="IFW_HTTP_Client_Functions.ttcn"/>
<FileResource projectRelativePath="IFW_HTTP_Client_TestSteps.ttcn" relativeURI="IFW_HTTP_Client_TestSteps.ttcn"/>
+ <FileResource projectRelativePath="IFW_HTTP_Server_Definitions.ttcn" relativeURI="IFW_HTTP_Server_Definitions.ttcn"/>
+ <FileResource projectRelativePath="IFW_HTTP_Server_Functions.ttcn" relativeURI="IFW_HTTP_Server_Functions.ttcn"/>
+ <FileResource projectRelativePath="IFW_HTTP_Server_TestSteps.ttcn" relativeURI="IFW_HTTP_Server_TestSteps.ttcn"/>
<FileResource projectRelativePath="IFW_MQTT_Client_Definitions.ttcn" relativeURI="IFW_MQTT_Client_Definitions.ttcn"/>
<FileResource projectRelativePath="IFW_MQTT_Client_Functions.ttcn" relativeURI="IFW_MQTT_Client_Functions.ttcn"/>
<FileResource projectRelativePath="IFW_MQTT_Client_TestSteps.ttcn" relativeURI="IFW_MQTT_Client_TestSteps.ttcn"/>