Skip to content
This repository was archived by the owner on May 9, 2024. It is now read-only.

Added sanity tests run on windows #486

Merged
merged 1 commit into from
May 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,12 @@ jobs:
& $env:CONDA\condabin\conda.bat info
& $env:CONDA\condabin\conda.bat list -n omnisci-dev
& $env:CONDA\condabin\conda.bat run --no-capture-output -n omnisci-dev omniscidb\scripts\conda\build.bat ${{ inputs.options }}
Compress-Archive -Path . -DestinationPath $env:TMP\build.zip
Compress-Archive -Path * -DestinationPath $env:TMP\build.zip

- name: Upload build and src files
uses: actions/upload-artifact@v3
with:
name: ${{ env.RUN_STAMP }}-build
name: ${{ env.RUN_STAMP }}-win-build
path: ${{ env.TMP }}/build.zip

- name: Upload logs
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,14 @@ jobs:
name: cpu
options: -DCMAKE_BUILD_TYPE=Release -DENABLE_FOLLY=off -G "Visual Studio 17 2022"

windows-sanity:
name: Sanity test (Gtests)
needs: windows-build
uses: ./.github/workflows/test-windows.yml
with:
cache-suffix: ${{ needs.windows-build.outputs.cache-suffix }}
test: sanity

modin:
name: Integration HDK with Modin (Pytest)
uses: ./.github/workflows/modin.yml
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/test-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Reusable test action on windows
on:
workflow_call:
inputs:
name:
type: string
default: cpu
cache-suffix:
type: string
required: true
test:
type: string

jobs:
test:
name: Test (Win - Conda - ${{ inputs.name }})
runs-on: windows-latest

steps:
- name: Set env context
run: |
echo RUN_STAMP=${{ runner.os }}-${{ inputs.name }} >> $env:GITHUB_ENV
echo CONDA_ENV_PATH=$env:CONDA/envs/omnisci-dev >> $env:GITHUB_ENV

- uses: actions/download-artifact@v3
with:
name: ${{ env.RUN_STAMP }}-win-build

- name: Unpack build files
run: |
Expand-Archive -DestinationPath . build.zip
dir

- name: Restore Conda env cache
uses: actions/cache@v3
with:
path: |
${{ env.CONDA_ENV_PATH }}
key: ${{ env.RUN_STAMP }}-conda-${{ hashFiles('omniscidb/scripts/mapd-deps-conda-windows-env.yml') }}-${{ inputs.cache-suffix }}

- name: Run sanity tests
if: inputs.test == 'sanity'
run: |
& $env:CONDA\condabin\conda.bat run --no-capture-output -n omnisci-dev omniscidb/scripts/conda/test.bat

55 changes: 38 additions & 17 deletions omniscidb/Tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -245,39 +245,60 @@ list(APPEND SANITY_TESTS StringDictionaryHashTest)

set_tests_properties(${SANITY_TESTS} PROPERTIES LABELS "sanity")

