diff options
author | 2024-08-07 18:22:48 -0700 | |
---|---|---|
committer | 2024-08-07 18:48:12 -0700 | |
commit | b8aef1a7fb24815c7d93bc30c7b289b4f5896779 (patch) | |
tree | c65d6d571c928410faace1fa51c2ea3f49fce003 /backend/internal | |
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/internal')
-rw-r--r-- | backend/internal/redis/taskqueue/queue_test.go | 70 |
1 files changed, 47 insertions, 23 deletions
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 { |