chore: adopt testcontainers-go for Postgres, MySQL, MSSQL and MongoDB #1215
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
branches: | |
- master | |
- main | |
paths: | |
- "**" | |
- "!**.md" | |
pull_request: | |
paths: | |
- "**" | |
- "!**.md" | |
permissions: | |
deployments: write | |
contents: write | |
name: Benchmark | |
jobs: | |
Compare: | |
runs-on: ubuntu-latest | |
services: | |
arangodb: | |
image: 'arangodb:latest' | |
env: | |
ARANGO_NO_AUTH: 1 | |
ports: | |
- '8529:8529' | |
dynamodb: | |
image: 'amazon/dynamodb-local:latest' | |
ports: | |
- '8000:8000' | |
memcached: | |
image: 'memcached:latest' | |
ports: | |
- '11211:11211' | |
steps: | |
- name: Fetch Repository | |
uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
# NOTE: Keep this in sync with the version from go.mod | |
go-version: "1.21.x" | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '18' | |
- name: Install Azurite | |
run: | | |
docker run -d -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0 --blobPort 10000 | |
- name: Install Cloudflare Worker | |
run : | | |
.github/scripts/initialize-wrangler.sh | |
cd cloudflarekv && npx wrangler dev & | |
npx wait-on tcp:8787 | |
- name: Install Coherence | |
run: | | |
docker run -d -p 1408:1408 -p 30000:30000 ghcr.io/oracle/coherence-ce:22.06.5 | |
sleep 30 | |
- name: Install etcd | |
run: | | |
docker run -d --name Etcd-server \ | |
--publish 2379:2379 \ | |
--publish 2380:2380 \ | |
--env ALLOW_NONE_AUTHENTICATION=yes \ | |
--env ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379 \ | |
bitnami/etcd:latest | |
- name: Install ScyllaDb | |
run: | | |
docker run --name scylladb -p 9042:9042 -p 19042:19042 -p 9160:9160 -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9180:9180 -d scylladb/scylla:latest --broadcast-address 127.0.0.1 --listen-address 0.0.0.0 --broadcast-rpc-address 127.0.0.1 | |
sleep 15 # Wait for ScyllaDb to initialize | |
- name: Setup Redis | |
uses: shogo82148/actions-setup-redis@v1 | |
with: | |
redis-version: '7.x' | |
auto-start: 'false' | |
- name: Run Redis | |
run: | | |
redis-server --port 6379 & | |
- name: Run NATS | |
run: | | |
./.github/scripts/gen-test-certs.sh | |
docker run -d --name nats-jetstream -p 4443:4443 -v ./nats/testdata:/testdata -v ./tls:/tls nats:latest --jetstream -c /testdata/nats-tls.conf | |
sleep 2 | |
- name: Tune the environment | |
run: | | |
cat /proc/sys/fs/aio-max-nr | |
echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf | |
sudo sysctl -p /etc/sysctl.conf | |
- name: Run Benchmarks | |
run: | | |
set -o pipefail | |
for d in */ ; do | |
[[ $d == "tls/" ]] && continue | |
[[ $d == "node_modules/" ]] && continue | |
cd "$d" | |
echo "Bench dir: $d" | |
go test ./... -v -benchmem -run=^$ -bench . | tee -a ../output.txt | |
cd .. | |
done | |
shell: bash | |
env: | |
TEST_CLICKHOUSE_IMAGE: "clickhouse/clickhouse-server:23-alpine" | |
TEST_COUCHBASE_IMAGE: "couchbase:enterprise-7.6.3" | |
TEST_MINIO_IMAGE: "docker.io/minio/minio:RELEASE.2024-08-17T01-24-54Z" | |
TEST_MONGODB_IMAGE: "docker.io/mongo:7" | |
TEST_MSSQL_IMAGE: "mcr.microsoft.com/mssql/server:2022-CU14-ubuntu-22.04" | |
TEST_MYSQL_IMAGE: "docker.io/mysql:9" | |
TEST_POSTGRES_IMAGE: "docker.io/postgres:16-alpine" | |
- name: Get Previous Benchmark Results | |
uses: actions/cache@v4 | |
with: | |
path: ./cache | |
key: ${{ runner.os }}-benchmark | |
- name: Save Benchmark Results | |
uses: benchmark-action/[email protected] | |
with: | |
tool: "go" | |
output-file-path: output.txt | |
github-token: ${{ secrets.BENCHMARK_TOKEN }} | |
benchmark-data-dir-path: "benchmarks" | |
alert-threshold: "300%" | |
fail-on-alert: true | |
comment-on-alert: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} | |
#summary-always: ${{ github.event_name != 'push' && github.event_name != 'workflow_dispatch' }} | |
auto-push: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} | |
save-data-file: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} |