NIF concurrency nightly #32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "NIF concurrency nightly" | |
| on: | |
| schedule: | |
| - cron: "0 3 * * *" | |
| workflow_dispatch: | |
| jobs: | |
| nif_stress_full: | |
| name: "NIF stress full (P1–P15)" | |
| runs-on: "ubuntu-latest" | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Install deps | |
| run: sudo apt-get install -y libboost-dev libboost-system-dev | |
| - name: Setup elixir | |
| uses: erlef/setup-elixir@v1 | |
| with: | |
| otp-version: 28.4.2 | |
| elixir-version: 1.19.5 | |
| - uses: actions/checkout@v1 | |
| - name: Build and run stress-full with watchdog | |
| run: | | |
| mix local.hex --force | |
| mix local.rebar --force | |
| mix deps.get | |
| make -C deps/libsecp256k1/ | |
| mix compile | |
| mix run --no-start scripts/cmerkle_deadlock_watchdog.exs -- \ | |
| --progress-timeout 180 --wall-timeout 2400 \ | |
| mix nif.stress.full | |
| - name: ExUnit concurrency suite | |
| run: mix test --no-start --only cmerkle_concurrency | |
| - name: NIF leak regression (extended) | |
| run: | | |
| mix run --no-start scripts/cmerkle_leak_watchdog.exs -- \ | |
| --progress-timeout 300 --wall-timeout 1800 \ | |
| mix run --no-start scripts/cmerkle_leak_test.exs -- --rounds 200 --max-delta-kb 102400 | |
| mix test --no-start --only cmerkle_leak | |
| nif_tsan_optional: | |
| name: "NIF TSan spot (optional manual build)" | |
| runs-on: "ubuntu-latest" | |
| if: github.event_name == 'workflow_dispatch' | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Install deps | |
| run: sudo apt-get install -y libboost-dev libboost-system-dev clang | |
| - name: Setup elixir | |
| uses: erlef/setup-elixir@v1 | |
| with: | |
| otp-version: 28.4.2 | |
| elixir-version: 1.19.5 | |
| - uses: actions/checkout@v1 | |
| - name: Build NIF with Thread Sanitizer | |
| run: | | |
| mix local.hex --force | |
| mix local.rebar --force | |
| mix deps.get | |
| make -C deps/libsecp256k1/ | |
| make nif CXXFLAGS='-fsanitize=thread -g -O1 -fPIC' LDFLAGS='-fsanitize=thread' | |
| - name: TSan stress subset | |
| env: | |
| TSAN_OPTIONS: "halt_on_error=1" | |
| run: | | |
| mix compile | |
| mix run --no-start scripts/cmerkle_deadlock_watchdog.exs -- \ | |
| --progress-timeout 300 --wall-timeout 1200 \ | |
| mix run --no-start scripts/cmerkle_parallel_stress.exs -- \ | |
| --waves 2 --tasks 24 --scenario P12 --scenario P13 --scenario P14 --scenario P16 |