CI: enable and collect core dumps in tests

Signed-off-by: Sven Anderson <sven@redhat.com>
This commit is contained in:
Sven Anderson 2023-11-09 15:20:48 +01:00
parent 2852a13c88
commit fba78e8982
3 changed files with 21 additions and 2 deletions

View File

@ -76,11 +76,15 @@ jobs:
go_version: ${{ needs.go-versions.outputs.unstable }}
steps:
- uses: actions/checkout@v4
- name: Set cores to get stored as "core"
run: sudo bash -c 'echo "core" > /proc/sys/kernel/core_pattern'
- name: Run tests
run: make test-containers-test "CEPH_VERSION=${{ matrix.ceph_version }}" "GO_VERSION=${{ matrix.go_version }}" "RESULTS_DIR=$PWD/_results"
- name: Clean up test containers
if: always()
run: make test-containers-clean "CEPH_VERSION=${{ matrix.ceph_version }}"
- name: Archive test results
if: always()
uses: actions/upload-artifact@v3
with:
name: "go-ceph-results-${{ matrix.ceph_version }}-${{ matrix.go_version }}"
@ -88,6 +92,7 @@ jobs:
_results/
retention-days: 30
- name: Check API Versions and Aging
if: always()
run: |
if [ -f _results/implements.json ]; then
./contrib/apiage.py

View File

@ -257,8 +257,21 @@ test_pkg() {
testargs+=("-memprofile" "${pkg}.mem.out")
fi
show go test -v "${testargs[@]}" "./${pkg}"
ulimit -c unlimited
testbin="./${pkg}/${pkg##*/}.test"
show go test -v "${testargs[@]}" -o "${testbin}" "./${pkg}"
ret=$(($?+ret))
if ls "${pkg}"/core.* >/dev/null 2>&1; then
echo "Found coredump"
sleep 5
coredump="./${pkg}/${pkg##*/}.core"
mv "${pkg}"/core.* "${coredump}"
chmod 644 "${coredump}"
echo "set auto-load safe-path /" >>/root/.gdbinit
gdb "${testbin}" "${coredump}" -ex bt -ex q | cat
mkdir -p "${RESULTS_DIR}"
mv "${testbin}" "${coredump}" "${RESULTS_DIR}/"
fi
grep -v "^mode: count" "${pkg}.cover.out" >> "cover.out"
return ${ret}
}

View File

@ -16,7 +16,8 @@ RUN true && \
yum install -y \
git wget curl make \
/usr/bin/cc /usr/bin/c++ \
"libcephfs-devel-${cv}" "librados-devel-${cv}" "librbd-devel-${cv}" && \
"libcephfs-devel-${cv}" "librados-devel-${cv}" "librbd-devel-${cv}" \
gdb libcephfs2-debuginfo librados2-debuginfo librbd1-debuginfo && \
yum clean all && \
true