Fix errors from local testnet scripts on MacOS (#2919)

## Issue Addressed

Resolves https://github.com/sigp/lighthouse/issues/2763

## Proposed Changes

- Add a workflow which tests that local testnet starts successfully
  - Added `set` option into the scripts in order to fail fast so that we can notice errors during starting local testnet.
- Fix errors on MacOS
  - The redirect `&>>` is supported since bash v4 but the version bundled in macOS(11.6.1) is v3. a54f119c9b
This commit is contained in:
Akihito Nakano 2022-01-26 23:14:20 +00:00
parent 5f628a71d4
commit 150931950d
12 changed files with 91 additions and 3 deletions

50
.github/workflows/local-testnet.yml vendored Normal file
View File

@ -0,0 +1,50 @@
# Test that local testnet starts successfully.
name: local testnet
on:
push:
branches:
- unstable
pull_request:
jobs:
run-local-testnet:
strategy:
matrix:
os:
- ubuntu-18.04
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v1
- name: Install ganache
run: npm install ganache-cli@latest --global
# https://github.com/actions/cache/blob/main/examples.md#rust---cargo
- uses: actions/cache@v2
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
if: steps.cache-cargo.outputs.cache-hit != 'true'
run: make && make install-lcli
- name: Start local testnet
run: ./start_local_testnet.sh
working-directory: scripts/local_testnet
- name: Print logs
run: ./print_logs.sh
working-directory: scripts/local_testnet
- name: Stop local testnet
run: ./stop_local_testnet.sh
working-directory: scripts/local_testnet

View File

@ -4,6 +4,8 @@
# Starts a beacon node based upon a genesis state created by `./setup.sh`. # Starts a beacon node based upon a genesis state created by `./setup.sh`.
# #
set -Eeuo pipefail
source ./vars.env source ./vars.env
SUBSCRIBE_ALL_SUBNETS= SUBSCRIBE_ALL_SUBNETS=

View File

@ -5,6 +5,8 @@
# Starts a bootnode from the generated enr. # Starts a bootnode from the generated enr.
# #
set -Eeuo pipefail
source ./vars.env source ./vars.env
echo "Generating bootnode enr" echo "Generating bootnode enr"

View File

@ -4,6 +4,8 @@
# Deletes all files associated with the local testnet. # Deletes all files associated with the local testnet.
# #
set -Eeuo pipefail
source ./vars.env source ./vars.env
if [ -d $DATADIR ]; then if [ -d $DATADIR ]; then

View File

@ -1,5 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -Eeuo pipefail
source ./vars.env source ./vars.env
exec ganache-cli \ exec ganache-cli \

View File

@ -1,6 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Kill processes # Kill processes
set -Eeuo pipefail
# First parameter is the file with # First parameter is the file with
# one pid per line. # one pid per line.
if [ -f "$1" ]; then if [ -f "$1" ]; then

View File

@ -0,0 +1,17 @@
#!/bin/bash
# Print the tail of all the logs output from local testnet
set -Eeuo pipefail
source ./vars.env
for f in "$TESTNET_DIR"/*.log
do
[[ -e "$f" ]] || break # handle the case of no *.log files
echo "============================================================================="
echo "$f"
echo "============================================================================="
tail "$f"
echo ""
done

View File

@ -4,6 +4,8 @@
# Resets the beacon state genesis time to now. # Resets the beacon state genesis time to now.
# #
set -Eeuo pipefail
source ./vars.env source ./vars.env
NOW=$(date +%s) NOW=$(date +%s)

View File

@ -1,6 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Start all processes necessary to create a local testnet # Start all processes necessary to create a local testnet
set -Eeuo pipefail
source ./vars.env source ./vars.env
# VC_COUNT is defaulted in vars.env # VC_COUNT is defaulted in vars.env
@ -49,7 +51,7 @@ for (( bn=1; bn<=$BN_COUNT; bn++ )); do
done done
for (( vc=1; vc<=$VC_COUNT; vc++ )); do for (( vc=1; vc<=$VC_COUNT; vc++ )); do
touch $LOG_DIR/validator_node_$vc.log touch $LOG_DIR/validator_node_$vc.log
done done
# Sleep with a message # Sleep with a message
sleeping() { sleeping() {
@ -67,7 +69,7 @@ execute_command() {
EX_NAME=$2 EX_NAME=$2
shift shift
shift shift
CMD="$EX_NAME $@ &>> $LOG_DIR/$LOG_NAME" CMD="$EX_NAME $@ >> $LOG_DIR/$LOG_NAME 2>&1"
echo "executing: $CMD" echo "executing: $CMD"
echo "$CMD" > "$LOG_DIR/$LOG_NAME" echo "$CMD" > "$LOG_DIR/$LOG_NAME"
eval "$CMD &" eval "$CMD &"
@ -89,7 +91,7 @@ execute_command_add_PID() {
# Delay to let ganache-cli to get started # Delay to let ganache-cli to get started
execute_command_add_PID ganache_test_node.log ./ganache_test_node.sh execute_command_add_PID ganache_test_node.log ./ganache_test_node.sh
sleeping 2 sleeping 10
# Delay to get data setup # Delay to get data setup
execute_command setup.log ./setup.sh execute_command setup.log ./setup.sh

View File

@ -1,6 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Stop all processes that were started with start_local_testnet.sh # Stop all processes that were started with start_local_testnet.sh
set -Eeuo pipefail
source ./vars.env source ./vars.env
PID_FILE=$TESTNET_DIR/PIDS.pid PID_FILE=$TESTNET_DIR/PIDS.pid

View File

@ -6,6 +6,8 @@
# #
# Usage: ./validator_client.sh <DATADIR> <BEACON-NODE-HTTP> <OPTIONAL-DEBUG-LEVEL> # Usage: ./validator_client.sh <DATADIR> <BEACON-NODE-HTTP> <OPTIONAL-DEBUG-LEVEL>
set -Eeuo pipefail
source ./vars.env source ./vars.env
DEBUG_LEVEL=${3:-info} DEBUG_LEVEL=${3:-info}

View File

@ -43,3 +43,6 @@ SECONDS_PER_SLOT=3
# Seconds per Eth1 block # Seconds per Eth1 block
SECONDS_PER_ETH1_BLOCK=1 SECONDS_PER_ETH1_BLOCK=1
# Command line arguments for validator client
VC_ARGS=""