Browse Source

Add UT and format check

pull/263/head
zhangxiaokun 4 years ago
parent
commit
2cac0b68bd
18 changed files with 1182 additions and 25 deletions
  1. +30
    -0
      .gitignore
  2. +3
    -0
      CMakeLists.txt
  3. +43
    -19
      build.sh
  4. +64
    -0
      cmake/external_libs/gtest.cmake
  5. +8
    -3
      cmake/external_libs/json.cmake
  6. +12
    -3
      cmake/external_libs/securec.cmake
  7. +28
    -0
      tests/CMakeLists.txt
  8. +34
    -0
      tests/depends/error_manager/CMakeLists.txt
  9. +95
    -0
      tests/depends/error_manager/src/error_manager_stub.cc
  10. +39
    -0
      tests/depends/mmpa/CMakeLists.txt
  11. +284
    -0
      tests/depends/mmpa/src/mmpa_stub.cc
  12. +28
    -0
      tests/depends/profiler/CMakeLists.txt
  13. +34
    -0
      tests/depends/profiler/src/profiler_stub.cc
  14. +26
    -0
      tests/depends/slog/CMakeLists.txt
  15. +48
    -0
      tests/depends/slog/src/slog_stub.cc
  16. +24
    -0
      tests/ut/CMakeLists.txt
  17. +345
    -0
      tests/ut/parser/CMakeLists.txt
  18. +37
    -0
      tests/ut/parser/testcase/parser_unittest.cc

+ 30
- 0
.gitignore View File

@@ -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-*

+ 3
- 0
CMakeLists.txt View File

@@ -16,6 +16,7 @@ if (ENABLE_OPEN_SRC)
include(cmake/external_libs/protoc.cmake) include(cmake/external_libs/protoc.cmake)
include(cmake/external_libs/securec.cmake) include(cmake/external_libs/securec.cmake)
include(cmake/external_libs/json.cmake) include(cmake/external_libs/json.cmake)
include(cmake/external_libs/gtest.cmake)
include(cmake/FindModule.cmake) include(cmake/FindModule.cmake)
include(cmake/intf_pub_linux.cmake) include(cmake/intf_pub_linux.cmake)


@@ -37,6 +38,8 @@ if (ENABLE_OPEN_SRC)
find_module(static_mmpa libmmpa.a ${GE_LIB_PATH}) find_module(static_mmpa libmmpa.a ${GE_LIB_PATH})
elseif(ENABLE_GE_COV OR ENABLE_GE_UT) elseif(ENABLE_GE_COV OR ENABLE_GE_UT)
message(STATUS "Runing on llt mode, no need to depend other component") message(STATUS "Runing on llt mode, no need to depend other component")
elseif(ENABLE_PARSER_UT OR ENABLE_PARSER_COV)
add_subdirectory(tests)
else() else()
if(DEFINED ENV{ASCEND_CUSTOM_PATH}) if(DEFINED ENV{ASCEND_CUSTOM_PATH})
set(ASCEND_DIR $ENV{ASCEND_CUSTOM_PATH}) set(ASCEND_DIR $ENV{ASCEND_CUSTOM_PATH})


+ 43
- 19
build.sh View File

@@ -53,10 +53,10 @@ checkopts()
{ {
VERBOSE="" VERBOSE=""
THREAD_NUM=8 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" GE_ONLY="on"
ENABLE_GITEE="off" ENABLE_GITEE="off"
# Process the options # Process the options
@@ -65,19 +65,18 @@ checkopts()
OPTARG=$(echo ${OPTARG} | tr '[A-Z]' '[a-z]') OPTARG=$(echo ${OPTARG} | tr '[A-Z]' '[a-z]')
case "${opt}" in case "${opt}" in
u) u)
# ENABLE_GE_UT_ONLY_COMPILE="on"
ENABLE_GE_UT="on"
ENABLE_PARSER_UT="on"
GE_ONLY="off" GE_ONLY="off"
;; ;;
s) s)
ENABLE_GE_ST="on"
ENABLE_PARSER_ST="on"
;; ;;
t) t)
ENABLE_GE_UT="on"
GE_ONLY="off"
;;
ENABLE_PARSER_UT="on"
GE_ONLY="off"
;;
c) c)
ENABLE_GE_COV="on"
ENABLE_PARSER_COV="on"
GE_ONLY="off" GE_ONLY="off"
;; ;;
h) h)
@@ -124,17 +123,17 @@ build_parser()
cd "${BUILD_PATH}" cd "${BUILD_PATH}"
CMAKE_ARGS="-DBUILD_PATH=$BUILD_PATH -DGE_ONLY=$GE_ONLY" 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 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 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 fi


