# Test that local testnet starts successfully.
name: local testnet

on:
  push:
    branches:
      - unstable
  pull_request:

jobs:
  run-local-testnet:
    strategy:
      matrix:
        os:
          - ubuntu-22.04
          - macos-12
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v3

      - name: Get latest version of stable Rust
        run: rustup update stable
      - name: Install Protoc
        uses: arduino/setup-protoc@e52d9eb8f7b63115df1ac544a1376fdbf5a39612
        with:
            repo-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Install ganache
        run: npm install ganache@latest --global

      - name: Install GNU sed & GNU grep
        run: |
          brew install gnu-sed grep
          echo "$(brew --prefix)/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH
          echo "$(brew --prefix)/opt/grep/libexec/gnubin" >> $GITHUB_PATH
        if: matrix.os == 'macos-12'

      # https://github.com/actions/cache/blob/main/examples.md#rust---cargo
      - uses: actions/cache@v3
        id: cache-cargo
        with:
          path: |
              ~/.cargo/bin/
              ~/.cargo/registry/index/
              ~/.cargo/registry/cache/
              ~/.cargo/git/db/
              target/
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

      - name: Install lighthouse
        run: make && make install-lcli

      - name: Start local testnet
        run: ./start_local_testnet.sh && sleep 60
        working-directory: scripts/local_testnet

      - name: Print logs
        run: ./dump_logs.sh
        working-directory: scripts/local_testnet

      - name: Stop local testnet
        run: ./stop_local_testnet.sh
        working-directory: scripts/local_testnet

      - name: Clean-up testnet
        run: ./clean.sh
        working-directory: scripts/local_testnet

      - name: Start local testnet with blinded block production
        run: ./start_local_testnet.sh -p && sleep 60
        working-directory: scripts/local_testnet

      - name: Print logs for blinded block testnet
        run: ./dump_logs.sh
        working-directory: scripts/local_testnet

      - name: Stop local testnet with blinded block production
        run: ./stop_local_testnet.sh
        working-directory: scripts/local_testnet
