@@ -21,6 +21,79 @@ clean:
2121test :
2222 @$(GO ) test ./...
2323
24+ # E2E regression testing.
25+ E2E_REGRESSION_SUITES := mainnet_sapphire_2025_09
26+
27+ compress-e2e-regression-caches :
28+ for suite in $( E2E_REGRESSION_SUITES) ; do \
29+ cache_dir=" tests/e2e_regression/$$ suite/pebble-cache" ; \
30+ archive_path=" tests/e2e_regression/$$ suite/pebble-cache.tzst" ; \
31+ echo " Compressing $$ cache_dir to $$ archive_path..." ; \
32+ tar -cf " $$ archive_path" --exclude=' *.backup' -C " $$ (dirname $$ cache_dir)" " $$ (basename $$ cache_dir)" \
33+ --use-compress-program zstd; \
34+ done
35+
36+ clean-e2e-regression-caches :
37+ for suite in $( E2E_REGRESSION_SUITES) ; do \
38+ cache_dir=" tests/e2e_regression/$$ suite/pebble-cache" ; \
39+ archive_path=" tests/e2e_regression/$$ suite/pebble-cache.tzst" ; \
40+ echo " Removing $$ cache_dir and $$ archive_path..." ; \
41+ rm -rf " $$ cache_dir" " $$ archive_path" ; \
42+ done
43+
44+ ensure-e2e-regression-caches :
45+ for suite in $( E2E_REGRESSION_SUITES) ; do \
46+ cache_path=" tests/e2e_regression/$$ suite/pebble-cache" ; \
47+ archive_path=" tests/e2e_regression/$$ suite/pebble-cache.tzst" ; \
48+ if [ " $$ FORCE" = " 1" ]; then \
49+ echo " Forcing extraction of $$ cache_path..." ; \
50+ rm -rf " $$ cache_path" ; \
51+ fi ; \
52+ if [ ! -d " $$ cache_path" ]; then \
53+ if [ -f " $$ archive_path" ]; then \
54+ echo " Extracting $$ archive_path to $$ cache_path..." ; \
55+ mkdir -p " $$ (dirname $$ cache_path)" ; \
56+ tar -xf " $$ archive_path" -C " $$ (dirname $$ cache_path)" --use-compress-program unzstd; \
57+ else \
58+ echo " Archive $$ archive_path not found, will run with empty cache." ; \
59+ fi ; \
60+ else \
61+ echo " Cache already exists for $$ suite — skipping." ; \
62+ fi ; \
63+ done
64+
65+ # Run the e2e regression tests, assuming the environment is set up.
66+ test-e2e-regression : oasis-web3-gateway ensure-e2e-regression-caches
67+ for suite in $( E2E_REGRESSION_SUITES) ; do ./tests/e2e_regression/run.sh $$ suite; done
68+
69+ # Accept the outputs of the e2e regression tests as the new expected outputs.
70+ accept-e2e-regression :
71+ for suite in $( E2E_REGRESSION_SUITES) ; do ./tests/e2e_regression/accept.sh $$ suite; done
72+
73+ # Check actual vs expected results for e2e regression tests.
74+ check-e2e-regression :
75+ for suite in $( E2E_REGRESSION_SUITES) ; do ./tests/e2e_regression/check.sh $$ suite; done
76+
77+ # Run dockerized postgres for local development.
78+ postgres :
79+ @docker ps -a --format ' {{.Names}}' | grep -q oasis-web3-gateway-postgres && docker start oasis-web3-gateway-postgres || \
80+ docker run \
81+ --name oasis-web3-gateway-postgres \
82+ -p 5432:5432 \
83+ -e POSTGRES_USER=postgres \
84+ -e POSTGRES_PASSWORD=postgres \
85+ -e POSTGRES_DB=postgres \
86+ -d postgres -c log_statement=all
87+ @sleep 3 # Allow time for postgres to start accepting connections.
88+
89+ # Attach to the local DB from "make postgres".
90+ psql :
91+ @docker exec -it oasis-web3-gateway-postgres psql -U postgres postgres
92+
93+ # Stop and remove the postgres container.
94+ shutdown-postgres :
95+ @docker rm oasis-web3-gateway-postgres --force
96+
2497# Format code.
2598fmt :
2699 @$(ECHO ) " $( CYAN) *** Running Go formatters...$( OFF) "
@@ -64,6 +137,9 @@ docker-sapphire-localnet:
64137 oasis-web3-gateway \
65138 clean \
66139 test \
140+ compress-e2e-regression-caches clean-e2e-regression-caches ensure-e2e-regression-caches \
141+ test-e2e-regression accept-e2e-regression check-e2e-regression \
142+ postgres psql shutdown-postgres \
67143 fmt \
68144 $(lint-targets ) lint \
69145 release-build \
0 commit comments