Skip to content

Commit

Permalink
Add tests to docker build
Browse files Browse the repository at this point in the history
  • Loading branch information
ignasirv committed Sep 25, 2024
1 parent f1839aa commit bf45a82
Show file tree
Hide file tree
Showing 5 changed files with 146 additions and 2 deletions.
63 changes: 63 additions & 0 deletions .github/workflows/build-docker-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: Build-Docker image test

on:
push:
branches: [develop]
pull_request:
branches: [develop]

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [16.x]

steps:
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Set int-bot SSH key
run: |
touch /tmp/ssh-key
echo "${{ secrets.INT_BOT_SSH_KEY }}" > /tmp/ssh-key
chmod 400 /tmp/ssh-key
eval "$(ssh-agent -s)"
ssh-add /tmp/ssh-key
- name: Checkout code
uses: actions/checkout@v3
- name: setup
run: |
eval "$(ssh-agent -s)"
ssh-add /tmp/ssh-key
npm i
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build docker
run: npm run docker:contracts
# - name: Push docker image
# run: npm run push:docker:contracts
# Steps to push multi-platform image, it relies on the previous step:
# npm run docker:contracts
# - name: Set up QEMU
# uses: docker/setup-qemu-action@v1
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v1
# - name: Build and push
# uses: docker/build-push-action@v2
# with:
# platforms: linux/amd64,linux/arm64
# push: true
# tags: hermeznetwork/geth-zkevm-contracts:1.5-integration
# file: docker/Dockerfile
# context: .
60 changes: 60 additions & 0 deletions docker/DockerTests.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import {expect} from "chai";
import {ethers, upgrades} from "hardhat";
import fs from "fs";
import path from "path";
const deployOutput = JSON.parse(fs.readFileSync(path.join(__dirname, "./deploymentOutput/deploy_output.json"), "utf8"));
const {polygonRollupManagerAddress, polygonZkEVMBridgeAddress, polygonZkEVMGlobalExitRootAddress, polTokenAddress} =
deployOutput;
const createRollupOutput = JSON.parse(
fs.readFileSync(path.join(__dirname, "./deploymentOutput/create_rollup_output.json"), "utf8")
);
const {rollupAddress} = createRollupOutput;
import {
PolygonRollupManager,
PolygonZkEVMGlobalExitRootV2,
PolygonZkEVMBridgeV2,
PolygonZkEVMEtrog,
} from "../typechain-types";

