diff options
author | 2024-08-07 18:22:48 -0700 | |
---|---|---|
committer | 2024-08-07 18:48:12 -0700 | |
commit | b8aef1a7fb24815c7d93bc30c7b289b4f5896779 (patch) | |
tree | c65d6d571c928410faace1fa51c2ea3f49fce003 /backend | |
parent | e9ee45b9d2bd494332dcf8b2073714f92fd0738d (diff) | |
download | ibd-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.yaml | 13 | ||||
-rw-r--r-- | backend/internal/redis/taskqueue/queue_test.go | 70 |
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 { |