diff --git a/.github/workflows/on-master.yaml b/.github/workflows/on-master.yaml index 71840d2..306cf1f 100644 --- a/.github/workflows/on-master.yaml +++ b/.github/workflows/on-master.yaml @@ -22,4 +22,31 @@ jobs: run: echo ${{ secrets.GITHUB_TOKEN }} | docker login https://docker.pkg.github.com -u vulcanize --password-stdin - name: Docker Push run: docker push docker.pkg.github.com/vulcanize/tracing-api/tracing-api:${{steps.vars.outputs.sha}} - + test: + name: Run integration tests + env: + GOPATH: /tmp/go + strategy: + matrix: + go-version: [1.14.x] + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Create GOPATH + run: mkdir -p /tmp/go + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go-version }} + - uses: actions/checkout@v2 + - name: Run services + run: cd test/enviroment/local && docker-compose pull && docker-compose up -d + - name: Checking running containers + run: | + sleep 10 && \ + cd test/enviroment/local && \ + docker-compose ps -a + - name: Test + run: | + cd test && \ + go test -v . diff --git a/.github/workflows/on-pr.yaml b/.github/workflows/on-pr.yaml index 49132ed..d59be8e 100644 --- a/.github/workflows/on-pr.yaml +++ b/.github/workflows/on-pr.yaml @@ -10,8 +10,8 @@ jobs: - uses: actions/checkout@v2 - name: Run docker build run: make docker-build - test: - name: Run integration tests + testlocal: + name: Run integration tests on local network env: GOPATH: /tmp/go strategy: @@ -26,19 +26,51 @@ jobs: uses: actions/setup-go@v2 with: go-version: ${{ matrix.go-version }} -# - uses: actions/setup-node@v2 -# with: -# node-version: '14' - uses: actions/checkout@v2 - name: Run services - run: cd test/enviroment && docker-compose pull && docker-compose up -d + run: cd test/enviroment/local && docker-compose pull && docker-compose up -d - name: Checking running containers run: | sleep 10 && \ - cd test/enviroment && \ + cd test/enviroment/local && \ docker-compose ps -a - name: Test run: | while [ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:3000/v1/healthz)" != "200" ]; do echo "wait for contracts being deployed..." && sleep 5; done && \ cd test && \ go test -v . + testmainnet: + name: Run integration tests on mainnet + env: + GOPATH: /tmp/go + strategy: + matrix: + go-version: [1.14.x] + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Create GOPATH + run: mkdir -p /tmp/go + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go-version }} + - uses: actions/checkout@v2 + - name: Run services + run: | + mkdir -p /tmp/a && \ + cd test/enviroment/mainnet && \ + sed -i 's/%user%/${{secrets.DB_HOST_USER}}/g' ssh/config && \ + sed -i 's/%host%/${{secrets.DB_HOST_NAME}}/g' ssh/config && \ + echo "${{secrets.SSH_PRIVATE_KEY}}" > ssh/id_rsa_github_actions + cp ssh -r /tmp/a && \ + docker-compose pull && docker-compose up -d + - name: Checking running containers + run: | + sleep 10 && \ + cd test/enviroment/local && \ + docker-compose ps -a +# - name: Test +# run: | +# cd test && \ +# go test -v . diff --git a/test/enviroment/contracts/.gitattributes b/test/enviroment/local/contracts/.gitattributes similarity index 100% rename from test/enviroment/contracts/.gitattributes rename to test/enviroment/local/contracts/.gitattributes diff --git a/test/enviroment/contracts/.gitignore b/test/enviroment/local/contracts/.gitignore similarity index 100% rename from test/enviroment/contracts/.gitignore rename to test/enviroment/local/contracts/.gitignore diff --git a/test/enviroment/contracts/BlockNumStorage.go b/test/enviroment/local/contracts/BlockNumStorage.go similarity index 100% rename from test/enviroment/contracts/BlockNumStorage.go rename to test/enviroment/local/contracts/BlockNumStorage.go diff --git a/test/enviroment/contracts/Dockerfile b/test/enviroment/local/contracts/Dockerfile similarity index 100% rename from test/enviroment/contracts/Dockerfile rename to test/enviroment/local/contracts/Dockerfile diff --git a/test/enviroment/contracts/abis/BlockNumStorage.abi b/test/enviroment/local/contracts/abis/BlockNumStorage.abi similarity index 100% rename from test/enviroment/contracts/abis/BlockNumStorage.abi rename to test/enviroment/local/contracts/abis/BlockNumStorage.abi diff --git a/test/enviroment/contracts/abis/UintStorage.abi b/test/enviroment/local/contracts/abis/UintStorage.abi similarity index 100% rename from test/enviroment/contracts/abis/UintStorage.abi rename to test/enviroment/local/contracts/abis/UintStorage.abi diff --git a/test/enviroment/contracts/bin/BlockNumStorage.bin b/test/enviroment/local/contracts/bin/BlockNumStorage.bin similarity index 100% rename from test/enviroment/contracts/bin/BlockNumStorage.bin rename to test/enviroment/local/contracts/bin/BlockNumStorage.bin diff --git a/test/enviroment/contracts/bin/UintStorage.bin b/test/enviroment/local/contracts/bin/UintStorage.bin similarity index 100% rename from test/enviroment/contracts/bin/UintStorage.bin rename to test/enviroment/local/contracts/bin/UintStorage.bin diff --git a/test/enviroment/contracts/caller/index.js b/test/enviroment/local/contracts/caller/index.js similarity index 100% rename from test/enviroment/contracts/caller/index.js rename to test/enviroment/local/contracts/caller/index.js diff --git a/test/enviroment/contracts/contracts/Migrations.sol b/test/enviroment/local/contracts/contracts/Migrations.sol similarity index 100% rename from test/enviroment/contracts/contracts/Migrations.sol rename to test/enviroment/local/contracts/contracts/Migrations.sol diff --git a/test/enviroment/contracts/contracts/Storage.sol b/test/enviroment/local/contracts/contracts/Storage.sol similarity index 100% rename from test/enviroment/contracts/contracts/Storage.sol rename to test/enviroment/local/contracts/contracts/Storage.sol diff --git a/test/enviroment/contracts/generated/BlockNumStorage/BlockNumStorage.ts b/test/enviroment/local/contracts/generated/BlockNumStorage/BlockNumStorage.ts similarity index 100% rename from test/enviroment/contracts/generated/BlockNumStorage/BlockNumStorage.ts rename to test/enviroment/local/contracts/generated/BlockNumStorage/BlockNumStorage.ts diff --git a/test/enviroment/contracts/generated/UintStorage/UintStorage.ts b/test/enviroment/local/contracts/generated/UintStorage/UintStorage.ts similarity index 100% rename from test/enviroment/contracts/generated/UintStorage/UintStorage.ts rename to test/enviroment/local/contracts/generated/UintStorage/UintStorage.ts diff --git a/test/enviroment/contracts/generated/schema.ts b/test/enviroment/local/contracts/generated/schema.ts similarity index 100% rename from test/enviroment/contracts/generated/schema.ts rename to test/enviroment/local/contracts/generated/schema.ts diff --git a/test/enviroment/contracts/migrations/1_initial_migration.js b/test/enviroment/local/contracts/migrations/1_initial_migration.js similarity index 100% rename from test/enviroment/contracts/migrations/1_initial_migration.js rename to test/enviroment/local/contracts/migrations/1_initial_migration.js diff --git a/test/enviroment/contracts/package-lock.json b/test/enviroment/local/contracts/package-lock.json similarity index 100% rename from test/enviroment/contracts/package-lock.json rename to test/enviroment/local/contracts/package-lock.json diff --git a/test/enviroment/contracts/package.json b/test/enviroment/local/contracts/package.json similarity index 83% rename from test/enviroment/contracts/package.json rename to test/enviroment/local/contracts/package.json index e06c107..7056644 100644 --- a/test/enviroment/contracts/package.json +++ b/test/enviroment/local/contracts/package.json @@ -9,7 +9,8 @@ "build": "graph build", "create": "graph create --node http://localhost:8020/ vulcanize/bnumstore", "remove": "graph remove --node http://localhost:8020/ vulcanize/bnumstore", - "deploy": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 vulcanize/bnumstore" + "deploy": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 vulcanize/bnumstore", + "deploy-mainnet": "graph deploy --debug --node https://api.thegraph.com/deploy/ --ipfs https://api.thegraph.com/ipfs/ ramilexe/blocknumstorage" }, "devDependencies": { "@graphprotocol/graph-cli": "^0.19.0", diff --git a/test/enviroment/contracts/schema.graphql b/test/enviroment/local/contracts/schema.graphql similarity index 100% rename from test/enviroment/contracts/schema.graphql rename to test/enviroment/local/contracts/schema.graphql diff --git a/test/enviroment/contracts/src/mapping.ts b/test/enviroment/local/contracts/src/mapping.ts similarity index 100% rename from test/enviroment/contracts/src/mapping.ts rename to test/enviroment/local/contracts/src/mapping.ts diff --git a/test/enviroment/contracts/start.sh b/test/enviroment/local/contracts/start.sh similarity index 100% rename from test/enviroment/contracts/start.sh rename to test/enviroment/local/contracts/start.sh diff --git a/test/enviroment/contracts/subgraph.yaml b/test/enviroment/local/contracts/subgraph.yaml similarity index 89% rename from test/enviroment/contracts/subgraph.yaml rename to test/enviroment/local/contracts/subgraph.yaml index 4536c9e..a83262c 100644 --- a/test/enviroment/contracts/subgraph.yaml +++ b/test/enviroment/local/contracts/subgraph.yaml @@ -6,7 +6,7 @@ dataSources: name: BlockNumStorage network: mainnet source: - address: "0xf3f2a4e8F42db8afE4d60cB950720C3fBc559891" + address: "0x51900544dfef84a65f6dbe0c999f88ebe87ba2dd" abi: BlockNumStorage mapping: kind: ethereum/events @@ -26,7 +26,7 @@ dataSources: name: UintStorage network: mainnet source: - address: "0xD5AD01A3521a3633eA2D628F000BeF830CE80314" + address: "0xddfe1a03bab27687f49f1864c98ceaf8a26caf2f" abi: UintStorage mapping: kind: ethereum/events diff --git a/test/enviroment/contracts/test/.gitkeep b/test/enviroment/local/contracts/test/.gitkeep similarity index 100% rename from test/enviroment/contracts/test/.gitkeep rename to test/enviroment/local/contracts/test/.gitkeep diff --git a/test/enviroment/contracts/truffle-config.js b/test/enviroment/local/contracts/truffle-config.js similarity index 100% rename from test/enviroment/contracts/truffle-config.js rename to test/enviroment/local/contracts/truffle-config.js diff --git a/test/enviroment/docker-compose.yml b/test/enviroment/local/docker-compose.yml similarity index 97% rename from test/enviroment/docker-compose.yml rename to test/enviroment/local/docker-compose.yml index 836ffe1..1d63bfd 100644 --- a/test/enviroment/docker-compose.yml +++ b/test/enviroment/local/docker-compose.yml @@ -105,8 +105,8 @@ services: - vulcanizedb - tracingdb build: - context: ../../ - dockerfile: ./test/enviroment/tracing-api/Dockerfile + context: ../../../ + dockerfile: ./test/enviroment/local/tracing-api/Dockerfile cache_from: - alpine:latest - golang:1.13-alpine diff --git a/test/enviroment/geth/Dockerfile b/test/enviroment/local/geth/Dockerfile similarity index 100% rename from test/enviroment/geth/Dockerfile rename to test/enviroment/local/geth/Dockerfile diff --git a/test/enviroment/geth/datadir/keystore/UTC--2020-10-08T12-28-12.338870000Z--002df8650971e275726f7c7ba8562ccebd772299 b/test/enviroment/local/geth/datadir/keystore/UTC--2020-10-08T12-28-12.338870000Z--002df8650971e275726f7c7ba8562ccebd772299 similarity index 100% rename from test/enviroment/geth/datadir/keystore/UTC--2020-10-08T12-28-12.338870000Z--002df8650971e275726f7c7ba8562ccebd772299 rename to test/enviroment/local/geth/datadir/keystore/UTC--2020-10-08T12-28-12.338870000Z--002df8650971e275726f7c7ba8562ccebd772299 diff --git a/test/enviroment/geth/poanet-parity.json b/test/enviroment/local/geth/poanet-parity.json similarity index 100% rename from test/enviroment/geth/poanet-parity.json rename to test/enviroment/local/geth/poanet-parity.json diff --git a/test/enviroment/geth/poanet.json b/test/enviroment/local/geth/poanet.json similarity index 100% rename from test/enviroment/geth/poanet.json rename to test/enviroment/local/geth/poanet.json diff --git a/test/enviroment/geth/startgeth b/test/enviroment/local/geth/startgeth similarity index 100% rename from test/enviroment/geth/startgeth rename to test/enviroment/local/geth/startgeth diff --git a/test/enviroment/tracing-api/Dockerfile b/test/enviroment/local/tracing-api/Dockerfile similarity index 96% rename from test/enviroment/tracing-api/Dockerfile rename to test/enviroment/local/tracing-api/Dockerfile index e458f53..cd57c59 100644 --- a/test/enviroment/tracing-api/Dockerfile +++ b/test/enviroment/local/tracing-api/Dockerfile @@ -27,7 +27,7 @@ COPY --from=builder /go/src/github.com/vulcanize/tracing-api/build/tracer-linux COPY --from=builder /go/src/github.com/pressly/goose/cmd/goose/goose /usr/local/bin/goose COPY --from=builder /go/src/github.com/vulcanize/tracing-api/startup_script.sh . COPY --from=builder /go/src/github.com/vulcanize/tracing-api/db/migrations migrations -COPY --from=builder /go/src/github.com/vulcanize/tracing-api/test/enviroment/tracing-api/chain.json . +COPY --from=builder /go/src/github.com/vulcanize/tracing-api/test/enviroment/local/tracing-api/chain.json . EXPOSE 8080 diff --git a/test/enviroment/tracing-api/chain.json b/test/enviroment/local/tracing-api/chain.json similarity index 100% rename from test/enviroment/tracing-api/chain.json rename to test/enviroment/local/tracing-api/chain.json diff --git a/test/enviroment/mainnet/README.md b/test/enviroment/mainnet/README.md new file mode 100644 index 0000000..dca6305 --- /dev/null +++ b/test/enviroment/mainnet/README.md @@ -0,0 +1,14 @@ +Smart Contract being deployed to [mainnet](https://etherscan.io/address/0x51900544dfef84a65f6dbe0c999f88ebe87ba2dd#code) + +Update addresses in `subgraph.yaml` to: +* `0x51900544dfef84a65f6dbe0c999f88ebe87ba2dd` for BlockNumStorage +* `0xddfe1a03bab27687f49f1864c98ceaf8a26caf2f` for UintStorage + +Add `startBlock: 12056420` to `dataSources[*].source` + +### Deploy mainnet subgraph + +* `npm i` +* `npm run codegen` +* `npm run build` +* `npm run deploy-mainnet` \ No newline at end of file diff --git a/test/enviroment/mainnet/docker-compose.yml b/test/enviroment/mainnet/docker-compose.yml new file mode 100644 index 0000000..01fecd5 --- /dev/null +++ b/test/enviroment/mainnet/docker-compose.yml @@ -0,0 +1,52 @@ +version: '3.3' + +services: + vulcanizedb: + build: + context: ./ssh + volumes: + - /tmp/a:/root/ssh:ro + environment: + TUNNEL_HOST: mainnet-db + REMOTE_HOST: 127.0.0.1 + LOCAL_PORT: 5432 + REMOTE_PORT: 5432 + tracingdb: + restart: always + image: postgres:12.6 + environment: + POSTGRES_DB: "tracing" + POSTGRES_USER: "postgres" + POSTGRES_PASSWORD: "pwd" + command: ["postgres", "-cshared_preload_libraries=pg_stat_statements"] + ports: + - "127.0.0.1:5433:5432" + tracing-api: + depends_on: + - vulcanizedb + - tracingdb + build: + context: ../../../ + cache_from: + - alpine:latest + - golang:1.13-alpine + environment: + VDB_COMMAND: "serve" + DATABASE_HOSTNAME: vulcanizedb + DATABASE_PORT: 5432 + DATABASE_NAME: vulcanize + DATABASE_USER: postgres + DATABASE_PASSWORD: pwd + CACHE_DATABASE_HOSTNAME: tracingdb + CACHE_DATABASE_PORT: 5432 + CACHE_DATABASE_NAME: tracing + CACHE_DATABASE_USER: postgres + CACHE_DATABASE_PASSWORD: pwd + SERVER_HTTP_PATH: "0.0.0.0:8083" + ETH_HTTP_PATH: "geth:8545" + ETH_WS_PATH: "geth:8546" + ETH_CHAIN_ID: 1 + ETH_NETWORK_ID: 1 + ETH_GENESIS_BLOCK: "0xa1569030790a6ca195d69a98217028ebcb2a3cde096407e189cf35d3c91f26ef" + ports: + - "127.0.0.1:8083:8083" diff --git a/test/enviroment/mainnet/ssh/Dockerfile b/test/enviroment/mainnet/ssh/Dockerfile new file mode 100644 index 0000000..013084b --- /dev/null +++ b/test/enviroment/mainnet/ssh/Dockerfile @@ -0,0 +1,13 @@ +FROM alpine:3.2 + +RUN apk add --update openssh-client && rm -rf /var/cache/apk/* + +CMD rm -rf /root/.ssh && mkdir /root/.ssh && cp -R /root/ssh/* /root/.ssh/ && chmod -R 600 /root/.ssh/* && \ +ls -l /root/.ssh/ && \ +ssh \ +-o StrictHostKeyChecking=no \ +-N $TUNNEL_HOST \ +-L *:$LOCAL_PORT:$REMOTE_HOST:$REMOTE_PORT \ +&& while true; do sleep 30; done; + +EXPOSE 5432 \ No newline at end of file diff --git a/test/enviroment/mainnet/ssh/config b/test/enviroment/mainnet/ssh/config new file mode 100644 index 0000000..7f7f32f --- /dev/null +++ b/test/enviroment/mainnet/ssh/config @@ -0,0 +1,4 @@ +Host mainnet-db + HostName %host% + IdentityFile ~/.ssh/id_rsa_github_actions + User %user% \ No newline at end of file