describe("Docker build tests Contract", () => {
it("should check PolygonZkEVMEtrog", async () => {
const PolygonZkEVMEtrogFactory = await ethers.getContractFactory("PolygonZkEVMEtrog");
const PolygonZkEVMEtrogContract = PolygonZkEVMEtrogFactory.attach(rollupAddress) as PolygonZkEVMEtrog;
expect(PolygonZkEVMEtrogContract.target).to.equal(rollupAddress);
expect(await PolygonZkEVMEtrogContract.globalExitRootManager()).to.equal(polygonZkEVMGlobalExitRootAddress);
expect(await PolygonZkEVMEtrogContract.pol()).to.equal(polTokenAddress);
expect(await PolygonZkEVMEtrogContract.bridgeAddress()).to.equal(polygonZkEVMBridgeAddress);
expect(await PolygonZkEVMEtrogContract.rollupManager()).to.equal(polygonRollupManagerAddress);
});

it("should check RollupManager", async () => {
const PolgonRollupManagerFactory = await ethers.getContractFactory("PolygonRollupManager");
const rollupManagerContract = PolgonRollupManagerFactory.attach(
polygonRollupManagerAddress
) as PolygonRollupManager;
expect(rollupManagerContract.target).to.equal(polygonRollupManagerAddress);
expect(await rollupManagerContract.bridgeAddress()).to.equal(polygonZkEVMBridgeAddress);
expect(await rollupManagerContract.globalExitRootManager()).to.equal(polygonZkEVMGlobalExitRootAddress);
expect(await rollupManagerContract.pol()).to.equal(polTokenAddress);
});

it("should check GlobalExitRootV2", async () => {
const PolygonZkEVMGlobalExitRootV2Factory = await ethers.getContractFactory("PolygonZkEVMGlobalExitRootV2");
const PolygonZkEVMGlobalExitRootV2Contract = PolygonZkEVMGlobalExitRootV2Factory.attach(
polygonZkEVMGlobalExitRootAddress
) as PolygonZkEVMGlobalExitRootV2;
expect(PolygonZkEVMGlobalExitRootV2Contract.target).to.equal(polygonZkEVMGlobalExitRootAddress);
expect(await PolygonZkEVMGlobalExitRootV2Contract.bridgeAddress()).to.equal(polygonZkEVMBridgeAddress);
expect(await PolygonZkEVMGlobalExitRootV2Contract.rollupManager()).to.equal(polygonRollupManagerAddress);
});

it("should check PolygonZkEVMBridgeV2", async () => {
const PolygonZkEVMBridgeV2Factory = await ethers.getContractFactory("PolygonZkEVMBridgeV2");
const PolygonZkEVMBridgeV2Contract = PolygonZkEVMBridgeV2Factory.attach(
polygonZkEVMBridgeAddress
) as PolygonZkEVMBridgeV2;
expect(PolygonZkEVMBridgeV2Contract.target).to.equal(polygonZkEVMBridgeAddress);
expect(await PolygonZkEVMBridgeV2Contract.globalExitRootManager()).to.equal(polygonZkEVMGlobalExitRootAddress);
expect(await PolygonZkEVMBridgeV2Contract.polygonRollupManager()).to.equal(polygonRollupManagerAddress);
});
});
12 changes: 11 additions & 1 deletion docker/scripts/v2/deploy-docker.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# Set the -e option to stop the script if any command fails
set -e
sudo rm -rf docker/gethData/geth_data
sudo DEV_PERIOD=1 docker-compose -f docker/docker-compose.yml up -d geth
sleep 5
Expand All @@ -13,4 +15,12 @@ sudo mv deployment/v2/create_rollup_output.json docker/deploymentOutput
sudo DEV_PERIOD=1 docker-compose -f docker/docker-compose.yml down
sudo docker build -t hermeznetwork/geth-zkevm-contracts -f docker/Dockerfile .
# Let it readable for the multiplatform build coming later!
sudo chmod -R go+rxw docker/gethData
sudo chmod -R go+rxw docker/gethData
# Run container
sudo docker run -p 8545:8545 -d --name docker_test hermeznetwork/geth-zkevm-contracts
# Run docker tests
npm run docker:tests
# stop container
sudo docker stop docker_test
# remove container
sudo docker container rm docker_test
12 changes: 11 additions & 1 deletion docker/scripts/v2/deploy-dockerv2.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# Set the -e option to stop the script if any command fails
set -e
sudo rm -rf docker/gethData/geth_data
sudo DEV_PERIOD=1 docker compose -f docker/docker-compose.yml up -d geth
sleep 5
Expand All @@ -13,4 +15,12 @@ sudo mv deployment/v2/create_rollup_output.json docker/deploymentOutput
sudo DEV_PERIOD=1 docker compose -f docker/docker-compose.yml down
sudo docker build -t hermeznetwork/geth-zkevm-contracts -f docker/Dockerfile .
# Let it readable for the multiplatform build coming later!
sudo chmod -R go+rxw docker/gethData
sudo chmod -R go+rxw docker/gethData
# Run container
sudo docker run -p 8545:8545 -d --name docker_test hermeznetwork/geth-zkevm-contracts
# Run docker tests
npm run docker:tests
# stop container
sudo docker stop docker_test
# remove container
sudo docker container rm docker_test
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@
"compile": "npx hardhat compile",
"docker:contracts": "./docker/scripts/v2/deploy-docker.sh",
"dockerv2:contracts": "./docker/scripts/v2/deploy-dockerv2.sh",
"docker:tests": "npx hardhat test docker/DockerTests.test.ts --network localhost",
"push:docker:contracts": "docker push hermeznetwork/geth-zkevm-contracts",
"update:genesis": "node deployment/1_createGenesis.js && node deployment/1_createGenesis.js --test --input ../docker/scripts/deploy_parameters_docker.json --out ../docker/scripts/genesis_docker.json",
"coverage": "npx hardhat coverage --testfiles \"test/contractsv2/*.ts\"",
Expand Down

0 comments on commit bf45a82

Please sign in to comment.