diff --git a/.github/workflows/on-pr-publish.yaml b/.github/workflows/on-pr-publish.yaml index 9abf2448..2101f655 100644 --- a/.github/workflows/on-pr-publish.yaml +++ b/.github/workflows/on-pr-publish.yaml @@ -28,9 +28,9 @@ jobs: BUILD_USERNAME: ${{ secrets.BUILD_USERNAME }} BUILD_KEY: ${{ secrets.BUILD_KEY }} with: - STACK_ORCHESTRATOR_REF: "382aca8e42bc5e33f301f77cdd2e09cc80602fc3" + STACK_ORCHESTRATOR_REF: "f2fd766f5400fcb9eb47b50675d2e3b1f2753702" GO_ETHEREUM_REF: "c265fdc30915e01bb633203acbbd9d5009a7ddf2" - IPLD_ETH_DB_REF: "4e948c58ce20c20ab633289f986d2ed2a1fe02ec" + IPLD_ETH_DB_REF: "b59505eab252670c622b42ce60621e9747fb64f9" build: name: Run docker build runs-on: ubuntu-latest diff --git a/.github/workflows/run_unit_test.sh b/.github/workflows/run_unit_test.sh index 280bb6d3..24ce36c8 100755 --- a/.github/workflows/run_unit_test.sh +++ b/.github/workflows/run_unit_test.sh @@ -12,31 +12,17 @@ cd ipld-eth-server ## Remove the branch and github related info. This way future runs wont be confused. rm -f /tmp/git_head_ref /tmp/git_repository -# Setup the DB -cd $temp_dir -git clone "https://github.com/vulcanize/ipld-eth-db.git"; cd ipld-eth-db; git checkout $(cat /tmp/ipld_eth_db_ref) - -# Spin Up DB using Stack Orchestrator -cd $temp_dir -git clone "https://github.com/vulcanize/stack-orchestrator.git"; cd stack-orchestrator; git checkout $(cat /tmp/stack_orchestrator_ref) - -cd ${temp_dir}/stack-orchestrator -echo vulcanize_ipld_eth_db=${temp_dir}/ipld-eth-db > ./config.sh - -## Remove existing containers if they are present -docker-compose -f docker/local/docker-compose-db-sharding.yml --env-file ./config.sh down -v --remove-orphans; - -trap 'cd ${temp_dir}/stack-orchestrator; docker-compose -f docker/local/docker-compose-db-sharding.yml --env-file ./config.sh down -v --remove-orphans; ' SIGINT SIGTERM -docker-compose -f docker/local/docker-compose-db-sharding.yml --env-file ./config.sh up -d +# Spin up DB and run migrations +docker-compose up -d migrations ipld-eth-db +trap "docker-compose down -v --remove-orphans; cd $start_dir ; rm -r $temp_dir" SIGINT SIGTERM ERR +sleep 30 # Remove old logs so there's no confusion, then run test rm -f /tmp/test.log /tmp/return_test.txt -cd ${temp_dir}/ipld-eth-server PGPASSWORD=password DATABASE_USER=vdbm DATABASE_PORT=8077 DATABASE_PASSWORD=password DATABASE_HOSTNAME=localhost DATABASE_NAME=vulcanize_testing make test > /tmp/test.log echo $? > /tmp/return_test.txt # Clean up - -cd ${temp_dir}/stack-orchestrator; docker-compose -f docker/local/docker-compose-db-sharding.yml --env-file ./config.sh down -v --remove-orphans +docker-compose down -v --remove-orphans cd $start_dir rm -fr $temp_dir diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 213477a5..029c5e05 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -46,8 +46,6 @@ jobs: - name: Output variables to files run: | echo $GITHUB_REPOSITORY > /tmp/git_repository - echo ${{ inputs.IPLD_ETH_DB_REF }} > /tmp/ipld_eth_db_ref - echo ${{ inputs.STACK_ORCHESTRATOR_REF }} > /tmp/stack_orchestrator_ref [ -z "$GITHUB_HEAD_REF" ] && echo $GITHUB_REF_NAME > /tmp/git_head_ref || echo $GITHUB_HEAD_REF > /tmp/git_head_ref echo "-----BEGIN OPENSSH PRIVATE KEY-----" >> /tmp/key echo ${{ env.BUILD_KEY }} >> /tmp/key @@ -55,15 +53,11 @@ jobs: chmod 400 /tmp/key cat /tmp/git_repository cat /tmp/git_head_ref - cat /tmp/stack_orchestrator_ref - cat /tmp/ipld_eth_db_ref - name: Raw SCP run: | scp -o 'StrictHostKeyChecking no' -o UserKnownHostsFile=/dev/null -q -i /tmp/key /tmp/git_repository ${{ env.BUILD_USERNAME }}@${{ env.BUILD_HOSTNAME }}:/tmp/git_repository scp -o 'StrictHostKeyChecking no' -o UserKnownHostsFile=/dev/null -q -i /tmp/key /tmp/git_head_ref ${{ env.BUILD_USERNAME }}@${{ env.BUILD_HOSTNAME }}:/tmp/git_head_ref - scp -o 'StrictHostKeyChecking no' -o UserKnownHostsFile=/dev/null -q -i /tmp/key /tmp/stack_orchestrator_ref ${{ env.BUILD_USERNAME }}@${{ env.BUILD_HOSTNAME }}:/tmp/stack_orchestrator_ref - scp -o 'StrictHostKeyChecking no' -o UserKnownHostsFile=/dev/null -q -i /tmp/key /tmp/ipld_eth_db_ref ${{ env.BUILD_USERNAME }}@${{ env.BUILD_HOSTNAME }}:/tmp/ipld_eth_db_ref scp -o 'StrictHostKeyChecking no' -o UserKnownHostsFile=/dev/null -q -i /tmp/key .github/workflows/run_unit_test.sh ${{ env.BUILD_USERNAME }}@${{ env.BUILD_HOSTNAME }}:/tmp/run_unit_test.sh - name: Trigger Unit Test diff --git a/README.md b/README.md index 41422abe..b2d6f7f1 100644 --- a/README.md +++ b/README.md @@ -22,13 +22,13 @@ Additional, unique endpoints are exposed which utilize the new indexes and state ## Dependencies Minimal build dependencies -* Go (1.13) +* Go (1.18) * Git * GCC compiler * This repository External dependency -* Postgres database populated by [ipld-eth-indexer](https://github.com/vulcanize/ipld-eth-indexer) +* Postgres database populated by [ipld-eth-db](https://github.com/vulcanize/ipld-eth-db) ## Install Start by downloading ipld-eth-server and moving into the repo: diff --git a/docker-compose.yml b/docker-compose.yml index 66a63896..5627f234 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,18 +1,29 @@ version: '3.2' services: - ipld-eth-db: + migrations: restart: on-failure depends_on: - - access-node - image: vulcanize/ipld-eth-db:v4.1.1-alpha + - ipld-eth-db + image: vulcanize/ipld-eth-db:v4.2.0-alpha environment: DATABASE_USER: "vdbm" - DATABASE_NAME: "vulcanize_testing_v4" + DATABASE_NAME: "vulcanize_testing" DATABASE_PASSWORD: "password" - DATABASE_HOSTNAME: "access-node" + DATABASE_HOSTNAME: "ipld-eth-db" DATABASE_PORT: 5432 + ipld-eth-db: + image: timescale/timescaledb:latest-pg14 + restart: always + command: ["postgres", "-c", "log_statement=all"] + environment: + POSTGRES_USER: "vdbm" + POSTGRES_DB: "vulcanize_testing" + POSTGRES_PASSWORD: "password" + ports: + - "127.0.0.1:8077:5432" + eth-server: restart: unless-stopped depends_on: @@ -44,20 +55,5 @@ services: ports: - "127.0.0.1:8081:8081" - graphql: - restart: unless-stopped - depends_on: - - ipld-eth-db - image: vulcanize/postgraphile:v1.0.1 - environment: - - PG_HOST=db - - PG_PORT=5432 - - PG_DATABASE=vulcanize_public - - PG_USER=vdbm - - PG_PASSWORD=password - - SCHEMA=public,eth - ports: - - "127.0.0.1:5000:5000" - volumes: vdb_db_eth_server: diff --git a/scripts/run_unit_test.sh b/scripts/run_unit_test.sh index 1b9198d6..c90add64 100755 --- a/scripts/run_unit_test.sh +++ b/scripts/run_unit_test.sh @@ -1,26 +1,16 @@ #!/bin/bash -set -e +# Remove any existing containers / volumes +docker-compose down --remove-orphans --volumes -mkdir -p out - -# Remove existing docker-tsdb directory -rm -rf out/docker-tsdb/ - -# Copy over files to setup TimescaleDB -ID=$(docker create vulcanize/ipld-eth-db:v4.1.1-alpha) -docker cp $ID:/app/docker-tsdb out/docker-tsdb/ -docker rm -v $ID - -# Spin up TimescaleDB -docker-compose -f out/docker-tsdb/docker-compose.test.yml -f docker-compose.yml up ipld-eth-db -trap "docker-compose -f out/docker-tsdb/docker-compose.test.yml -f docker-compose.yml down --remove-orphans --volumes; rm -rf out/" SIGINT SIGTERM ERR -sleep 45 +# Spin up DB and run migrations +docker-compose up -d migrations ipld-eth-db +sleep 30 # Run unit tests go clean -testcache -PGPASSWORD=password DATABASE_USER=vdbm DATABASE_PORT=8066 DATABASE_PASSWORD=password DATABASE_HOSTNAME=127.0.0.1 DATABASE_NAME=vulcanize_testing_v4 make test +PGPASSWORD=password DATABASE_USER=vdbm DATABASE_PORT=8077 DATABASE_PASSWORD=password DATABASE_HOSTNAME=127.0.0.1 DATABASE_NAME=vulcanize_testing make test # Clean up -docker-compose -f out/docker-tsdb/docker-compose.test.yml -f docker-compose.yml down --remove-orphans --volumes +docker-compose down --remove-orphans --volumes rm -rf out/ diff --git a/test/README.md b/test/README.md index 65f5d32e..1b3e1727 100644 --- a/test/README.md +++ b/test/README.md @@ -4,22 +4,22 @@ - Clone [stack-orchestrator](https://github.com/vulcanize/stack-orchestrator), [ipld-eth-db](https://github.com/vulcanize/ipld-eth-db) [go-ethereum](https://github.com/vulcanize/go-ethereum) repositories. -- Checkout [v4 release](https://github.com/vulcanize/ipld-eth-db/releases/tag/v4.1.1-alpha) in ipld-eth-db repo. +- Checkout [v4 release](https://github.com/vulcanize/ipld-eth-db/releases/tag/v4.2.0-alpha) in ipld-eth-db repo. ```bash # In ipld-eth-db repo. - git checkout v4.1.1-alpha + git checkout v4.2.0-alpha ``` -- Checkout [v4 release](https://github.com/vulcanize/go-ethereum/releases/tag/v1.10.18-statediff-4.0.2-alpha) in go-ethereum repo. +- Checkout [v4 release](https://github.com/vulcanize/go-ethereum/releases/tag/v1.10.19-statediff-4.1.0-alpha) in go-ethereum repo. ```bash # In go-ethereum repo. - git checkout v1.10.18-statediff-4.0.2-alpha + git checkout v1.10.19-statediff-4.1.0-alpha ``` - Checkout working commit in stack-orchestrator repo. ```bash # In stack-orchestrator repo. - git checkout 418957a1f745c921b21286c13bb033f922a91ae9 + git checkout f2fd766f5400fcb9eb47b50675d2e3b1f2753702 ``` ## Run @@ -64,9 +64,6 @@ eth_forward_eth_calls=false eth_proxy_on_error=false eth_http_path="go-ethereum:8545" - ipld_eth_server_db_dependency=access-node - go_ethereum_db_dependency=access-node - connecting_db_name=vulcanize_testing_v4 ``` - Run stack-orchestrator: @@ -77,8 +74,7 @@ ./wrapper.sh \ -e docker \ - -d ../docker/latest/docker-compose-timescale-db.yml \ - -d ../docker/local/docker-compose-db-migration.yml \ + -d ../docker/local/docker-compose-db-sharding.yml \ -d ../docker/local/docker-compose-go-ethereum.yml \ -d ../docker/local/docker-compose-ipld-eth-server.yml \ -d ../docker/local/docker-compose-contract.yml \ @@ -111,9 +107,6 @@ eth_forward_eth_calls=true eth_proxy_on_error=false eth_http_path="go-ethereum:8545" - ipld_eth_server_db_dependency=access-node - go_ethereum_db_dependency=access-node - connecting_db_name=vulcanize_testing_v4 ``` - Stop the stack-orchestrator and start again using the same command