chore: use testcontainers-go for couchbase and minio #1163
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' | |
mongo: | |
image: 'mongo:latest' | |
ports: | |
- '27017:27017' | |
mssql: | |
image: 'mcmoe/mssqldocker:latest' | |
ports: | |
- '1433:1433' | |
env: | |
ACCEPT_EULA: Y | |
SA_PASSWORD: MsSql!1234 | |
MSSQL_DB: master | |
MSSQL_USER: sa | |
MSSQL_PASSWORD: MsSql!1234 | |
options: >- | |
--health-cmd "/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD -Q 'select 1' -b -o /dev/null" | |
--health-interval 1s | |
--health-timeout 30s | |
--health-start-period 10s | |
--health-retries 20 | |
mysql: | |
image: 'mysql:latest' | |
env: | |
MYSQL_DATABASE: fiber | |
MYSQL_USER: username | |
MYSQL_PASSWORD: password | |
MYSQL_ROOT_PASSWORD: password | |
ports: | |
- '3306:3306' | |
options: >- | |
--health-cmd "mysqladmin ping" --health-interval 10s --health-timeout | |
5s --health-retries 5 | |
postgres: | |
image: 'postgres:latest' | |
ports: | |
- '5432:5432' | |
env: | |
POSTGRES_DB: fiber | |
POSTGRES_USER: username | |
POSTGRES_PASSWORD: "pass#w%rd" | |
options: >- | |
--health-cmd pg_isready --health-interval 10s --health-timeout 5s | |
--health-retries 5 | |
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: 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 ./... -benchmem -run=^$ -bench . | tee -a ../output.txt | |
cd .. | |
done | |
shell: bash | |
env: | |
MSSQL_DATABASE: master | |
MSSQL_USERNAME: sa | |
MSSQL_PASSWORD: MsSql!1234 | |
MYSQL_USERNAME: username | |
MYSQL_PASSWORD: password | |
MYSQL_DATABASE: fiber | |
POSTGRES_DATABASE: fiber | |
POSTGRES_USERNAME: username | |
POSTGRES_PASSWORD: "pass#w%rd" | |
TEST_CLICKHOUSE_IMAGE: "clickhouse/clickhouse-server:23-alpine" | |
TEST_COUCHBASE_IMAGE: "couchbase:enterprise-7.1.1" | |
TEST_MINIO_IMAGE: "docker.io/minio/minio:RELEASE.2024-08-17T01-24-54Z" | |
- name: Get Previous Benchmark Results | |
uses: actions/cache@v4 | |
with: | |
path: ./cache | |
key: ${{ runner.os }}-benchmark | |
- name: Save Benchmark Results | |
uses: benchmark-action/github-action-benchmark@v1.20.3 | |
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' }} |