Adding unit test cases for oickeepalive file 56/236356/1
authorSourav Bhuwalka <s.bhuwalka@samsung.com>
Thu, 23 Apr 2020 00:55:08 +0000 (06:25 +0530)
committerSudipto <sudipto.bal@samsung.com>
Tue, 16 Jun 2020 10:38:21 +0000 (16:08 +0530)
New file containing unit test cases for oickeepalive file is
added

https://github.sec.samsung.net/RS7-IOTIVITY/IoTivity/pull/685
(cherry-picked from d341b70f69a6969cfd6a6134d7492a082d5d5365)

Change-Id: If96e0b9856d3360b1082adc91da8387b04efa0bd
Signed-off-by: Sudipto <sudipto.bal@samsung.com>
resource/csdk/stack/test/SConscript
resource/csdk/stack/test/oickeepalive_test.cpp [new file with mode: 0644]

index 74bf390..309dfee 100644 (file)
@@ -68,8 +68,9 @@ else:
 ######################################################################
 stacktests = stacktest_env.Program('stacktests', ['stacktests.cpp'])
 cbortests = stacktest_env.Program('cbortests', ['cbortests.cpp'])
+keepalivetests = stacktest_env.Program('keepalivetests', ['oickeepalive_test.cpp'])
 
-Alias("test", [stacktests, cbortests])
+Alias("test", [stacktests, cbortests, keepalivetests])
 
 
 stacktest_env.AppendTarget('test')
@@ -81,3 +82,6 @@ if stacktest_env.get('TEST') == '1':
                 run_test(stacktest_env,
                          'resource_csdk_stack_test.memcheck',
                          'resource/csdk/stack/test/stacktests')
