From b74874ebbea1cc9c615c63febd9719577e2183a2 Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sat, 12 Jun 2021 23:39:27 +0200 Subject: [PATCH 1/5] Add workflow file --- .github/workflows/C_Integration.yml | 66 +++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/C_Integration.yml diff --git a/.github/workflows/C_Integration.yml b/.github/workflows/C_Integration.yml new file mode 100644 index 0000000..0ab3ed1 --- /dev/null +++ b/.github/workflows/C_Integration.yml @@ -0,0 +1,66 @@ +name: CMake + +on: [push] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Release + +jobs: + build: + # The CMake configure and build commands are platform agnostic and should work equally + # well on Windows or Mac. You can convert this to a matrix build if you need + # cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: ubuntu-20.04 + + steps: + - name: Install gtest manually + run: sudo apt install googletest libgtest-dev lcov + - uses: actions/checkout@v2 + + - name: Create Build Environment + # Some projects don't allow in-source building, so create a separate build directory + # We'll use this as our working directory for all subsequent commands + run: cmake -E make_directory ${{runner.workspace}}/build + + - name: Configure CMake + # Use a bash shell so we can use the same syntax for environment variable + # access regardless of the host operating system + shell: bash + working-directory: ${{runner.workspace}}/build + # Note the current convention is to use the -S and -B options here to specify source + # and build directories, but this is only available with CMake 3.13 and higher. + # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCODE_COVERAGE=ON -DENABLE_COVERAGE=ON + + - name: Build + working-directory: ${{runner.workspace}}/build + shell: bash + # Execute the build. You can specify a specific target with "--target " + run: cmake --build . --config $BUILD_TYPE + + - name: Run tests + working-directory: ${{runner.workspace}}/build + shell: bash + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest -V -C $BUILD_TYPE + + - name: Run Gcov/Lcov and push report to Codecov + working-directory: ${{github.workspace}} + shell: bash + run: | + find ${{runner.workspace}}/build -iname '*.gcno' -exec cp {} ./ \; + find ${{runner.workspace}}/build -iname '*.gcda' -exec cp {} ./ \; + gcov -o . ./tests/race_test.cpp --object-directory ./ + lcov --directory . --capture --output-file coverage.info + lcov --remove coverage.info '/usr/*' '*/tests/*' --output-file coverage.info + lcov --list coverage.info + bash <(curl -s https://codecov.io/bash) -X gcov -f coverage.info || echo "Failed to upload to Codecov" + + #- name: Upload coverage to Codecov + # uses: codecov/codecov-action@v1 + # with: + # fail_ci_if_error: true + # gcov_path_exclude: tests/ From 573d40ca43adc051c01c5935ee33de18443b3a94 Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sat, 12 Jun 2021 23:46:41 +0200 Subject: [PATCH 2/5] Specify unittests Cmake file as root file --- .github/workflows/C_Integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/C_Integration.yml b/.github/workflows/C_Integration.yml index 0ab3ed1..a707390 100644 --- a/.github/workflows/C_Integration.yml +++ b/.github/workflows/C_Integration.yml @@ -32,7 +32,7 @@ jobs: # Note the current convention is to use the -S and -B options here to specify source # and build directories, but this is only available with CMake 3.13 and higher. # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCODE_COVERAGE=ON -DENABLE_COVERAGE=ON + run: cmake $GITHUB_WORKSPACE/src/unittests -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCODE_COVERAGE=ON -DENABLE_COVERAGE=ON - name: Build working-directory: ${{runner.workspace}}/build From b87a63d659784bf78e2cc9471a32705f18239dbc Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sat, 12 Jun 2021 23:56:41 +0200 Subject: [PATCH 3/5] List contents of workspace folder --- .github/workflows/C_Integration.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/C_Integration.yml b/.github/workflows/C_Integration.yml index a707390..9347303 100644 --- a/.github/workflows/C_Integration.yml +++ b/.github/workflows/C_Integration.yml @@ -32,7 +32,9 @@ jobs: # Note the current convention is to use the -S and -B options here to specify source # and build directories, but this is only available with CMake 3.13 and higher. # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: cmake $GITHUB_WORKSPACE/src/unittests -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCODE_COVERAGE=ON -DENABLE_COVERAGE=ON + run: | + find $GITHUB_WORKSPACE -type d + cmake $GITHUB_WORKSPACE/src/unittests -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCODE_COVERAGE=ON -DENABLE_COVERAGE=ON - name: Build working-directory: ${{runner.workspace}}/build From ed8a082c7357cc5c2f9991dfe7fc18f7aa1becbe Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sun, 13 Jun 2021 00:07:11 +0200 Subject: [PATCH 4/5] Add test and fix build issues --- .github/workflows/C_Integration.yml | 4 +--- src/unittests/CMakeLists.txt | 34 +++++++++++++++++++++++++++++ src/unittests/Common_Defs_gtest.cc | 20 +++++++++++++++++ 3 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 src/unittests/CMakeLists.txt create mode 100644 src/unittests/Common_Defs_gtest.cc diff --git a/.github/workflows/C_Integration.yml b/.github/workflows/C_Integration.yml index 9347303..a707390 100644 --- a/.github/workflows/C_Integration.yml +++ b/.github/workflows/C_Integration.yml @@ -32,9 +32,7 @@ jobs: # Note the current convention is to use the -S and -B options here to specify source # and build directories, but this is only available with CMake 3.13 and higher. # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: | - find $GITHUB_WORKSPACE -type d - cmake $GITHUB_WORKSPACE/src/unittests -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCODE_COVERAGE=ON -DENABLE_COVERAGE=ON + run: cmake $GITHUB_WORKSPACE/src/unittests -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCODE_COVERAGE=ON -DENABLE_COVERAGE=ON - name: Build working-directory: ${{runner.workspace}}/build diff --git a/src/unittests/CMakeLists.txt b/src/unittests/CMakeLists.txt new file mode 100644 index 0000000..321ca46 --- /dev/null +++ b/src/unittests/CMakeLists.txt @@ -0,0 +1,34 @@ +################################################################## +## TaskSanitizer: a lightweight determinacy race checking +## tool for OpenMP task applications +## +## Copyright (c) 2015 - 2018 Hassan Salehe Matar +## Copying or using this code by any means whatsoever +## without consent of the owner is strictly prohibited. +## +## Contact: hassansalehe-at-gmail-dot-com +## +################################################################## + +cmake_minimum_required(VERSION 3.4.3) + +# Locate GTest package +find_package(GTest REQUIRED) +include_directories(${GTEST_INCLUDE_DIRS}) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/.. + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/../../bin/include + ${CMAKE_CURRENT_SOURCE_DIR}/../common + ${CMAKE_CURRENT_SOURCE_DIR}/../detector + ${CMAKE_CURRENT_SOURCE_DIR}/../detector/commutativity) + +add_compile_options(-g -O0 -Wall -fprofile-arcs -ftest-coverage -fpermissive) +set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE ON) +link_libraries(${GTEST_LIBRARIES} pthread gtest_main gcov --coverage) + +# Link commonTests with what we want to test and +# the GTest and pthread library +add_executable(commonTests Common_Defs_gtest.cc) + +# Add tests for Ctest +add_test(common_tests, commonTests) diff --git a/src/unittests/Common_Defs_gtest.cc b/src/unittests/Common_Defs_gtest.cc new file mode 100644 index 0000000..c2592ec --- /dev/null +++ b/src/unittests/Common_Defs_gtest.cc @@ -0,0 +1,20 @@ +#include "common/defs.h" +#include + +//! \brief Test that OperRepresentation converts operations +//! to approriate string representations. +TEST(OperRepresentation, TestConversion) { + ASSERT_EQ("ADD", OperRepresentation(OPERATION::ADD)); + ASSERT_EQ("SUB", OperRepresentation(OPERATION::SUB)); + ASSERT_EQ("MUL", OperRepresentation(OPERATION::MUL)); + ASSERT_EQ("DIV", OperRepresentation(OPERATION::DIV)); + ASSERT_EQ("RET", OperRepresentation(OPERATION::RET)); + ASSERT_EQ("SHL", OperRepresentation(OPERATION::SHL)); + ASSERT_EQ("CALL", OperRepresentation(OPERATION::CALL)); + ASSERT_EQ("LOAD", OperRepresentation(OPERATION::LOAD)); + ASSERT_EQ("STORE", OperRepresentation(OPERATION::STORE)); + ASSERT_EQ("ALLOCA", OperRepresentation(OPERATION::ALLOCA)); + ASSERT_EQ("BITCAST", OperRepresentation(OPERATION::BITCAST)); + ASSERT_EQ("GETELEMENTPTR", OperRepresentation(OPERATION::GETELEMENTPTR)); +} + From 025ee300c3e5b86ffd0f487fe3ec778e18379e7f Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sun, 13 Jun 2021 00:12:47 +0200 Subject: [PATCH 5/5] Enable testing --- src/unittests/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/unittests/CMakeLists.txt b/src/unittests/CMakeLists.txt index 321ca46..1d48499 100644 --- a/src/unittests/CMakeLists.txt +++ b/src/unittests/CMakeLists.txt @@ -12,6 +12,8 @@ cmake_minimum_required(VERSION 3.4.3) +enable_testing() + # Locate GTest package find_package(GTest REQUIRED) include_directories(${GTEST_INCLUDE_DIRS})