aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorGravatar Anshul Gupta <ansg191@anshulg.com> 2024-08-07 18:22:48 -0700
committerGravatar Anshul Gupta <ansg191@anshulg.com> 2024-08-07 18:48:12 -0700
commitb8aef1a7fb24815c7d93bc30c7b289b4f5896779 (patch)
treec65d6d571c928410faace1fa51c2ea3f49fce003 /backend
parente9ee45b9d2bd494332dcf8b2073714f92fd0738d (diff)
downloadibd-trader-b8aef1a7fb24815c7d93bc30c7b289b4f5896779.tar.gz
ibd-trader-b8aef1a7fb24815c7d93bc30c7b289b4f5896779.tar.zst
ibd-trader-b8aef1a7fb24815c7d93bc30c7b289b4f5896779.zip
Switch tests to use dockertest
Diffstat (limited to 'backend')
-rw-r--r--backend/.github/workflows/go.yaml13
-rw-r--r--backend/internal/redis/taskqueue/queue_test.go70
2 files changed, 50 insertions, 33 deletions
diff --git a/backend/.github/workflows/go.yaml b/backend/.github/workflows/go.yaml
index fe1b3a1..2eb8dd2 100644
--- a/backend/.github/workflows/go.yaml
+++ b/backend/.github/workflows/go.yaml
@@ -14,15 +14,10 @@ jobs:
runs-on: ubuntu-latest
services:
- redis:
- image: redis
+ dind:
+ image: docker:dind-rootless
ports:
- - 6379:6379
- options: >-
- --health-cmd "redis-cli ping"
- --health-interval 10s
- --health-timeout 5s
- --health-retries 5
+ - 2375:2375
steps:
- uses: actions/checkout@v4
@@ -43,8 +38,6 @@ jobs:
run: go build -v ./...
- name: Test
run: go test -v ./...
- env:
- REDIS_ADDR: "localhost:6379"
lint:
runs-on: ubuntu-latest
diff --git a/backend/internal/redis/taskqueue/queue_test.go b/backend/internal/redis/taskqueue/queue_test.go
index aa817c5..774caa8 100644
--- a/backend/internal/redis/taskqueue/queue_test.go
+++ b/backend/internal/redis/taskqueue/queue_test.go
@@ -3,24 +3,64 @@ package taskqueue
import (
"context"
"errors"
- "os"
+ "fmt"
+ "log"
"testing"
"time"
+ "github.com/ory/dockertest/v3"
+ "github.com/ory/dockertest/v3/docker"
"github.com/redis/go-redis/v9"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
-func getRedisClient() *redis.Client {
- addr := os.Getenv("REDIS_ADDR")
- if addr == "" {
- addr = "localhost:6379"
+var client *redis.Client
+
+func TestMain(m *testing.M) {
+ pool, err := dockertest.NewPool("")
+ if err != nil {
+ log.Fatalf("Could not create pool: %s", err)
+ }
+
+ err = pool.Client.Ping()
+ if err != nil {
+ log.Fatalf("Could not connect to Docker: %s", err)
}
- return redis.NewClient(&redis.Options{
- Addr: addr,
+ //resource, err := pool.Run("redis", "7", nil)
+ resource, err := pool.RunWithOptions(&dockertest.RunOptions{
+ Repository: "redis",
+ Tag: "7",
+ }, func(config *docker.HostConfig) {
+ config.AutoRemove = true
+ config.RestartPolicy = docker.RestartPolicy{Name: "no"}
})
+ if err != nil {
+ log.Fatalf("Could not start resource: %s", err)
+ }
+
+ _ = resource.Expire(60)
+
+ if err = pool.Retry(func() error {
+ client = redis.NewClient(&redis.Options{
+ Addr: fmt.Sprintf("localhost:%s", resource.GetPort("6379/tcp")),
+ })
+ return client.Ping(context.Background()).Err()
+ }); err != nil {
+ log.Fatalf("Could not connect to redis: %s", err)
+ }
+
+ defer func() {
+ if err = client.Close(); err != nil {
+ log.Printf("Could not close client: %s", err)
+ }
+ if err = pool.Purge(resource); err != nil {
+ log.Fatalf("Could not purge resource: %s", err)
+ }
+ }()
+
+ m.Run()
}
func TestTaskQueue(t *testing.T) {
@@ -28,11 +68,6 @@ func TestTaskQueue(t *testing.T) {
t.Skip()
}
- client := getRedisClient()
- defer func(client *redis.Client) {
- _ = client.Close()
- }(client)
-
lockTimeout := 100 * time.Millisecond
tests := []struct {
@@ -214,11 +249,6 @@ func TestTaskQueue_List(t *testing.T) {
t.Skip()
}
- client := getRedisClient()
- defer func(client *redis.Client) {
- _ = client.Close()
- }(client)
-
tests := []struct {
name string
f func(t *testing.T)
@@ -378,16 +408,10 @@ func TestTaskQueue_List(t *testing.T) {
}
func TestTaskQueue_Return(t *testing.T) {
-
if testing.Short() {
t.Skip()
}
- client := getRedisClient()
- defer func(client *redis.Client) {
- _ = client.Close()
- }(client)
-
lockTimeout := 100 * time.Millisecond
tests := []struct {