Adding UT framework 12/6012/4
authordhirajverma <dhiraj.verma@nokia.com>
Thu, 6 May 2021 07:08:49 +0000 (12:38 +0530)
committerdhirajverma <dhiraj.verma@nokia.com>
Thu, 6 May 2021 07:55:06 +0000 (13:25 +0530)
Change-Id: I77fd96893b49735daefcc24f4b1c70e8228d769e
Signed-off-by: dhirajverma <dhiraj.verma@nokia.com>
RIC-E2-TERMINATION/CMakeLists.txt
RIC-E2-TERMINATION/Dockerfile
RIC-E2-TERMINATION/TEST/sctp_thread_test.cpp [new file with mode: 0644]
RIC-E2-TERMINATION/sctpThread.cpp

index d996706..95f9a1b 100644 (file)
@@ -170,6 +170,24 @@ add_executable(teste2
         RIC-E2-TERMINATION/TEST/e2test.cpp
         )
 
+
+# Locate GTest
+string(REPLACE " " ";" REPLACED_FLAGS ${CMAKE_CXX_FLAGS})
+string(CONCAT FINAL_FLAG ${REPLACED_FLAGS} ";-DUNIT_TEST")
+find_package(GTest REQUIRED)
+include_directories(${GTEST_INCLUDE_DIRS})
+# Link runTests with what we want to test and the GTest and pthread library
+add_executable(sctp_test /opt/e2/RIC-E2-TERMINATION/TEST/sctp_thread_test.cpp
+        RIC-E2-TERMINATION/sctpThread.h
+        RIC-E2-TERMINATION/sctpThread.cpp
+        RIC-E2-TERMINATION/base64.h
+        RIC-E2-TERMINATION/base64.cpp
+
+        )
+target_link_libraries(sctp_test ${GTEST_LIBRARIES} pthread)
+target_compile_options(sctp_test PRIVATE ${FINAL_FLAG})
+
+
 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
     LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_modules")
     set(CMAKE_BUILD_TYPE "Debug")
@@ -177,15 +195,13 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
     target_link_libraries(${PROJECT_TEST_NAME} gcov)
 
     set(LDFLAGS "--coverage -fprofile-arcs")