if [[ "X$ENABLE_GITEE" = "Xon" ]]; then if [[ "X$ENABLE_GITEE" = "Xon" ]]; then
@@ -149,7 +148,13 @@ build_parser()
echo "execute command: cmake ${CMAKE_ARGS} .. failed." echo "execute command: cmake ${CMAKE_ARGS} .. failed."
return 1 return 1
fi 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 $? ] if [ 0 -ne $? ]
then then
echo "execute command: make ${VERBOSE} -j${THREAD_NUM} && make install failed." 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 ----------------" 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 output package in tar form, including ut/st libraries/executables
generate_package() generate_package()
{ {
@@ -212,7 +236,7 @@ generate_package()
tar -cf parser_lib.tar fwkacllib acllib atc tar -cf parser_lib.tar fwkacllib acllib atc
} }


if [[ "X$ENABLE_GE_UT" = "Xoff" ]]; then
if [[ "X$ENABLE_PARSER_UT" = "Xoff" ]]; then
generate_package generate_package
fi fi
echo "---------------- Parser package archive generated ----------------" echo "---------------- Parser package archive generated ----------------"

+ 64
- 0
cmake/external_libs/gtest.cmake View File

@@ -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 <SOURCE_DIR>
-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)

+ 8
- 3
cmake/external_libs/json.cmake View File

@@ -5,15 +5,20 @@ endif()
include(ExternalProject) include(ExternalProject)


set(JSON_SRC_DIR ${CMAKE_BINARY_DIR}/opensrc/json/include) 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(REQ_URL "https://gitee.com/mirrors/JSON-for-Modern-CPP/repository/archive/v3.6.1.zip")
# set(MD5 "5bda78ce308e6cfcf614dcf1d5ff27a7") # set(MD5 "5bda78ce308e6cfcf614dcf1d5ff27a7")
# set(JSON_INCLUDE_DIR "${JSON_SRC_DIR}/include") # 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(REQ_URL "https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip")
set(MD5 "0dc903888211db3a0f170304cd9f3a89") set(MD5 "0dc903888211db3a0f170304cd9f3a89")
set(JSON_INCLUDE_DIR ${JSON_SRC_DIR}) set(JSON_INCLUDE_DIR ${JSON_SRC_DIR})
#endif ()
endif ()
ExternalProject_Add(json_build ExternalProject_Add(json_build
URL ${REQ_URL} URL ${REQ_URL}
#URL /home/txd/workspace/cloud_code/pkg/include.zip #URL /home/txd/workspace/cloud_code/pkg/include.zip


+ 12
- 3
cmake/external_libs/securec.cmake View File

@@ -10,11 +10,20 @@ if ((${CMAKE_INSTALL_PREFIX} STREQUAL /usr/local) OR
message(STATUS "No install prefix selected, default to ${CMAKE_INSTALL_PREFIX}.") message(STATUS "No install prefix selected, default to ${CMAKE_INSTALL_PREFIX}.")
endif() 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 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 #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} CONFIGURE_COMMAND ${CMAKE_COMMAND}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}


+ 28
- 0
tests/CMakeLists.txt View File

@@ -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()

+ 34
- 0
tests/depends/error_manager/CMakeLists.txt View File

@@ -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
$<BUILD_INTERFACE:intf_pub>
)

+ 95
- 0
tests/depends/error_manager/src/error_manager_stub.cc View File

@@ -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<std::string, std::string> &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<std::string> &key,
const std::vector<std::string> &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<std::string, std::string> &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<std::string, std::vector<std::string>> &msg_map) { return 0; }


void ErrorManager::SetStage(const std::string &first_stage, const std::string &second_stage) {
}

void ErrorManager::GenWorkStreamIdDefault() {
}

+ 39
- 0
tests/depends/mmpa/CMakeLists.txt View File

@@ -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
$<BUILD_INTERFACE:intf_pub>
-Wl,--no-as-needed
ascend_protobuf
-Wl,--as-needed
c_sec
)

+ 284
- 0
tests/depends/mmpa/src/mmpa_stub.cc View File

@@ -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;
}


+ 28
- 0
tests/depends/profiler/CMakeLists.txt View File

@@ -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
$<BUILD_INTERFACE:intf_pub>
)

+ 34
- 0
tests/depends/profiler/src/profiler_stub.cc View File

@@ -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;
}


+ 26
- 0
tests/depends/slog/CMakeLists.txt View File

@@ -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
$<BUILD_INTERFACE:intf_pub>
)

+ 48
- 0
tests/depends/slog/src/slog_stub.cc View File

@@ -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 <stdarg.h>
#include <stdio.h>
#include <string.h>

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;
}

+ 24
- 0
tests/ut/CMakeLists.txt View File

@@ -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)


+ 345
- 0
tests/ut/parser/CMakeLists.txt View File

@@ -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
$<BUILD_INTERFACE:intf_pub>
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
$<BUILD_INTERFACE:intf_pub>
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
$<BUILD_INTERFACE:intf_pub>
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
$<BUILD_INTERFACE:intf_pub>
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
$<BUILD_INTERFACE:intf_pub>
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
)

+ 37
- 0
tests/ut/parser/testcase/parser_unittest.cc View File

@@ -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 <gtest/gtest.h>
#include <iostream>

#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<OpParserFactory> factory = OpParserFactory::Instance(domi::TENSORFLOW);
EXPECT_NE(factory, nullptr);
}


} // namespace ge

Loading…
Cancel
Save