+                run_test(stacktest_env,
+                         'resource_csdk_stack_keepalivetests.memcheck',
+                         'resource/csdk/stack/test/keepalivetests')
diff --git a/resource/csdk/stack/test/oickeepalive_test.cpp b/resource/csdk/stack/test/oickeepalive_test.cpp
new file mode 100644 (file)
index 0000000..9b340ae
--- /dev/null
@@ -0,0 +1,262 @@
+/* ****************************************************************
+ *
+ * Copyright 2020 Samsung Electronics All Rights Reserved.
+ *
+ *
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************/
+#include <gtest/gtest.h>
+#include <stdio.h>
+#include <string.h>
+#include "ocserverrequest.h"
+#include "oickeepalive.h"
+#include "oickeepaliveinternal.h"
+#include "oic_malloc.h"
+#include "oic_string.h"
+#include "oic_time.h"
+#include "ocstackinternal.h"
+#include "ocpayloadcbor.h"
+#include "ocpayload.h"
+#include "ocresourcehandler.h"
+#include "gtest_helper.h"
+
+OCStackApplicationResult callbackFunc(void* ctx,
+        OCDoHandle handle, OCClientResponse * clientResponse)
+{
+       
+}
+TEST(KeepAliveInitialiseTest, OCInitializeKeepAlive)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+}
+TEST(KeepAliveTerminateTest, OCTerminateKeepAlive)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    EXPECT_EQ(OC_STACK_OK, OCTerminateKeepAlive(OC_SERVER));
+}
+TEST(FindKeepAliveResourceTest, OCFindKeepAliveResource)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    OCDoHandle handle;
+    char *remoteAddr = "coaps+tcp://[fe80::224:54ff:fe98:80d2%25enp6s0]:59384";
+    OCCallbackData cbData;
+    cbData.cb = callbackFunc;
+    EXPECT_EQ(OC_STACK_OK, OCFindKeepAliveResource(&handle, remoteAddr, &cbData));
+}
+TEST(OCHandleKeepAliveResponseTest, OCHandleKeepAliveResponse)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    CAEndpoint_t* tempRep = NULL;
+    CACreateEndpoint(CA_IPV4, CA_ADAPTER_TCP, "127.0.0.1", 5683, &tempRep);
+    OCPayload payload;
+    payload.type = PAYLOAD_TYPE_REPRESENTATION;
+    EXPECT_EQ(OC_STACK_OK, OCHandleKeepAliveResponse(tempRep, &payload));
+}
+TEST(OCProcessKeepAliveTest, OCProcessKeepAlive)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    char query[] = "?rt=core.light";
+    char address[] = "127.0.0.1";
+    OCServerRequest *request;
+    OCResource resource;
+    const char devicename1[] = "device name";
+    OCRepPayload *device = OCRepPayloadCreate();
+    OCRepPayloadAddResourceType(device, "oic.d.tv");
+    OCRepPayloadSetPropString(device, OC_RSRVD_SPEC_VERSION, OC_SPEC_VERSION);
+    OCRepPayloadSetPropInt(device, "in", 0);
+    OCRepPayloadSetPropString(device, "x.org.iotivity.newproperty", "value");
+    size_t dim[MAX_REP_ARRAY_DEPTH] = {1, 0, 0};
+    char **dt = (char **)OICMalloc(sizeof(char *) * 1);
+    dt[0] = OICStrdup(OC_DATA_MODEL_VERSION);
+    OCRepPayloadSetStringArray(device, OC_RSRVD_DATA_MODEL_VERSION, (const char **)dt, dim);
+    OICFree(dt[0]);
+    OICFree(dt);
+    uint8_t* cborData;
+    size_t cborSize;
+    OCPayload* parsedDevice;
+    OCConvertPayload((OCPayload*)device, &cborData, &cborSize);
+    request = (OCServerRequest *) OICCalloc(1, sizeof(OCServerRequest) +
+        (cborSize ? cborSize : 1) - 1);
+    request->method = OC_REST_PUT;
+    strncpy(request->query, query, sizeof(query));
+    request->devAddr.flags = OC_DEFAULT_FLAGS;
+    request->devAddr.adapter = OC_DEFAULT_ADAPTER;
+    strncpy(request->devAddr.addr, address, sizeof(query));
+    request->devAddr.port = 5364;
+    request->qos = OC_LOW_QOS;
+    request->coapID = 0;
+    request->delayedResNeeded = 0;
+    request->requestId = 0x1234;
+    request->payloadSize = cborSize;
+    memcpy(request->payload, cborData, cborSize);
+    OCHandleKeepAliveRequest(request, &resource);
+    EXPECT_EQ(OC_STACK_OK, OCProcess());
+}
+TEST(HandleKeepAliveGetRequestErrorWithObservation, OCHandleKeepAliveRequest)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    EXPECT_EQ(OC_STACK_OK, OCInitializeKeepAlive(OC_SERVER));
+    char query[] = "?rt=core.light";
+    char address[] = "127.0.0.1";
+    char uri[] = "/oic/ping";
+    OCServerRequest request;
+    request.method = OC_REST_GET;
+    strncpy(request.query, query, sizeof(query)+1);
+    strncpy(request.resourceUrl, uri, 63);
+    request.devAddr.flags = OC_IP_USE_V4;
+    request.devAddr.adapter = OC_ADAPTER_TCP;
+    strncpy(request.devAddr.addr, address, sizeof(query)+1);
+    request.devAddr.port = 5364;
+    request.qos = OC_LOW_QOS;
+    request.coapID = 0;
+    request.delayedResNeeded = 0;
+    request.requestId = 0x1234;
+    request.observationOption = 1;
+    OCResource resource;
+    OCServerRequest *ActualRequest;
+    EXPECT_EQ(OC_STACK_ERROR,OCHandleKeepAliveRequest(&request, &resource));
+}
+TEST(HandleKeepAliveGetRequestWithoutObservation, OCHandleKeepAliveRequest)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    char query[] = "?rt=core.light";
+    char address[] = "127.0.0.1";
+    OCServerRequest request;
+    request.method = OC_REST_GET;
+    strncpy(request.query, query, sizeof(query));
+    request.devAddr.flags = OC_DEFAULT_FLAGS;
+    request.devAddr.adapter = OC_DEFAULT_ADAPTER;
+    strncpy(request.devAddr.addr, address, sizeof(query));
+    request.devAddr.port = 5364;
+    request.qos = OC_LOW_QOS;
+    request.coapID = 0;
+    request.delayedResNeeded = 0;
+    request.observationOption = 6;
+    request.requestId = 0x1234;
+    OCResource resource;
+    EXPECT_EQ(OC_STACK_ERROR, OCHandleKeepAliveRequest(&request, &resource));
+}
+TEST(HandleKeepAlivePutRequestError, OCHandleKeepAliveRequest)
+{
+
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    char query[] = "?rt=core.light";
+    char address[] = "127.0.0.1";
+    OCServerRequest *request;
+    OCResource resource;
+    const char devicename1[] = "device name";
+    OCRepPayload *device = OCRepPayloadCreate();
+    OCRepPayloadAddResourceType(device, "oic.d.tv");
+    OCRepPayloadSetPropString(device, OC_RSRVD_SPEC_VERSION, OC_SPEC_VERSION);
+    OCRepPayloadSetPropInt(device, "in", 0);
+    OCRepPayloadSetPropString(device, "x.org.iotivity.newproperty", "value");
+    size_t dim[MAX_REP_ARRAY_DEPTH] = {1, 0, 0};
+    char **dt = (char **)OICMalloc(sizeof(char *) * 1);
+    dt[0] = OICStrdup(OC_DATA_MODEL_VERSION);
+    OCRepPayloadSetStringArray(device, OC_RSRVD_DATA_MODEL_VERSION, (const char **)dt, dim);
+    OICFree(dt[0]);
+    OICFree(dt);
+    uint8_t* cborData;
+    size_t cborSize;
+    OCPayload* parsedDevice;
+    OCConvertPayload((OCPayload*)device, &cborData, &cborSize);
+    request = (OCServerRequest *) OICCalloc(1, sizeof(OCServerRequest) +
+        (cborSize ? cborSize : 1) - 1);
+    request->method = OC_REST_PUT;
+    strncpy(request->query, query, sizeof(query));
+    request->devAddr.flags = OC_DEFAULT_FLAGS;
+    request->devAddr.adapter = OC_DEFAULT_ADAPTER;
+    strncpy(request->devAddr.addr, address, sizeof(query));
+    request->devAddr.port = 5364;
+    request->qos = OC_LOW_QOS;
+    request->coapID = 0;
+    request->delayedResNeeded = 0;
+    request->requestId = 0x1234;
+    request->payloadSize = cborSize;
+    memcpy(request->payload, cborData, cborSize);
+    EXPECT_EQ(OC_STACK_ERROR, OCHandleKeepAliveRequest(request, &resource));
+}
+TEST(HandleKeepAliveInvalidRequest, OCHandleKeepAliveRequest)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    char query[] = "?rt=core.light";
+    char address[] = "127.0.0.1";
+    OCServerRequest request;
+    request.method = OC_REST_DELETE;
+    strncpy(request.query, query, sizeof(query));
+    request.devAddr.flags = OC_DEFAULT_FLAGS;
+    request.devAddr.adapter = OC_DEFAULT_ADAPTER;
+    strncpy(request.devAddr.addr, address, sizeof(query));
+    request.devAddr.port = 5364;
+    request.qos = OC_LOW_QOS;
+    request.coapID = 0;
+    request.delayedResNeeded = 0;
+    request.requestId = 0x1234;
+    OCResource resource;
+    EXPECT_EQ(OC_STACK_ERROR, OCHandleKeepAliveRequest(&request,&resource));
+}
+
+TEST(SendKeepAliveRequestTest, OCSendKeepAliveRequest)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    OCDoHandle handle;
+    char *remoteAddr = "coaps+tcp://[fe80::224:54ff:fe98:80d2%25enp6s0]:59384";
+    OCCallbackData cbData;
+    cbData.cd = NULL;
+    OCRepPayload p;
+    p.base.type = PAYLOAD_TYPE_REPRESENTATION;
+    p.uri = NULL;
+    p.types = NULL;
+    p.interfaces = NULL;
+    p.values = NULL;
+    p.next = NULL;
+    OCPayload *payload = (OCPayload*)&p;
+    EXPECT_EQ(OC_STACK_OK, OCSendKeepAliveRequest(&handle, remoteAddr, payload, &cbData));
+}
+TEST(SendKeepAliveRequestTestWithInvalidParam, OCSendKeepAliveRequest)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    OCDoHandle handle;
+    char *remoteAddr = "";
+    OCCallbackData cbData;
+    cbData.cd = NULL;
+    OCRepPayload p;
+    p.base.type = PAYLOAD_TYPE_REPRESENTATION;
+    p.uri = NULL;
+    p.types = NULL;
+    p.interfaces = NULL;
+    p.values = NULL;
+    p.next = NULL;
+    OCPayload *payload = (OCPayload*)&p;
+    EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSendKeepAliveRequest(&handle, remoteAddr, payload, &cbData));
+}
+TEST(SendKeepAliveRequestTestWithoutCallback, OCSendKeepAliveRequest)
+{
+    EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
+    OCDoHandle handle;
+    char *remoteAddr = "coaps://[fe80::224:54ff:fe98:80d2%25enp6s0]:59384";
+    OCCallbackData cbData;
+    cbData.cd = NULL;
+    OCRepPayload p;
+    p.base.type=PAYLOAD_TYPE_REPRESENTATION;
+    p.uri = NULL;
+    p.types = NULL;
+    p.interfaces = NULL;
+    p.values = NULL;
+    p.next = NULL;
+    OCPayload *payload = (OCPayload*)&p;
+    EXPECT_EQ(OC_STACK_ERROR, OCSendKeepAliveRequest(&handle, remoteAddr, payload, &cbData));
+}
+