diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 544714139c..60241579f9 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -63,173 +63,3 @@ jobs: - name: Collect infinity unit test debug output run: cat unittest_debug.log 2>/dev/null || true - - - name: Install pysdk - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "cd /infinity/python && python3 setup.py install" - - - name: Start infinity pysdk & http_api debug version - if: ${{ !cancelled() && !failure() }} - run: | - # Run a command in the background - sudo docker exec infinity_build bash -c "cd /infinity/ && rm -fr /var/infinity && cmake-build-debug/src/infinity > debug.log 2>&1" & - - - name: pysdk test debug version - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "cd /infinity/ && python3 tools/run_pysdk_test.py" && sleep 1s - - - name: parallel test debug version - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "cd /infinity/ && python3 tools/run_parallel_test.py" && sleep 1s - - - name: http_api test debug version - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "cd /infinity/ && python3 tools/run_http_api.py" && sleep 1s - - - name: Stop infinity pysdk & http_api debug - if: ${{ !cancelled() }} # always run this step even if previous steps failed - run: | - sudo bash ${GITHUB_WORKSPACE}/scripts/timeout_kill.sh $(pidof cmake-build-debug/src/infinity) 20 - if [ $? -ne 0 ]; then - echo "Failed to kill infinity debug version" - exit 1 - fi - - - name: Start infinity sqllogictest debug version - if: ${{ !cancelled() && !failure() }} - run: | - # Run a command in the background - sudo docker exec infinity_build bash -c "cd /infinity/ && rm -fr /var/infinity && cmake-build-debug/src/infinity > debug.log 2>&1" & - - - name: sqllogictest debug version - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "cd /infinity/ && python3 tools/sqllogictest.py" - - - name: Stop infinity sqllogictest debug - if: ${{ !cancelled() }} # always run this step even if previous steps failed - run: | - sudo bash ${GITHUB_WORKSPACE}/scripts/timeout_kill.sh $(pidof cmake-build-debug/src/infinity) 20 - if [ $? -ne 0 ]; then - echo "Failed to kill infinity debug version" - exit 1 - fi - - - name: Collect infinity debug output - # GitHub Actions interprets output lines starting with "Error" as error messages, and it automatically sets the step status to failed when such lines are detected. - run: cat debug.log 2>/dev/null || true - - release_tests: - name: release_tests and benchmark - # https://docs.github.com/en/actions/using-jobs/using-conditions-to-control-job-execution - # https://github.com/orgs/community/discussions/26261 - if: ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'ci') }} - runs-on: [ "self-hosted", "benchmark" ] - steps: - # https://github.com/hmarr/debug-action - #- uses: hmarr/debug-action@v2 - - - name: Show PR labels - if: ${{ !cancelled() && !failure() }} - run: | - echo "Workflow triggered by ${{ github.event_name }}" - if [[ ${{ github.event_name }} == 'pull_request' ]]; then - echo "PR labels: ${{ join(github.event.pull_request.labels.*.name, ', ') }}" - fi - - - name: Ensure workspace ownership - if: ${{ !cancelled() && !failure() }} - run: echo "chown -R $USER $GITHUB_WORKSPACE" && sudo chown -R $USER $GITHUB_WORKSPACE - - - name: Check out code - if: ${{ !cancelled() && !failure() }} - uses: actions/checkout@v3 - - - name: Start builder container - if: ${{ !cancelled() && !failure() }} - run: | - TZ=$(readlink -f /etc/localtime | awk -F '/zoneinfo/' '{print $2}') - sudo docker rm -f infinity_build && sudo docker run -d --privileged --name infinity_build -e TZ=$TZ -v $PWD:/infinity -v /boot:/boot infiniflow/infinity_builder:ubuntu2310 - - - name: Build release version - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "git config --global safe.directory \"*\" && cd /infinity && rm -fr cmake-build-release && mkdir -p cmake-build-release && cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_JOB_POOL_LINK:STRING=link_pool -DCMAKE_JOB_POOLS:STRING=link_pool=4 -S /infinity -B /infinity/cmake-build-release && cmake --build /infinity/cmake-build-release" - - - name: Unit test release version - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "mkdir -p /var/infinity && cd /infinity/ && cmake-build-release/src/test_main > unittest_release.log 2>&1" - - - name: Collect infinity unit test release output - run: cat unittest_release.log 2>/dev/null || true - - - name: Install pysdk - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "cd /infinity/python && rm -fr dist/* && python setup.py sdist bdist_wheel && pip uninstall -y infinity-sdk && pip install dist/*.whl" - - - name: Start infinity pysdk & http_api release version - if: ${{ !cancelled() && !failure() }} - run: | - # Run a command in the background - sudo docker exec infinity_build bash -c "cd /infinity/ && rm -fr /var/infinity && cmake-build-release/src/infinity > release.log 2>&1" & - - - name: pysdk test release version - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "cd /infinity/ && python3 tools/run_pysdk_test.py" && sleep 1s - - - name: parallel test release version - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "cd /infinity/ && python3 tools/run_parallel_test.py" && sleep 1s - - - name: http_api test release version - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "cd /infinity/ && python3 tools/run_http_api.py" && sleep 1s - - - name: Stop infinity pysdk & http_api release - if: ${{ !cancelled() }} # always run this step even if previous steps failed - run: | - sudo bash ${GITHUB_WORKSPACE}/scripts/timeout_kill.sh $(pidof cmake-build-release/src/infinity) 20 - if [ $? -ne 0 ]; then - echo "Failed to kill infinity debug version" - exit 1 - fi - - - name: Start infinity sqllogictest release version - if: ${{ !cancelled() && !failure() }} - run: | - sudo docker exec infinity_build bash -c "cd /infinity/ && rm -fr /var/infinity && cmake-build-release/src/infinity > release.log 2>&1" & - - - name: sqllogictest release version - if: ${{ !cancelled() && !failure() }} - run: sudo docker exec infinity_build bash -c "cd /infinity/ && python3 tools/sqllogictest.py" - - - name: Stop infinity sqllogictest release - if: ${{ !cancelled() }} # always run this step even if previous steps failed - run: | - sudo bash ${GITHUB_WORKSPACE}/scripts/timeout_kill.sh $(pidof cmake-build-release/src/infinity) 20 - if [ $? -ne 0 ]; then - echo "Failed to kill infinity debug version" - exit 1 - fi - - - name: Collect infinity release output - # GitHub Actions interprets output lines starting with "Error" as error messages, and it automatically sets the step status to failed when such lines are detected. - run: cat release.log 2>/dev/null || true - - - name: Prepare sift dataset - if: ${{ !cancelled() && !failure() }} - run: sudo chmod +x ./tools/ci_tools/check_benchmark_result.py && sudo mkdir -p test/data/benchmark && sudo ln -s $HOME/benchmark/sift1M test/data/benchmark/sift_1m - - - name: Generate config file - if: ${{ !cancelled() && !failure() }} - run: mkdir -p $PWD/db_tmp && cat conf/infinity_conf.toml | sed -e "s|/var/infinity|$PWD/db_tmp|g" > $PWD/db_tmp/infinity_conf.toml - - - name: Import sift dataset - if: ${{ !cancelled() && !failure() }} - run: ./cmake-build-release/benchmark/local_infinity/knn_import_benchmark sift $PWD/test/data $PWD/db_tmp - - - name: Benchmark sift search 1 thread repeat 50 times - if: ${{ !cancelled() && !failure() }} - run: truncate --size 0 $HOME/benchmark/benchmark_sift_1_thread_latest_output.log ; echo "1 50" | ./cmake-build-release/benchmark/local_infinity/knn_query_benchmark sift 200 $PWD/test/data $PWD/db_tmp | tee $HOME/benchmark/benchmark_sift_1_thread_latest_output.log ; cat $HOME/benchmark/benchmark_sift_1_thread_latest_output.log | ./tools/ci_tools/collect_benchmark_result.py $HOME/benchmark/benchmark_sift_1_thread.log ; ./tools/ci_tools/check_benchmark_result.py sift_1 $HOME/benchmark/benchmark_sift_1_thread.log - - - name: Benchmark sift search 8 threads repeat 50 times - if: ${{ !cancelled() && !failure() }} - run: truncate --size 0 $HOME/benchmark/benchmark_sift_8_threads_latest_output.log ; echo "8 50" | ./cmake-build-release/benchmark/local_infinity/knn_query_benchmark sift 200 $PWD/test/data $PWD/db_tmp | tee $HOME/benchmark/benchmark_sift_8_threads_latest_output.log ; cat $HOME/benchmark/benchmark_sift_8_threads_latest_output.log | ./tools/ci_tools/collect_benchmark_result.py $HOME/benchmark/benchmark_sift_8_threads.log ; ./tools/ci_tools/check_benchmark_result.py sift_8 $HOME/benchmark/benchmark_sift_8_threads.log