+    message("PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
 
     #    setup_target_for_coverage_lcov(${PROJECT_NAME}_coverage ${PROJECT_TEST_NAME} coverage)
-    set(COVERAGE_LCOV_EXCLUDES ${PROJECT_SOURCE_DIR}/config'
-            ${PROJECT_SOURCE_DIR}/log'
-            '${PROJECT_SOURCE_DIR}/docs'
-            '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/3rdparty'
-            '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/oranE2'
-            '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/TEST'
-            '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/config')
+     set(COVERAGE_LCOV_EXCLUDES "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/3rdparty/*"
+            "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/oranE2/*"
+            "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/TEST/*"
+            "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/config/*")
 
     set(COVERAGE_EXCLUDES '${PROJECT_SOURCE_DIR}/config'
             ${PROJECT_SOURCE_DIR}/log'
@@ -196,6 +212,6 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
             '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/config')
     append_coverage_compiler_flags()
     SETUP_TARGET_FOR_COVERAGE_LCOV(NAME e2_coverage
-            EXECUTABLE e2
+            EXECUTABLE e2 
             DEPENDENCIES e2)
 endif ()
index d6272c0..11d7f71 100644 (file)
@@ -25,13 +25,16 @@ FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu18-c-go:1.9.0 as ubuntu
 WORKDIR /opt/e2/
 
 ARG BUILD_TYPE="Release"
-
+RUN apt-get update
+RUN apt-get install -y lcov
 RUN mkdir -p /opt/e2/RIC-E2-TERMINATION/ \
     && mkdir -p /opt/e2/RIC-E2-TERMINATION/TEST/T1 \
     && mkdir -p /opt/e2/RIC-E2-TERMINATION/TEST/T2 \
     && mkdir -p /opt/e2/RIC-E2-TERMINATION/3rdparty
 
 COPY . /opt/e2/RIC-E2-TERMINATION/
+RUN apt-get install -y libgtest-dev
+RUN cd /usr/src/gtest &&  /usr/local/bin/cmake  CMakeLists.txt && make && cp *.a /usr/lib
 
 RUN mv /opt/e2/RIC-E2-TERMINATION/CMakeLists.txt /opt/e2/ && cat /opt/e2/RIC-E2-TERMINATION/config/config.conf \
     && wget --content-disposition https://github.com/cgreen-devs/cgreen/releases/download/1.2.0/cgreen_1.2.0_amd64.deb \
diff --git a/RIC-E2-TERMINATION/TEST/sctp_thread_test.cpp b/RIC-E2-TERMINATION/TEST/sctp_thread_test.cpp
new file mode 100644 (file)
index 0000000..858a337
--- /dev/null
@@ -0,0 +1,120 @@
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+#include "sctpThread.h"
+#include <sys/epoll.h>
+#include"E2AP-PDU.h"
+
+using namespace testing;
+
+TEST(sctp, TEST1) {
+    string s;
+    s = translateRmrErrorMessages(0);
+    EXPECT_THAT(s, HasSubstr("RMR_OK"));
+    s = translateRmrErrorMessages(1);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_BADARG"));
+    s = translateRmrErrorMessages(2);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_NOENDPT"));
+    s = translateRmrErrorMessages(3);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_EMPTY"));
+    s = translateRmrErrorMessages(4);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_NOHDR"));
+    s = translateRmrErrorMessages(5);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_SENDFAILED"));
+    s = translateRmrErrorMessages(6);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_CALLFAILED"));
+    s = translateRmrErrorMessages(7);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_NOWHOPEN"));
+    s = translateRmrErrorMessages(8);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_WHID"));
+    s = translateRmrErrorMessages(9);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_OVERFLOW"));
+    s = translateRmrErrorMessages(10);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_RETRY"));
+    s = translateRmrErrorMessages(11);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_RCVFAILED"));
+    s = translateRmrErrorMessages(12);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_TIMEOUT"));
+    s = translateRmrErrorMessages(13);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_UNSET"));
+    s = translateRmrErrorMessages(14);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_TRUNC"));
+    s = translateRmrErrorMessages(15);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_INITFAILED"));
+    s = translateRmrErrorMessages(16);
+    EXPECT_THAT(s, HasSubstr("RMR_ERR_NOTSUPP"));
+    s = translateRmrErrorMessages(17);
+    EXPECT_THAT(s, HasSubstr("UNDOCUMENTED RMR_ERR"));
+}
+
+auto *peerInfo = (ConnectedCU_t *)calloc(1, sizeof(ConnectedCU_t));
+
+TEST(sctp, TEST2) {
+     struct epoll_event event;
+    int epoll_fd = epoll_create1(0);
+    event.events = EPOLLIN;
+    event.data.fd = 0;
+    ConnectedCU_t data1;
+    ConnectedCU_t *data = &data1;
+    event.data.ptr = (void *)data;
+    sctp_params_t sctp_ut_params;
+    sctp_params_t* sctp = &sctp_ut_params;
+    ReportingMessages_t reporting_msg;
+    RmrMessagesBuffer_t rmrmessagesbuffer;
+    handleEinprogressMessages(event,reporting_msg,rmrmessagesbuffer,sctp);
+}
+
+TEST(sctp, TEST3) {
+     struct epoll_event event;
+    int epoll_fd = epoll_create1(0);
+    event.events = EPOLLIN;
+    event.data.fd = 0;
+    ConnectedCU_t data1;
+    ConnectedCU_t *data = &data1;
+    event.data.ptr = (void *)data;
+    sctp_params_t sctp_ut_params;
+    sctp_params_t* sctp = &sctp_ut_params;
+    Sctp_Map_t m1;
+    sctp ->sctpMap =  &m1;
+    ReportingMessages_t reporting_msg;
+    RmrMessagesBuffer_t rmrmessagesbuffer;
+    handlepoll_error(event,reporting_msg,rmrmessagesbuffer,sctp);
+}
+
+
+TEST(sctp, TEST4) {
+
+ConnectedCU_t cu;
+ConnectedCU_t* connected_cu = &cu;
+Sctp_Map_t m1;
+Sctp_Map_t *m = &m1;
+cleanHashEntry(connected_cu,m);
+
+
+}
+
+TEST(sctp, TEST5) {
+
+sctp_params_t sctp_ut_params;
+sctp_params_t* sctp = &sctp_ut_params;
+handleConfigChange(sctp);
+}
+
+
+
+TEST(sctp, TEST6) {
+int epoll_fd = epoll_create1(0);
+ConnectedCU_t cu;
+ConnectedCU_t* peerinfo = &cu;
+Sctp_Map_t m1;
+Sctp_Map_t *m = &m1;
+modifyToEpoll(epoll_fd,peerinfo,2,m,"enodeb1",2);
+}
+
+
+int main(int argc, char **argv) {
+
+   testing::InitGoogleTest(&argc, argv);
+   return RUN_ALL_TESTS();
+
+}
+
index 16430fe..651edd9 100644 (file)
@@ -313,7 +313,7 @@ void startPrometheus(sctp_params_t &sctpParams) {
     sctpParams.prometheusExposer = new Exposer(prometheusPath, 1);
     sctpParams.prometheusExposer->RegisterCollectable(sctpParams.prometheusRegistry);
 }
-
+#ifndef UNIT_TEST
 int main(const int argc, char **argv) {
     sctp_params_t sctpParams;
 
@@ -417,7 +417,7 @@ int main(const int argc, char **argv) {
 
     return 0;
 }
-
+#endif
 void handleTermInit(sctp_params_t &sctpParams) {
     sendTermInit(sctpParams);
     //send to e2 manager init of e2 term
@@ -853,6 +853,7 @@ void handleEinprogressMessages(struct epoll_event &event,
     socklen_t retValLen = 0;
     auto rc = getsockopt(peerInfo->fileDescriptor, SOL_SOCKET, SO_ERROR, &retVal, &retValLen);
     if (rc != 0 || retVal != 0) {
+#ifndef UNIT_TEST
         if (rc != 0) {
             rmrMessageBuffer.sendMessage->len = snprintf((char *)rmrMessageBuffer.sendMessage->payload, 256,
                                                          "%s|Failed SCTP Connection, after EINPROGRESS the getsockopt%s",
@@ -870,6 +871,7 @@ void handleEinprogressMessages(struct epoll_event &event,
         if (sendRequestToXapp(message, RIC_SCTP_CONNECTION_FAILURE, rmrMessageBuffer) != 0) {
             mdclog_write(MDCLOG_ERR, "SCTP_CONNECTION_FAIL message failed to send to xAPP");
         }
+#endif
         memset(peerInfo->asnData, 0, peerInfo->asnLength);
         peerInfo->asnLength = 0;
         peerInfo->mtype = 0;
@@ -914,6 +916,7 @@ void handlepoll_error(struct epoll_event &event,
         auto *peerInfo = (ConnectedCU_t *)event.data.ptr;
         mdclog_write(MDCLOG_ERR, "epoll error, events %0x on fd %d, RAN NAME : %s",
                      event.events, peerInfo->fileDescriptor, peerInfo->enodbName);
+#ifndef UNIT_TEST
 
         rmrMessageBuffer.sendMessage->len = snprintf((char *)rmrMessageBuffer.sendMessage->payload, 256,
                                                      "%s|Failed SCTP Connection",
@@ -926,7 +929,7 @@ void handlepoll_error(struct epoll_event &event,
         if (sendRequestToXapp(message, RIC_SCTP_CONNECTION_FAILURE, rmrMessageBuffer) != 0) {
             mdclog_write(MDCLOG_ERR, "SCTP_CONNECTION_FAIL message failed to send to xAPP");
         }
-
+#endif
         close(peerInfo->fileDescriptor);
         params->sctpMap->erase(peerInfo->enodbName);
         cleanHashEntry((ConnectedCU_t *) event.data.ptr, params->sctpMap);
@@ -974,7 +977,9 @@ void cleanHashEntry(ConnectedCU_t *val, Sctp_Map_t *m) {
     m->erase(searchBuff);
 
     m->erase(val->enodbName);
+#ifndef UNIT_TEST
     free(val);
+#endif
 }
 
 /**
@@ -2646,5 +2651,3 @@ string translateRmrErrorMessages(int state) {
     }
     return str;
 }
-
-