diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..47580af --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Parser +build/ +output/ +prebuilts/ +cov/ +*.ir +*.out + +# Dynamic libraries +# *.so +*.dylib + +# Static libraries +*.la +*.lai +*.a +*.lib + +# Protocol buffers +*_pb2.py +*.pb.h +*.pb.cc + +# Object files +*.o + +# Editor +.vscode +.idea/ +cmake-build-* \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 5394587..dd0747b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ if (ENABLE_OPEN_SRC) include(cmake/external_libs/protoc.cmake) include(cmake/external_libs/securec.cmake) include(cmake/external_libs/json.cmake) + include(cmake/external_libs/gtest.cmake) include(cmake/FindModule.cmake) include(cmake/intf_pub_linux.cmake) @@ -37,6 +38,8 @@ if (ENABLE_OPEN_SRC) find_module(static_mmpa libmmpa.a ${GE_LIB_PATH}) elseif(ENABLE_GE_COV OR ENABLE_GE_UT) message(STATUS "Runing on llt mode, no need to depend other component") + elseif(ENABLE_PARSER_UT OR ENABLE_PARSER_COV) + add_subdirectory(tests) else() if(DEFINED ENV{ASCEND_CUSTOM_PATH}) set(ASCEND_DIR $ENV{ASCEND_CUSTOM_PATH}) diff --git a/build.sh b/build.sh index 70fc880..073d47d 100644 --- a/build.sh +++ b/build.sh @@ -53,10 +53,10 @@ checkopts() { VERBOSE="" THREAD_NUM=8 - # ENABLE_GE_UT_ONLY_COMPILE="off" - ENABLE_GE_UT="off" - ENABLE_GE_ST="off" - ENABLE_GE_COV="off" + # ENABLE_PARSER_UT_ONLY_COMPILE="off" + ENABLE_PARSER_UT="off" + ENABLE_PARSER_ST="off" + ENABLE_PARSER_COV="off" GE_ONLY="on" ENABLE_GITEE="off" # Process the options @@ -65,19 +65,18 @@ checkopts() OPTARG=$(echo ${OPTARG} | tr '[A-Z]' '[a-z]') case "${opt}" in u) - # ENABLE_GE_UT_ONLY_COMPILE="on" - ENABLE_GE_UT="on" + ENABLE_PARSER_UT="on" GE_ONLY="off" ;; s) - ENABLE_GE_ST="on" + ENABLE_PARSER_ST="on" ;; t) - ENABLE_GE_UT="on" - GE_ONLY="off" - ;; + ENABLE_PARSER_UT="on" + GE_ONLY="off" + ;; c) - ENABLE_GE_COV="on" + ENABLE_PARSER_COV="on" GE_ONLY="off" ;; h) @@ -124,17 +123,17 @@ build_parser() cd "${BUILD_PATH}" CMAKE_ARGS="-DBUILD_PATH=$BUILD_PATH -DGE_ONLY=$GE_ONLY" - if [[ "X$ENABLE_GE_COV" = "Xon" ]]; then - CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_GE_COV=ON" + if [[ "X$ENABLE_PARSER_COV" = "Xon" ]]; then + CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_PARSER_COV=ON" fi - if [[ "X$ENABLE_GE_UT" = "Xon" ]]; then - CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_GE_UT=ON" + if [[ "X$ENABLE_PARSER_UT" = "Xon" ]]; then + CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_PARSER_UT=ON" fi - if [[ "X$ENABLE_GE_ST" = "Xon" ]]; then - CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_GE_ST=ON" + if [[ "X$ENABLE_PARSER_ST" = "Xon" ]]; then + CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_PARSER_ST=ON" fi if [[ "X$ENABLE_GITEE" = "Xon" ]]; then @@ -149,7 +148,13 @@ build_parser() echo "execute command: cmake ${CMAKE_ARGS} .. failed." return 1 fi - make ${VERBOSE} -j${THREAD_NUM} && make install + + if [ "X$ENABLE_PARSER_UT" = "Xon" ]; then + make ut_parser -j8 + else + make ${VERBOSE} -j${THREAD_NUM} && make install + fi + if [ 0 -ne $? ] then echo "execute command: make ${VERBOSE} -j${THREAD_NUM} && make install failed." @@ -170,6 +175,25 @@ find ${OUTPUT_PATH} -name "*.so*" -print0 | xargs -0 chmod 500 echo "---------------- Parser output generated ----------------" +if [[ "X$ENABLE_PARSER_UT" = "Xon" || "X$ENABLE_PARSER_COV" = "Xon" ]]; then + cp ${BUILD_PATH}/tests/ut/parser/ut_parser ${OUTPUT_PATH} + + RUN_TEST_CASE=${OUTPUT_PATH}/ut_parser && ${RUN_TEST_CASE} + if [[ "$?" -ne 0 ]]; then + echo "!!! UT FAILED, PLEASE CHECK YOUR CHANGES !!!" + echo -e "\033[31m${RUN_TEST_CASE}\033[0m" + exit 1; + fi + echo "Generating coverage statistics, please wait..." + cd ${BASEPATH} + rm -rf ${BASEPATH}/cov + mkdir ${BASEPATH}/cov + lcov -c -d build/tests/ut/parser -o cov/tmp.info + lcov -r cov/tmp.info '*/output/*' '*/build/opensrc/*' '*/build/proto/*' '*/third_party/*' '*/tests/*' '/usr/local/*' '*/metadef/inc/*' -o cov/coverage.info + cd ${BASEPATH}/cov + genhtml coverage.info +fi + # generate output package in tar form, including ut/st libraries/executables generate_package() { @@ -212,7 +236,7 @@ generate_package() tar -cf parser_lib.tar fwkacllib acllib atc } -if [[ "X$ENABLE_GE_UT" = "Xoff" ]]; then +if [[ "X$ENABLE_PARSER_UT" = "Xoff" ]]; then generate_package fi echo "---------------- Parser package archive generated ----------------" diff --git a/cmake/external_libs/gtest.cmake b/cmake/external_libs/gtest.cmake new file mode 100644 index 0000000..fcd5738 --- /dev/null +++ b/cmake/external_libs/gtest.cmake @@ -0,0 +1,64 @@ +if (HAVE_GTEST) + return() +endif() + +include(ExternalProject) + +if ((${CMAKE_INSTALL_PREFIX} STREQUAL /usr/local) OR + (${CMAKE_INSTALL_PREFIX} STREQUAL "C:/Program Files (x86)/ascend")) + set(CMAKE_INSTALL_PREFIX ${PARSER_DIR}/output CACHE STRING "path for install()" FORCE) + message(STATUS "No install prefix selected, default to ${CMAKE_INSTALL_PREFIX}.") +endif() + +if (PARSER_PB_PKG) + set(REQ_URL "${PARSER_PB_PKG}/libs/ge_gtest/release-1.8.1.tar.gz") + set(MD5 "") +elseif (ENABLE_GITEE) + set(REQ_URL "https://gitee.com/mirrors/googletest/repository/archive/release-1.8.1.tar.gz") + set(MD5 "") +else() + set(REQ_URL "https://github.com/google/googletest/archive/release-1.8.1.tar.gz") + set(MD5 "") +endif () + +set (gtest_CXXFLAGS "-D_GLIBCXX_USE_CXX11_ABI=0 -D_FORTIFY_SOURCE=2 -O2 -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack") +set (gtest_CFLAGS "-D_GLIBCXX_USE_CXX11_ABI=0 -D_FORTIFY_SOURCE=2 -O2 -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack") +ExternalProject_Add(gtest_build + URL ${REQ_URL} + TLS_VERIFY OFF + CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_CXX_FLAGS=${gtest_CXXFLAGS} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/gtest + -DBUILD_TESTING=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_MACOSX_RPATH=TRUE -Dgtest_disable_pthreads=ON + BUILD_COMMAND $(MAKE) + INSTALL_COMMAND $(MAKE) install + EXCLUDE_FROM_ALL TRUE +) + +set(GTEST_PKG_DIR ${CMAKE_INSTALL_PREFIX}/gtest) + +file(MAKE_DIRECTORY ${GTEST_PKG_DIR}/include) + +add_library(gtest SHARED IMPORTED) + +set_target_properties(gtest PROPERTIES + IMPORTED_LOCATION ${GTEST_PKG_DIR}/lib/libgtest.so +) + +add_library(gtest_main SHARED IMPORTED) + +set_target_properties(gtest_main PROPERTIES + IMPORTED_LOCATION ${GTEST_PKG_DIR}/lib/libgtest_main.so +) + +target_include_directories(gtest INTERFACE ${GTEST_PKG_DIR}/include) +target_include_directories(gtest_main INTERFACE ${GTEST_PKG_DIR}/include) + +set(INSTALL_BASE_DIR "") +set(INSTALL_LIBRARY_DIR lib) + +install(FILES ${GTEST_PKG_DIR}/lib/libgtest.so ${GTEST_PKG_DIR}/lib/libgtest_main.so OPTIONAL + DESTINATION ${INSTALL_LIBRARY_DIR}) + +add_dependencies(gtest gtest_build) + +#set(HAVE_GFLAGS TRUE CACHE BOOL "gflags build add") +set(HAVE_GTEST TRUE) diff --git a/cmake/external_libs/json.cmake b/cmake/external_libs/json.cmake index b36cb9a..b6fee11 100755 --- a/cmake/external_libs/json.cmake +++ b/cmake/external_libs/json.cmake @@ -5,15 +5,20 @@ endif() include(ExternalProject) set(JSON_SRC_DIR ${CMAKE_BINARY_DIR}/opensrc/json/include) -#if (ENABLE_GITEE) + +if (PARSER_PB_PKG) + set(REQ_URL "${PARSER_PB_PKG}/libs/ge_nlohmann_json/include.zip") + set(MD5 "") + set(JSON_INCLUDE_DIR ${JSON_SRC_DIR}) +#else if (ENABLE_GITEE) # set(REQ_URL "https://gitee.com/mirrors/JSON-for-Modern-CPP/repository/archive/v3.6.1.zip") # set(MD5 "5bda78ce308e6cfcf614dcf1d5ff27a7") # set(JSON_INCLUDE_DIR "${JSON_SRC_DIR}/include") -#else() +else() set(REQ_URL "https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip") set(MD5 "0dc903888211db3a0f170304cd9f3a89") set(JSON_INCLUDE_DIR ${JSON_SRC_DIR}) -#endif () +endif () ExternalProject_Add(json_build URL ${REQ_URL} #URL /home/txd/workspace/cloud_code/pkg/include.zip diff --git a/cmake/external_libs/securec.cmake b/cmake/external_libs/securec.cmake index 1047699..8a7f717 100755 --- a/cmake/external_libs/securec.cmake +++ b/cmake/external_libs/securec.cmake @@ -10,11 +10,20 @@ if ((${CMAKE_INSTALL_PREFIX} STREQUAL /usr/local) OR message(STATUS "No install prefix selected, default to ${CMAKE_INSTALL_PREFIX}.") endif() +if (PARSER_PB_PKG) + set(REQ_URL "${PARSER_PB_PKG}/libs/securec/v1.1.10.tar.gz") + set(MD5 "") +else() + set(REQ_URL "https://gitee.com/openeuler/libboundscheck/repository/archive/v1.1.10.tar.gz") + set(MD5 "") +endif() + ExternalProject_Add(c_sec_build - URL https://gitee.com/openeuler/libboundscheck/repository/archive/v1.1.10.tar.gz - #URL /home/txd/workspace/linux_cmake/pkg/protobuf-3.8.0.tar.gz + URL ${REQ_URL} + #URL https://gitee.com/openeuler/libboundscheck/repository/archive/v1.1.10.tar.gz #SOURCE_DIR ${PARSER_DIR}/../libc_sec - PATCH_COMMAND patch -p1 < ${PARSER_DIR}/metadef/third_party/patch/securec/0001-add-securec-cmake-script.patch + PATCH_COMMAND patch -p1 < ${PARSER_DIR}/metadef/third_party/patch/securec/0001-add-securec-cmake-script.patch + TLS_VERIFY OFF CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..ff790ad --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,28 @@ +# Copyright 2019-2020 Huawei Technologies Co., Ltd +# +# 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. +# ============================================================================ + +project(tests CXX C) +add_subdirectory(depends/slog) +add_subdirectory(depends/mmpa) +add_subdirectory(depends/profiler) +add_subdirectory(depends/error_manager) + +if (ENABLE_PARSER_COV OR ENABLE_PARSER_UT) + add_subdirectory(ut) +endif() + +if (ENABLE_PARSER_ST) + add_subdirectory(st) +endif() diff --git a/tests/depends/error_manager/CMakeLists.txt b/tests/depends/error_manager/CMakeLists.txt new file mode 100644 index 0000000..c1cb4a3 --- /dev/null +++ b/tests/depends/error_manager/CMakeLists.txt @@ -0,0 +1,34 @@ +# Copyright 2019-2020 Huawei Technologies Co., Ltd +# +# 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. +# ============================================================================ + +#cmake_minimum_required(VERSION 2.8) + +project(STUB_ERROR_MANAGER) + +file(GLOB_RECURSE SRCS RELATIVE ${CMAKE_CURRENT_LIST_DIR} + "src/error_manager_stub.cc" +) + +include_directories(${PARSER_DIR}/metadef/inc) +include_directories(${PARSER_DIR}/metadef/inc/external) +include_directories(${PARSER_DIR}/metadef/metadef/inc) +include_directories(${PARSER_DIR}/metadef/inc/framework) +include_directories(${PARSER_DIR}/metadef/metadef/inc/external) +include_directories(${PARSER_DIR}/metadef/third_party/fwkacllib/inc) + +add_library(error_manager_stub SHARED ${SRCS}) +target_link_libraries(error_manager_stub PRIVATE + $ +) diff --git a/tests/depends/error_manager/src/error_manager_stub.cc b/tests/depends/error_manager/src/error_manager_stub.cc new file mode 100644 index 0000000..485fdfb --- /dev/null +++ b/tests/depends/error_manager/src/error_manager_stub.cc @@ -0,0 +1,95 @@ +/** + * Copyright 2019-2020 Huawei Technologies Co., Ltd + * + * 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 "common/util/error_manager/error_manager.h" + +ErrorManager &ErrorManager::GetInstance() { +static ErrorManager instance; +return instance; +} + +/// +/// @brief init +/// @param [in] path: current so path +/// @return int 0(success) -1(fail) +/// +int ErrorManager::Init(std::string path) { return 0; } + +/// +/// @brief Report error message +/// @param [in] error_code: error code +/// @param [in] args_map: parameter map +/// @return int 0(success) -1(fail) +/// +int ErrorManager::ReportErrMessage(std::string error_code, const std::map &args_map) { + return 0; +} + +int ErrorManager::ReportInterErrMessage(std::string error_code, const std::string &error_msg) { + return 0; +} + + +const std::string &ErrorManager::GetLogHeader() { + static const std::string kLogHeader("GeUtStub"); + return kLogHeader; +} + +/// +/// @brief output error message +/// @param [in] handle: print handle +/// @return int 0(success) -1(fail) +/// +int ErrorManager::OutputErrMessage(int handle) { return 0; } + +/// +/// @brief output message +/// @param [in] handle: print handle +/// @return int 0(success) -1(fail) +/// +int ErrorManager::OutputMessage(int handle) { return 0; } + +/// +/// @brief Report error message +/// @param [in] key: vector parameter key +/// @param [in] value: vector parameter value +/// +void ErrorManager::ATCReportErrMessage(std::string error_code, const std::vector &key, + const std::vector &value) { +} + +/// +/// @brief report graph compile failed message such as error code and op_name in mstune case +/// @param [in] msg: failed message map, key is error code, value is op_name +/// @return int 0(success) -1(fail) +/// +int ErrorManager::ReportMstuneCompileFailedMsg(const std::string &root_graph_name, + const std::map &msg) { return 0; } + +/// +/// @brief get graph compile failed message in mstune case +/// @param [in] graph_name: graph name +/// @param [out] msg_map: failed message map, key is error code, value is op_name list +/// @return int 0(success) -1(fail) +/// +int ErrorManager::GetMstuneCompileFailedMsg(const std::string &graph_name, std::map> &msg_map) { return 0; } + + +void ErrorManager::SetStage(const std::string &first_stage, const std::string &second_stage) { +} + +void ErrorManager::GenWorkStreamIdDefault() { +} \ No newline at end of file diff --git a/tests/depends/mmpa/CMakeLists.txt b/tests/depends/mmpa/CMakeLists.txt new file mode 100644 index 0000000..1bdb1fb --- /dev/null +++ b/tests/depends/mmpa/CMakeLists.txt @@ -0,0 +1,39 @@ +# Copyright 2019-2020 Huawei Technologies Co., Ltd +# +# 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. +# ============================================================================ + +#cmake_minimum_required(VERSION 2.8) + +project(STUB_MMPA) + +file(GLOB_RECURSE SRCS RELATIVE ${CMAKE_CURRENT_LIST_DIR} + "src/mmpa_stub.cc" +) + +include_directories(${PARSER_DIR}/metadef/third_party/fwkacllib/inc) +include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc/framework) +include_directories(${PARSER_DIR}/metadef/inc) +include_directories(${PARSER_DIR}/metadef/inc/external) +include_directories(${PARSER_DIR}/metadef/metadef/inc) +include_directories(${PARSER_DIR}/metadef/inc/framework) +include_directories(${PARSER_DIR}/metadef/metadef/inc/external) + +add_library(mmpa_stub SHARED ${SRCS}) +target_link_libraries(mmpa_stub PRIVATE + $ + -Wl,--no-as-needed + ascend_protobuf + -Wl,--as-needed + c_sec +) diff --git a/tests/depends/mmpa/src/mmpa_stub.cc b/tests/depends/mmpa/src/mmpa_stub.cc new file mode 100644 index 0000000..dd332a7 --- /dev/null +++ b/tests/depends/mmpa/src/mmpa_stub.cc @@ -0,0 +1,284 @@ +/** + * Copyright 2019-2020 Huawei Technologies Co., Ltd + * + * 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 "mmpa/mmpa_api.h" + + +INT32 mmOpen(const CHAR *path_name, INT32 flags) { + INT32 fd = HANDLE_INVALID_VALUE; + + if (NULL == path_name) { + syslog(LOG_ERR, "The path name pointer is null.\r\n"); + return EN_INVALID_PARAM; + } + if (0 == (flags & (O_RDONLY | O_WRONLY | O_RDWR | O_CREAT))) { + syslog(LOG_ERR, "The file open mode is error.\r\n"); + return EN_INVALID_PARAM; + } + + fd = open(path_name, flags); + if (fd < MMPA_ZERO) { + syslog(LOG_ERR, "Open file failed, errno is %s.\r\n", strerror(errno)); + return EN_ERROR; + } + return fd; +} + +INT32 mmOpen2(const CHAR *path_name, INT32 flags, MODE mode) { + INT32 fd = HANDLE_INVALID_VALUE; + + if (NULL == path_name) { + syslog(LOG_ERR, "The path name pointer is null.\r\n"); + return EN_INVALID_PARAM; + } + if (MMPA_ZERO == (flags & (O_RDONLY | O_WRONLY | O_RDWR | O_CREAT))) { + syslog(LOG_ERR, "The file open mode is error.\r\n"); + return EN_INVALID_PARAM; + } + if ((MMPA_ZERO == (mode & (S_IRUSR | S_IREAD))) && (MMPA_ZERO == (mode & (S_IWUSR | S_IWRITE)))) { + syslog(LOG_ERR, "The permission mode of the file is error.\r\n"); + return EN_INVALID_PARAM; + } + + fd = open(path_name, flags, mode); + if (fd < MMPA_ZERO) { + syslog(LOG_ERR, "Open file failed, errno is %s.\r\n", strerror(errno)); + return EN_ERROR; + } + return fd; +} + +INT32 mmClose(INT32 fd) { + INT32 result = EN_OK; + + if (fd < MMPA_ZERO) { + syslog(LOG_ERR, "The file fd is invalid.\r\n"); + return EN_INVALID_PARAM; + } + + result = close(fd); + if (EN_OK != result) { + syslog(LOG_ERR, "Close the file failed, errno is %s.\r\n", strerror(errno)); + return EN_ERROR; + } + return EN_OK; +} + +mmSsize_t mmWrite(INT32 fd, VOID *mm_buf, UINT32 mm_count) { + mmSsize_t result = MMPA_ZERO; + + if ((fd < MMPA_ZERO) || (NULL == mm_buf)) { + syslog(LOG_ERR, "Input parameter invalid.\r\n"); + return EN_INVALID_PARAM; + } + + result = write(fd, mm_buf, (size_t)mm_count); + if (result < MMPA_ZERO) { + syslog(LOG_ERR, "Write buf to file failed, errno is %s.\r\n", strerror(errno)); + return EN_ERROR; + } + return result; +} + +mmSsize_t mmRead(INT32 fd, VOID *mm_buf, UINT32 mm_count) { + mmSsize_t result = MMPA_ZERO; + + if ((fd < MMPA_ZERO) || (NULL == mm_buf)) { + syslog(LOG_ERR, "Input parameter invalid.\r\n"); + return EN_INVALID_PARAM; + } + + result = read(fd, mm_buf, (size_t)mm_count); + if (result < MMPA_ZERO) { + syslog(LOG_ERR, "Read file to buf failed, errno is %s.\r\n", strerror(errno)); + return EN_ERROR; + } + return result; +} + +INT32 mmMkdir(const CHAR *lp_path_name, mmMode_t mode) { + INT32 t_mode = mode; + INT32 ret = EN_OK; + + if (NULL == lp_path_name) { + syslog(LOG_ERR, "The input path is null.\r\n"); + return EN_INVALID_PARAM; + } + + if (t_mode < MMPA_ZERO) { + syslog(LOG_ERR, "The input mode is wrong.\r\n"); + return EN_INVALID_PARAM; + } + + ret = mkdir(lp_path_name, mode); + + if (EN_OK != ret) { + syslog(LOG_ERR, "Failed to create the directory, the ret is %s.\r\n", strerror(errno)); + return EN_ERROR; + } + return EN_OK; +} + +void *memCpyS(void *dest, const void *src, UINT32 count) { + char *tmp = (char *)dest; + char *s = (char *)src; + + if (MMPA_ZERO == count) { + return dest; + } + + while (count--) { + *tmp++ = *s++; + } + return dest; +} + +INT32 mmRmdir(const CHAR *lp_path_name) { return rmdir(lp_path_name); } + +mmTimespec mmGetTickCount() { + mmTimespec rts; + struct timespec ts = {0}; + (void)clock_gettime(CLOCK_MONOTONIC_RAW, &ts); + rts.tv_sec = ts.tv_sec; + rts.tv_nsec = ts.tv_nsec; + return rts; +} + +INT32 mmGetTid() { + INT32 ret = (INT32)syscall(SYS_gettid); + + if (ret < MMPA_ZERO) { + return EN_ERROR; + } + + return ret; +} + +INT32 mmAccess(const CHAR *path_name) { + if (path_name == NULL) { + return EN_INVALID_PARAM; + } + + INT32 ret = access(path_name, F_OK); + if (ret != EN_OK) { + return EN_ERROR; + } + return EN_OK; +} + +INT32 mmStatGet(const CHAR *path, mmStat_t *buffer) { + if ((path == NULL) || (buffer == NULL)) { + return EN_INVALID_PARAM; + } + + INT32 ret = stat(path, buffer); + if (ret != EN_OK) { + return EN_ERROR; + } + return EN_OK; +} + +INT32 mmGetFileSize(const CHAR *file_name, ULONGLONG *length) { + if ((file_name == NULL) || (length == NULL)) { + return EN_INVALID_PARAM; + } + struct stat file_stat; + (void)memset_s(&file_stat, sizeof(file_stat), 0, sizeof(file_stat)); // unsafe_function_ignore: memset + INT32 ret = lstat(file_name, &file_stat); + if (ret < MMPA_ZERO) { + return EN_ERROR; + } + *length = (ULONGLONG)file_stat.st_size; + return EN_OK; +} + +INT32 mmScandir(const CHAR *path, mmDirent ***entryList, mmFilter filterFunc, mmSort sort) +{ + return 0; +} + +VOID mmScandirFree(mmDirent **entryList, INT32 count) +{ +} + +INT32 mmAccess2(const CHAR *pathName, INT32 mode) +{ + return 0; +} + +INT32 mmGetTimeOfDay(mmTimeval *timeVal, mmTimezone *timeZone) +{ + return 0; +} + +INT32 mmRealPath(const CHAR *path, CHAR *realPath, INT32 realPathLen) +{ + return 0; +} + +INT32 mmGetErrorCode() +{ + return 0; +} + +INT32 mmIsDir(const CHAR *fileName) +{ + return 0; +} + +INT32 mmGetEnv(const CHAR *name, CHAR *value, UINT32 len) +{ + return 0; +} + +INT32 mmDlclose(VOID *handle) +{ + return 0; +} + +CHAR *mmDlerror() +{ + return ""; +} + +INT32 mmDladdr(VOID *addr, mmDlInfo *info) +{ + return 0; +} + +VOID *mmDlopen(const CHAR *fileName, INT32 mode) +{ + return NULL; +} + +VOID *mmDlsym(VOID *handle, const CHAR *funcName) +{ + return NULL; +} + +INT32 mmGetPid() +{ + return (INT32)getpid(); +} + +INT32 mmDup2(INT32 oldFd, INT32 newFd) { + return -1; +} + +INT32 mmDup(INT32 fd) { + return -1; +} + diff --git a/tests/depends/profiler/CMakeLists.txt b/tests/depends/profiler/CMakeLists.txt new file mode 100644 index 0000000..aa66125 --- /dev/null +++ b/tests/depends/profiler/CMakeLists.txt @@ -0,0 +1,28 @@ +# Copyright 2019-2020 Huawei Technologies Co., Ltd +# +# 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. +# ============================================================================ + +#cmake_minimum_required(VERSION 2.8) +project(profiler_stub) + +file(GLOB_RECURSE SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + "src/profiler_stub.cc" +) +include_directories(${PARSER_DIR}/metadef/third_party/fwkacllib/inc) + +add_library(profiler_stub SHARED ${SRC_FILES}) + +target_link_libraries(profiler_stub PRIVATE + $ +) diff --git a/tests/depends/profiler/src/profiler_stub.cc b/tests/depends/profiler/src/profiler_stub.cc new file mode 100644 index 0000000..1ed49fd --- /dev/null +++ b/tests/depends/profiler/src/profiler_stub.cc @@ -0,0 +1,34 @@ +/** + * Copyright 2019-2020 Huawei Technologies Co., Ltd + * + * 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 "toolchain/prof_engine.h" +#include "toolchain/prof_mgr_core.h" + +void * ProfMgrStartUp(const ProfMgrCfg *cfg) +{ + return nullptr; +} + +int ProfMgrStop(void *handle) +{ + return 0; +} + +int Msprof::Engine::RegisterEngine(const std::string& module, const Msprof::Engine::EngineIntf* engine) +{ + return 0; +} + diff --git a/tests/depends/slog/CMakeLists.txt b/tests/depends/slog/CMakeLists.txt new file mode 100644 index 0000000..a8ae515 --- /dev/null +++ b/tests/depends/slog/CMakeLists.txt @@ -0,0 +1,26 @@ +# Copyright 2019-2020 Huawei Technologies Co., Ltd +# +# 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. +# ============================================================================ + +#cmake_minimum_required(VERSION 2.8) +project(slog_stub) + +file(GLOB_RECURSE SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + "src/*.cc" +) +include_directories(${PARSER_DIR}/metadef/third_party/fwkacllib/inc) +add_library(slog_stub SHARED ${SRC_FILES}) +target_link_libraries(slog_stub PRIVATE + $ +) diff --git a/tests/depends/slog/src/slog_stub.cc b/tests/depends/slog/src/slog_stub.cc new file mode 100644 index 0000000..edc245b --- /dev/null +++ b/tests/depends/slog/src/slog_stub.cc @@ -0,0 +1,48 @@ +/** + * Copyright 2019-2020 Huawei Technologies Co., Ltd + * + * 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 "toolchain/slog.h" + +#include +#include +#include + +void dav_log(int module_id, const char *fmt, ...) {} + +void DlogErrorInner(int module_id, const char *fmt, ...) { dav_log(module_id, fmt); } + +void DlogWarnInner(int module_id, const char *fmt, ...) { dav_log(module_id, fmt); } + +void DlogInfoInner(int module_id, const char *fmt, ...) { dav_log(module_id, fmt); } + +void DlogDebugInner(int module_id, const char *fmt, ...) { dav_log(module_id, fmt); } + +void DlogEventInner(int module_id, const char *fmt, ...) { dav_log(module_id, fmt); } + +void DlogInner(int module_id, int level, const char *fmt, ...) { dav_log(module_id, fmt); } + +void DlogWithKVInner(int module_id, int level, KeyValue *pst_kv_array, int kv_num, const char *fmt, ...) { + dav_log(module_id, fmt); +} + +int dlog_setlevel(int module_id, int level, int enable_event) { return DLOG_DEBUG; } + +int dlog_getlevel(int module_id, int *enable_event) { return DLOG_DEBUG; } + +int CheckLogLevel(int moduleId, int logLevel) +{ + return 1; +} diff --git a/tests/ut/CMakeLists.txt b/tests/ut/CMakeLists.txt new file mode 100644 index 0000000..339f37d --- /dev/null +++ b/tests/ut/CMakeLists.txt @@ -0,0 +1,24 @@ +# Copyright 2019-2020 Huawei Technologies Co., Ltd +# +# 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. +# ============================================================================ + +project(ut CXX C) + +if (ENABLE_PARSER_COV) + set(COVERAGE_COMPILER_FLAGS "-g --coverage -fprofile-arcs -fPIC -O0 -ftest-coverage") + set(CMAKE_CXX_FLAGS "${COVERAGE_COMPILER_FLAGS}") +endif() + +add_subdirectory(parser) + diff --git a/tests/ut/parser/CMakeLists.txt b/tests/ut/parser/CMakeLists.txt new file mode 100644 index 0000000..15bc5ac --- /dev/null +++ b/tests/ut/parser/CMakeLists.txt @@ -0,0 +1,345 @@ +# Copyright 2019-2020 Huawei Technologies Co., Ltd +# +# 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. +# ============================================================================ + +project(ut_parser) + +set(CMAKE_CXX_STANDARD 11) + +################################################################################ +set(PARSER_PROTO_LIST + "${PARSER_DIR}/metadef/proto/om.proto" + "${PARSER_DIR}/metadef/proto/ge_ir.proto" + "${PARSER_DIR}/metadef/proto/task.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/attr_value.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/function.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/graph.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/graph_library.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/node_def.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/op_def.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/resource_handle.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/tensor.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/tensor_shape.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/types.proto" + "${PARSER_DIR}/metadef/proto/tensorflow/versions.proto" + "${PARSER_DIR}/metadef/proto/caffe/caffe.proto" + "${PARSER_DIR}/metadef/proto/onnx/ge_onnx.proto" + #"${PARSER_DIR}/metadef/proto/proto_inner/ge_onnx.proto" +) + +protobuf_generate(ge PARSER_PROTO_SRCS PARSER_PROTO_HDRS ${PARSER_PROTO_LIST}) + +############ libut_parser_proto.a ############ +add_library(ut_parser_proto STATIC + ${PARSER_PROTO_HDRS} ${PARSER_PROTO_SRCS} +) + +target_compile_definitions(ut_parser_proto PRIVATE + PROTOBUF_INLINE_NOT_IN_HEADERS=0 + google=ascend_private +) + +target_compile_options(ut_parser_proto PRIVATE + -O2 -g -fno-common +) + +target_link_libraries(ut_parser_proto PRIVATE + $ + ascend_protobuf +) + + +################################################################################ +set(DUPLICATE_PROTO_LIST + "${PARSER_DIR}/metadef/proto/proto_inner/ge_onnx.proto" +) + +protobuf_generate(ge DUP_PROTO_SRCS DUP_PROTO_HDRS ${DUPLICATE_PROTO_LIST}) + +################################################################################ +set(MATEDEF_SRC_FILES + "${PARSER_DIR}/metadef/graph/aligned_ptr.cc" + "${PARSER_DIR}/metadef/graph/anchor.cc" + "${PARSER_DIR}/metadef/graph/ascend_string.cc" + "${PARSER_DIR}/metadef/graph/attr_value.cc" + "${PARSER_DIR}/metadef/graph/buffer.cc" + "${PARSER_DIR}/metadef/graph/compute_graph.cc" + "${PARSER_DIR}/metadef/graph/debug/graph_debug.cc" + "${PARSER_DIR}/metadef/graph/detail/attributes_holder.cc" + "${PARSER_DIR}/metadef/graph/format_refiner.cc" + "${PARSER_DIR}/metadef/graph/ge_attr_define.cc" + "${PARSER_DIR}/metadef/graph/ge_attr_value.cc" + "${PARSER_DIR}/metadef/graph/ge_tensor.cc" + "${PARSER_DIR}/metadef/graph/gnode.cc" + "${PARSER_DIR}/metadef/graph/graph.cc" + "${PARSER_DIR}/metadef/graph/inference_context.cc" + "${PARSER_DIR}/metadef/graph/model.cc" + "${PARSER_DIR}/metadef/graph/model_serialize.cc" + "${PARSER_DIR}/metadef/graph/node.cc" + "${PARSER_DIR}/metadef/graph/op_desc.cc" + "${PARSER_DIR}/metadef/graph/operator.cc" + "${PARSER_DIR}/metadef/graph/operator_factory.cc" + "${PARSER_DIR}/metadef/graph/operator_factory_impl.cc" + "${PARSER_DIR}/metadef/graph/opsproto/opsproto_manager.cc" + "${PARSER_DIR}/metadef/graph/option/ge_context.cc" + "${PARSER_DIR}/metadef/graph/option/ge_local_context.cc" + "${PARSER_DIR}/metadef/graph/ref_relation.cc" + "${PARSER_DIR}/metadef/graph/runtime_inference_context.cc" + "${PARSER_DIR}/metadef/graph/shape_refiner.cc" + "${PARSER_DIR}/metadef/graph/tensor.cc" + "${PARSER_DIR}/metadef/graph/types.cc" + "${PARSER_DIR}/metadef/graph/utils/anchor_utils.cc" + "${PARSER_DIR}/metadef/graph/utils/ge_ir_utils.cc" + "${PARSER_DIR}/metadef/graph/utils/graph_utils.cc" + "${PARSER_DIR}/metadef/graph/utils/node_utils.cc" + "${PARSER_DIR}/metadef/graph/utils/op_desc_utils.cc" + "${PARSER_DIR}/metadef/graph/utils/tensor_utils.cc" + "${PARSER_DIR}/metadef/graph/utils/transformer_utils.cc" + "${PARSER_DIR}/metadef/graph/utils/tuning_utils.cc" + "${PARSER_DIR}/metadef/graph/utils/type_utils.cc" + "${PARSER_DIR}/metadef/ops/op_imp.cpp" + "${PARSER_DIR}/metadef/third_party/transformer/src/axis_util.cc" + "${PARSER_DIR}/metadef/third_party/transformer/src/expand_dimension.cc" + "${PARSER_DIR}/metadef/third_party/transformer/src/transfer_shape_according_to_format.cc" +) + +# include directories +include_directories(${CMAKE_CURRENT_LIST_DIR}) +include_directories(${PARSER_DIR}/metadef/inc) +include_directories(${PARSER_DIR}/metadef/inc/graph) +include_directories(${PARSER_DIR}/metadef/inc/external) +include_directories(${PARSER_DIR}/metadef/inc/external/graph) +include_directories(${PARSER_DIR}/metadef/graph) +include_directories(${PARSER_DIR}/metadef/third_party) +include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc) +include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc/external) +include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc/external/ge) +include_directories(${PARSER_DIR}/metadef/third_party/fwkacllib/inc) +include_directories(${PARSER_DIR}/metadef/third_party/transformer/inc) +include_directories(${PARSER_DIR}/metadef) +include_directories(${CMAKE_BINARY_DIR}/proto/ge) +include_directories(${CMAKE_BINARY_DIR}/proto/ge/proto) + +############ libut_parser_graph.a ############ +add_library(ut_parser_graph STATIC + ${MATEDEF_SRC_FILES} ${PARSER_PROTO_HDRS} ${DUP_PROTO_HDRS} +) + +target_compile_definitions(ut_parser_graph PRIVATE + google=ascend_private +) + +target_compile_options(ut_parser_graph PRIVATE + -O2 -g -fno-common +) + +target_link_libraries(ut_parser_graph PRIVATE + $ + c_sec ascend_protobuf +) + + +################################################################################ +set(REGISTER_SRC_FILES + "${PARSER_DIR}/metadef/register/auto_mapping_util.cpp" + "${PARSER_DIR}/metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pass_base.cc" + "${PARSER_DIR}/metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pass_registry.cc" + "${PARSER_DIR}/metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pattern.cc" + "${PARSER_DIR}/metadef/register/graph_optimizer/fusion_statistic/fusion_statistic_recorder.cc" + "${PARSER_DIR}/metadef/register/graph_optimizer/graph_fusion/fusion_pass_registry.cc" + "${PARSER_DIR}/metadef/register/graph_optimizer/graph_fusion/fusion_pattern.cc" + "${PARSER_DIR}/metadef/register/graph_optimizer/graph_fusion/graph_fusion_pass_base.cc" + "${PARSER_DIR}/metadef/register/graph_optimizer/graph_fusion/pattern_fusion_base_pass.cc" + "${PARSER_DIR}/metadef/register/graph_optimizer/graph_fusion/pattern_fusion_base_pass_impl.cc" + "${PARSER_DIR}/metadef/register/host_cpu_context.cc" + "${PARSER_DIR}/metadef/register/infer_data_slice_registry.cc" + "${PARSER_DIR}/metadef/register/ops_kernel_builder_registry.cc" + "${PARSER_DIR}/metadef/register/op_kernel_registry.cpp" + "${PARSER_DIR}/metadef/register/op_tiling.cpp" + "${PARSER_DIR}/metadef/register/op_tiling_registry.cpp" + "${PARSER_DIR}/metadef/register/register.cpp" + "${PARSER_DIR}/metadef/register/register_format_transfer.cc" + "${PARSER_DIR}/metadef/register/register_pass.cpp" + "${PARSER_DIR}/metadef/register/scope/scope_graph.cc" + "${PARSER_DIR}/metadef/register/scope/scope_pass.cc" + "${PARSER_DIR}/metadef/register/scope/scope_pass_registry.cc" + "${PARSER_DIR}/metadef/register/scope/scope_pattern.cc" + "${PARSER_DIR}/metadef/register/scope/scope_util.cc" + "${PARSER_DIR}/metadef/register/tensor_assign.cpp" +) + +# include directories +include_directories(${CMAKE_CURRENT_LIST_DIR}) +include_directories(${CMAKE_BINARY_DIR}/proto/ge) +include_directories(${PARSER_DIR}/metadef) +include_directories(${PARSER_DIR}/metadef/graph) +include_directories(${PARSER_DIR}/metadef/inc) +include_directories(${PARSER_DIR}/metadef/inc/external) +include_directories(${PARSER_DIR}/metadef/inc/register) +include_directories(${PARSER_DIR}/metadef/third_party/fwkacllib/inc) +include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc) +include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc/external) +include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc/framework) + +############ libut_parser_register.a ############ +add_library(ut_parser_register STATIC + ${REGISTER_SRC_FILES} ${PARSER_PROTO_HDRS} +) + +target_compile_definitions(ut_parser_register PRIVATE + google=ascend_private +) + +target_compile_options(ut_parser_register PRIVATE + -O2 -g -fno-common +) + +target_link_libraries(ut_parser_register PRIVATE + $ + c_sec ascend_protobuf json +) + + +################################################################################ +set(PARSER_SRC_FILES + "${PARSER_DIR}/parser/caffe/caffe_custom_parser_adapter.cc" + "${PARSER_DIR}/parser/caffe/caffe_data_parser.cc" + "${PARSER_DIR}/parser/caffe/caffe_op_parser.cc" + "${PARSER_DIR}/parser/caffe/caffe_parser.cc" + "${PARSER_DIR}/parser/caffe/caffe_reshape_parser.cc" + "${PARSER_DIR}/parser/common/acl_graph_parser_util.cc" + "${PARSER_DIR}/parser/common/convert/pb2json.cc" + "${PARSER_DIR}/parser/common/data_op_parser.cc" + "${PARSER_DIR}/parser/common/model_saver.cc" + "${PARSER_DIR}/parser/common/op_def/arg_op.cc" + "${PARSER_DIR}/parser/common/op_def/constant_op.cc" + "${PARSER_DIR}/parser/common/op_def/defs.cc" + "${PARSER_DIR}/parser/common/op_def/fill_op.cc" + "${PARSER_DIR}/parser/common/op_def/frameworkop_op.cc" + "${PARSER_DIR}/parser/common/op_def/ir_pb_converter.cc" + "${PARSER_DIR}/parser/common/op_def/no_op_op.cc" + "${PARSER_DIR}/parser/common/op_def/operator.cc" + "${PARSER_DIR}/parser/common/op_def/op_schema.cc" + "${PARSER_DIR}/parser/common/op_def/ref_switch_op.cc" + "${PARSER_DIR}/parser/common/op_def/shape_n_op.cc" + "${PARSER_DIR}/parser/common/op_def/variable_op.cc" + "${PARSER_DIR}/parser/common/op_def/var_is_initialized_op_op.cc" + "${PARSER_DIR}/parser/common/op_map.cc" + "${PARSER_DIR}/parser/common/op_parser_factory.cc" + "${PARSER_DIR}/parser/common/parser_api.cc" + "${PARSER_DIR}/parser/common/parser_factory.cc" + "${PARSER_DIR}/parser/common/parser_fp16_t.cc" + "${PARSER_DIR}/parser/common/parser_inner_ctx.cc" + "${PARSER_DIR}/parser/common/parser_types.cc" + "${PARSER_DIR}/parser/common/parser_utils.cc" + "${PARSER_DIR}/parser/common/pass_manager.cc" + "${PARSER_DIR}/parser/common/pre_checker.cc" + "${PARSER_DIR}/parser/common/proto_file_parser.cc" + "${PARSER_DIR}/parser/common/register_tbe.cc" + "${PARSER_DIR}/parser/common/tbe_plugin_loader.cc" + "${PARSER_DIR}/parser/common/thread_pool.cc" + "${PARSER_DIR}/parser/onnx/onnx_constant_parser.cc" + "${PARSER_DIR}/parser/onnx/onnx_custom_parser_adapter.cc" + "${PARSER_DIR}/parser/onnx/onnx_data_parser.cc" + "${PARSER_DIR}/parser/onnx/onnx_parser.cc" + "${PARSER_DIR}/parser/onnx/onnx_util.cc" + "${PARSER_DIR}/parser/tensorflow/graph_functiondef.cc" + "${PARSER_DIR}/parser/tensorflow/graph_optimizer.cc" + "${PARSER_DIR}/parser/tensorflow/iterator_fusion_pass.cc" + "${PARSER_DIR}/parser/tensorflow/scope/scope_pass_manager.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_arg_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_auto_mapping_parser_adapter.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_constant_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_custom_parser_adapter.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_data_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_enter_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_fill_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_frameworkop_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_fusionop_util.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_fusion_custom_parser_adapter.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_fusion_op_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_identity_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_merge_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_no_op_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_ref_switch_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_reshape_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_shape_n_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_squeeze_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_util.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_variable_v2_parser.cc" + "${PARSER_DIR}/parser/tensorflow/tensorflow_var_is_initialized_op_parser.cc" +) + +# include directories +include_directories(${CMAKE_CURRENT_LIST_DIR}) +include_directories(${CMAKE_BINARY_DIR}/proto/ge) +include_directories(${PARSER_DIR}) +include_directories(${PARSER_DIR}/inc) +include_directories(${PARSER_DIR}/parser) +include_directories(${PARSER_DIR}/metadef/inc) +include_directories(${PARSER_DIR}/metadef/inc/external) +include_directories(${PARSER_DIR}/metadef/inc/register) +include_directories(${PARSER_DIR}/metadef/third_party/fwkacllib/inc) +include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc) +include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc/external) +include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc/framework) + + +set(PARSER_UT_FILES + "testcase/parser_unittest.cc" +) + +############ libut_parser_common.a ############ +add_library(ut_parser_common STATIC + ${PARSER_SRC_FILES} ${PARSER_PROTO_HDRS} +) + +target_compile_definitions(ut_parser_common PRIVATE + google=ascend_private +) + +target_compile_options(ut_parser_common PRIVATE + -g --coverage -fprofile-arcs -ftest-coverage + -Werror=format +) + +target_link_libraries(ut_parser_common PRIVATE + $ + ut_parser_proto ut_parser_graph c_sec + ascend_protobuf + json +) + + +################################################################################ +add_executable(ut_parser + ${PARSER_UT_FILES} ${PARSER_PROTO_SRCS} +) + +target_compile_options(ut_parser PRIVATE + -g +) + +target_compile_definitions(ut_parser PRIVATE + google=ascend_private +) + +target_link_libraries(ut_parser + $ + ut_parser_proto + -Wl,--whole-archive ut_parser_common -Wl,--no-whole-archive + ut_parser_graph ut_parser_register error_manager_stub mmpa_stub + gtest gtest_main slog_stub ascend_protobuf c_sec -lrt -ldl -lgcov +) diff --git a/tests/ut/parser/testcase/parser_unittest.cc b/tests/ut/parser/testcase/parser_unittest.cc new file mode 100644 index 0000000..4885256 --- /dev/null +++ b/tests/ut/parser/testcase/parser_unittest.cc @@ -0,0 +1,37 @@ +/** + * Copyright 2019-2020 Huawei Technologies Co., Ltd + * + * 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 +#include + +#include "parser/common/op_parser_factory.h" + + +namespace ge { +class UtestParser : public testing::Test { + protected: + void SetUp() {} + + void TearDown() {} +}; + +TEST_F(UtestParser, base) { + std::shared_ptr factory = OpParserFactory::Instance(domi::TENSORFLOW); + EXPECT_NE(factory, nullptr); +} + + +} // namespace ge \ No newline at end of file