if (WIN32)
# The following command doesn't create a directory if it already
# exists but prints and error if this directore cannot be created.
set(MKDIR_TMP dir tmp >nul 2>nul || mkdir tmp >nul 2>nul || mkdir tmp)
# On windows "env" command is available as a part of binaries that
# conda installs in omnisci-dev environment. The problem with this
# "env" command is that it converts paths in %PATH% into mingw style
# paths where %CONDA_PREFIX%\Library\bin path is converted into
# /usr/bin or /bin path that are valid only for mingw
# applications. Running HDK tests with PATH pointing somewhere to
# /usr/bin breaks DLL search for libraries installed into
# %CONDA_PREFIX%\Library\bin, e.g. all boost libraries. So instead
# of "env" from conda we need to use a windows replacement here.
# Note starting \" quote here and finishing \" in
# EXCLUDE_SANITY_TESTS. It makes the whole command to be enclosed in
# quotes that /s instructs to strip.
set(ENV_COMMAND cmd /s /v /c \"set AWS_REGION=${AWS_REGION} && set AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} && set AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} && )
# The following tests fail on Windows:
# ArrowBasedExecuteTest, ArrowStorageSqlTest, NoCatalogRelAlgTest
# ExecutionSequenceTest, CorrelatedSubqueryTest
# excluded because of https://github.com/intel-ai/hdk/issues/488.
# ResultSetTest excluded because of https://github.com/intel-ai/hdk/issues/489
# StringDictionaryTest excluded because of https://github.com/intel-ai/hdk/issues/490
# QueryBuilderTest excluded because of https://github.com/intel-ai/hdk/issues/491
set(EXCLUDE_SANITY_TESTS "-E \"(ArrowBasedExecuteTest^|ResultSetTest^|StringDictionaryTest^|QueryBuilderTest^|ArrowStorageSqlTest^|NoCatalogRelAlgTest^|ExecutionSequenceTest^|CorrelatedSubqueryTest)\""\")
else()
set(MKDIR_TMP mkdir -p tmp)
set(ENV_COMMAND env AWS_REGION=${AWS_REGION} AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY})
endif()

add_custom_target(sanity_tests
COMMAND mkdir -p tmp
COMMAND ${MKDIR_TMP}
COMMAND touch tmp/DictPayload
COMMAND env AWS_REGION=${AWS_REGION}
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
${CMAKE_CTEST_COMMAND} --verbose --label-regex sanity
COMMAND ${ENV_COMMAND} $<SHELL_PATH:${CMAKE_CTEST_COMMAND}> --verbose --label-regex sanity ${EXCLUDE_SANITY_TESTS}
DEPENDS ${TEST_PROGRAMS}
USES_TERMINAL)

cmake_host_system_information(RESULT CPU_NUM QUERY NUMBER_OF_PHYSICAL_CORES)
add_custom_target(sanity_tests_par
COMMAND mkdir -p tmp
COMMAND ${MKDIR_TMP}
COMMAND touch tmp/DictPayload
COMMAND env AWS_REGION=${AWS_REGION}
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
${CMAKE_CTEST_COMMAND} --verbose --label-regex sanity -j ${CPU_NUM}
COMMAND ${ENV_COMMAND} $<SHELL_PATH:${CMAKE_CTEST_COMMAND}> --verbose --label-regex sanity -j ${CPU_NUM} ${EXCLUDE_SANITY_TESTS}
DEPENDS ${TEST_PROGRAMS}
USES_TERMINAL)

add_custom_target(all_tests
COMMAND mkdir -p tmp
COMMAND ${MKDIR_TMP}
COMMAND touch tmp/DictPayload
COMMAND env AWS_REGION=${AWS_REGION}
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
${CMAKE_CTEST_COMMAND} --verbose
COMMAND ${ENV_COMMAND} $<SHELL_PATH:${CMAKE_CTEST_COMMAND}> --verbose ${EXCLUDE_SANITY_TESTS}
DEPENDS ${TEST_PROGRAMS} UtilTest StringDictionaryTest StringTransformTest
USES_TERMINAL)

add_custom_target(topk_tests
COMMAND mkdir -p tmp
COMMAND ${MKDIR_TMP}
COMMAND touch tmp/DictPayload
COMMAND ${CMAKE_CTEST_COMMAND} --verbose --tests-regex "\"(TopKTest)\""
DEPENDS TopKTest)
Expand All @@ -292,7 +313,7 @@ if(ENABLE_L0)
set_tests_properties(${ENABLING_TESTS} PROPERTIES LABELS "enabling")

add_custom_target(enabling_tests
COMMAND mkdir -p tmp
COMMAND ${MKDIR_TMP}
COMMAND touch tmp/DictPayload
COMMAND ${CMAKE_CTEST_COMMAND} --verbose --label-regex enabling
DEPENDS ${ENABLING_TESTS}
Expand Down
38 changes: 38 additions & 0 deletions omniscidb/scripts/conda/test.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
cd %~dp0\..\..\..

rem Set PATH variable to all subdirectories where DLLs are located
rem Make sure you don't add spaces in the lines below (even at the
rem beginning of the line) because it adds spaces to paths.

set PATH=%PATH%;%CONDA_PREFIX%\Library\lib\jvm\bin\server
set WORKDIR=%CD%\build\omniscidb
set MODE=Release
set PATH=%PATH%;^
%WORKDIR%\ThirdParty\googletest\%MODE%;^
%WORKDIR%\Tests\ArrowSQLRunner\%MODE%;^
%WORKDIR%\ArrowStorage\%MODE%;^
%WORKDIR%\IR\%MODE%;^
%WORKDIR%\QueryEngine\%MODE%;^
%WORKDIR%\Logger\%MODE%;^
%WORKDIR%\Shared\%MODE%;^
%WORKDIR%\SqliteConnector\%MODE%;^
%WORKDIR%\StringDictionary\%MODE%;^
%WORKDIR%\DataMgr\%MODE%;^
%WORKDIR%\Calcite\%MODE%;^
%WORKDIR%\Analyzer\%MODE%;^
%WORKDIR%\Utils\%MODE%;^
%WORKDIR%\SchemaMgr\%MODE%;^
%WORKDIR%\L0Mgr\%MODE%;^
%WORKDIR%\OSDependent\Windows\%MODE%;^
%WORKDIR%\CudaMgr\%MODE%;^
%WORKDIR%\ResultSet\%MODE%;^
%WORKDIR%\ResultSetRegistry\%MODE%;^
%WORKDIR%\QueryBuilder\%MODE%;^
%WORKDIR%\QueryOptimizer\%MODE%;^
%WORKDIR%\ConfigBuilder\%MODE%

set PATH

ldd build\omniscidb\Tests\Release\ArrowBasedExecuteTest.exe

cmake --build build --config Release --target sanity_tests --verbose