Skip to content

Run tests on multiple platforms and fix windows MPIR issue #711

Run tests on multiple platforms and fix windows MPIR issue

Run tests on multiple platforms and fix windows MPIR issue #711

Workflow file for this run

name: Test Prover and vdf_client
on:
push:
branches:
- main
release:
types: [published]
pull_request:
branches:
- '**'
jobs:
test:
name: Test ${{ matrix.config }} ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-13, ubuntu-latest]
config: [optimized=1, TSAN=1, ASAN=1]
steps:
- name: Checkout code
uses: actions/checkout@v4
# See: https://github.com/google/sanitizers/issues/1716
# Fixes `FATAL: ThreadSanitizer: unexpected memory mapping 0x70498d8ae000-0x70498dd00000` type errors
- name: Adjust mmap_rnd_bits on ubuntu
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo sysctl vm.mmap_rnd_bits=28
- name: Build vdf-client on Ubuntu
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get install libgmp-dev libboost-python-dev libpython3-dev libboost-system-dev build-essential -y
cd src
make ${{ matrix.config }} -f Makefile.vdf-client
- name: Build vdf-client on Mac
if: startsWith(matrix.os, 'mac')
run: |
brew install boost
cd src
make ${{ matrix.config }} -f Makefile.vdf-client
- name: Test vdf-client
if: matrix.config == 'optimized=1'
run: |
cd src
echo "Running 1weso_test"
./1weso_test
echo "Running 2weso_test"
./2weso_test
echo "Running prover_test"
./prover_test
- name: Test vdf-client
if: matrix.config != 'optimized=1'
run: |
cd src
echo "Running 1weso_test"
./1weso_test 1000
echo "Running 2weso_test"
./2weso_test 1000
# macos thread sanitizer will give false positives on ./prover_test because
# it prints to std::cout from multiple threads. Which is allowed by the
# standard
- name: test Prover
if: matrix.config != 'optimized=1' && (matrix.config != 'TSAN=1' || startsWith(matrix.os, 'ubuntu'))
run: |
cd src
echo "Running prover_test"
./prover_test
- name: Benchmark vdf-client
if: matrix.config == 'optimized=1'
run: |
cd src
echo "Benchmarking vdf_client with 400,000 iterations of vdf_bench"
./vdf_bench square_asm 400000