12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- name: rspamd_test
-
- on:
- workflow_call:
- inputs:
- image:
- required: true
- type: string
- name:
- required: true
- type: string
-
- env:
- CTEST_OUTPUT_ON_FAILURE: 1
- RSPAMD_LUA_EXPENSIVE_TESTS: 1
-
- jobs:
- test:
- runs-on: [ "ubuntu-latest" ]
- container:
- image: ${{ inputs.image }}
- options: --user root
- steps:
- - name: Create directories
- run: |
- sudo mkdir -p ${GITHUB_WORKSPACE}
- sudo chown -R build:build ${GITHUB_WORKSPACE}
-
- - name: Check out source code
- uses: actions/checkout@v4
- with:
- path: src
-
- - name: Set variables on ARM64
- if: runner.arch == 'ARM64'
- run: echo "HYPERSCAN_ALTROOT=-DHYPERSCAN_ROOT_DIR=/vectorscan" >> "$GITHUB_ENV"
-
- - name: Run cmake
- run: |
- mkdir ${GITHUB_WORKSPACE}/build
- cd ${GITHUB_WORKSPACE}/build
- cmake -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON -DENABLE_HYPERSCAN=ON ${{ env.HYPERSCAN_ALTROOT }} -GNinja ${GITHUB_WORKSPACE}/src
-
- - name: Build rspamd
- run: |
- cd ${GITHUB_WORKSPACE}/build
- ncpu=$(getconf _NPROCESSORS_ONLN)
- ninja -j $ncpu install
- ninja -j $ncpu rspamd-test
- ninja -j $ncpu rspamd-test-cxx
-
- - name: Run unit tests
- if: "!(inputs.name == 'ubuntu-ci' && runner.arch == 'ARM64')"
- run: |
- cd ${GITHUB_WORKSPACE}/build
- ninja test
-
- - name: Apply Fedora specifics
- if: inputs.name == 'fedora-ci'
- run: |
- sudo mv /usr/bin/miltertest /usr/bin/miltertest.is.broken.on.fedora || true
-
- - name: Run functional tests
- run: |
- cd ${GITHUB_WORKSPACE}/build
- ulimit -c unlimited
- ulimit -s unlimited
- set +e
- RSPAMD_INSTALLROOT=${GITHUB_WORKSPACE}/install robot -v RSPAMD_USER:root -v RSPAMD_GROUP:root --removekeywords wuks --exclude isbroken ${GITHUB_WORKSPACE}/src/test/functional/cases; EXIT_CODE=$?
- set -e
- core_files=$(find /var/tmp/ -name '*.core')
- for core in $core_files; do exe=$(gdb --batch -ex 'info proc mappings' -c $core | tail -1 | awk '{print $5}'); gdb --batch -ex 'bt' -c $core $exe; echo '---'; done
- exit $EXIT_CODE
-
- - name: Save workspace directory
- if: (success() || failure())
- run: echo "CONTAINER_WORKSPACE=${GITHUB_WORKSPACE}" >> "$GITHUB_ENV"
-
- - name: Upload robot logs
- if: (success() || failure())
- uses: actions/upload-artifact@v4
- with:
- name: robotlog-${{ inputs.name }}
- path: |
- ${{ env.CONTAINER_WORKSPACE }}/build/*.*ml
- retention-days: 1
-
- - name: Upload rspamd logs
- if: (success() || failure())
- uses: actions/upload-artifact@v4
- with:
- name: rspamdlog-${{ inputs.name }}
- path: ${{ env.CONTAINER_WORKSPACE }}/build/robot-save
- retention-days: 1
|