diff --git a/.github/workflows/ethshadow.yml b/.github/workflows/ethshadow.yml new file mode 100644 index 0000000..8c87621 --- /dev/null +++ b/.github/workflows/ethshadow.yml @@ -0,0 +1,77 @@ +name: Ethshadow + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + schedule: + - cron: '0 0 * * *' + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install Shadow's dependencies + run : | + # required dependencies + sudo apt-get install -y \ + cmake \ + findutils \ + libclang-dev \ + libc-dbg \ + libglib2.0-0 \ + libglib2.0-dev \ + make \ + netbase \ + python3 \ + python3-networkx \ + xz-utils \ + util-linux \ + gcc \ + g++ + - name: Install Shadow + run: | + git clone https://github.com/shadow/shadow.git + cd shadow + ./setup build --clean + ./setup install + cd .. + - name: Install Lighthouse's dependencies + run : | + sudo apt update + sudo apt install -y git gcc g++ make cmake pkg-config llvm-dev libclang-dev clang + - name: Install Lighthouse + run: | + git clone https://github.com/sigp/lighthouse.git + cd lighthouse + git checkout v5.3.0 + make + make install-lcli + lighthouse -V + cd .. + - name: Install Geth + run: | + git clone https://github.com/ethereum/go-ethereum.git + cd go-ethereum + git checkout v1.14.11 + make all + sudo cp build/bin/geth /usr/local/bin/geth + sudo cp build/bin/bootnode /usr/local/bin/bootnode + geth -v + cd .. + - name: Install Ethshadow + run: | + cargo install --path . + - name: Run Ethshadow + run: | + ethshadow ci/config.yaml + - name: Check Ethshadow + run: | + block_received_lines=$(cat ./data/shadow/hosts/node*/lighthouse.*.stderr | grep "New block received" | wc -l) + echo "block_received_lines=$block_received_lines" + test $block_received_lines -gt 200 + block_published_lines=$(cat ./data/shadow/hosts/node*/lighthouse.*.stderr | grep "Signed block published" | wc -l) + echo "block_published_lines=$block_published_lines" + test $block_published_lines -eq 24 diff --git a/ci/config.yaml b/ci/config.yaml new file mode 100644 index 0000000..5814e9b --- /dev/null +++ b/ci/config.yaml @@ -0,0 +1,12 @@ +general: + # How much time should we simulate? + stop_time: 10 min + # Display a progress indicator? + progress: true + +ethereum: + # Distribute this many validators evenly across all nodes + validators: 30 + # Create this many nodes with Geth, Lighthouse and a Validator client. + # Additionally, a host with one boot node for CL and EL each is added. + nodes: 10