name: Sims
# Sims workflow runs multiple types of simulations (nondeterminism, import-export, after-import, multi-seed-short)
# This workflow will run on all Pull Requests, if a .go, .mod or .sum file have been changed
on:
  schedule:
    - cron: "0 */2 * * *"
  release:
    types: [published]

concurrency:
  group: ci-${{ github.ref }}-sims
  cancel-in-progress: true

jobs:
  build:
    permissions:
      contents: read # for actions/checkout to fetch code
    runs-on: depot-ubuntu-22.04-16
    if: "!contains(github.event.head_commit.message, 'skip-sims')"
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - run: make build

  test-sim-import-export:
    runs-on: depot-ubuntu-22.04-16
    needs: [build]
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - name: test-sim-import-export
        run: |
          make test-sim-import-export

  test-sim-after-import:
    runs-on: depot-ubuntu-22.04-16
    needs: [build]
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - name: test-sim-after-import
        run: |
          make test-sim-after-import

  test-sim-deterministic:
    runs-on: depot-ubuntu-22.04-16
    needs: [build]
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - name: test-sim-nondeterminism-streaming
        run: |
          make test-sim-nondeterminism-streaming

  test-sim-blockstm:
    runs-on: depot-ubuntu-22.04-16
    needs: [build]
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - name: test-sim-blockstm
        run: |
          make test-sim-blockstm

  test-sim-multi-seed-short:
    runs-on: depot-ubuntu-22.04-16
    needs: [build]
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-go@v7
        with:
          go-version-file: "go.mod"
      - name: test-sim-multi-seed-short
        run: |
          make test-sim-multi-seed-short
