From: dhirajverma Date: Thu, 6 May 2021 07:08:49 +0000 (+0530) Subject: Adding UT framework X-Git-Tag: 5.4.9~6 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=31768a96251638b85869aebfcb88f0663ee3a0e4;p=ric-plt%2Fe2.git Adding UT framework Change-Id: I77fd96893b49735daefcc24f4b1c70e8228d769e Signed-off-by: dhirajverma --- diff --git a/RIC-E2-TERMINATION/CMakeLists.txt b/RIC-E2-TERMINATION/CMakeLists.txt index d996706..95f9a1b 100644 --- a/RIC-E2-TERMINATION/CMakeLists.txt +++ b/RIC-E2-TERMINATION/CMakeLists.txt @@ -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 () diff --git a/RIC-E2-TERMINATION/Dockerfile b/RIC-E2-TERMINATION/Dockerfile index d6272c0..11d7f71 100644 --- a/RIC-E2-TERMINATION/Dockerfile +++ b/RIC-E2-TERMINATION/Dockerfile @@ -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 index 0000000..858a337 --- /dev/null +++ b/RIC-E2-TERMINATION/TEST/sctp_thread_test.cpp @@ -0,0 +1,120 @@ +#include +#include +#include "sctpThread.h" +#include +#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(); + +} + diff --git a/RIC-E2-TERMINATION/sctpThread.cpp b/RIC-E2-TERMINATION/sctpThread.cpp index 16430fe..651edd9 100644 --- a/RIC-E2-TERMINATION/sctpThread.cpp +++ b/RIC-E2-TERMINATION/sctpThread.cpp @@ -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; } - -