github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/generic/repository/memcached/memcachedtest/main_test.go (about) 1 package memcachedtest 2 3 import ( 4 "fmt" 5 "log" 6 "os" 7 "sync" 8 "testing" 9 10 _ "github.com/lib/pq" 11 "github.com/ory/dockertest" 12 "github.com/redis/go-redis/v9" 13 14 redisInDocker "github.com/angryronald/go-kit/test/docker/redis" 15 ) 16 17 var redisClient *redis.Client 18 var poolResourceMap map[*dockertest.Pool]*dockertest.Resource 19 var lock sync.Mutex 20 21 func init() { 22 poolResourceMap = map[*dockertest.Pool]*dockertest.Resource{} 23 } 24 25 func TestMain(m *testing.M) { 26 pool, err := dockertest.NewPool("") 27 if err != nil { 28 log.Fatalf("Could not connect to Docker: %s\n", err) 29 } 30 31 redisClientTemp, redisResource := redisInDocker.GenerateInstance(pool) 32 if redisClientTemp != nil { 33 redisClient = redisClientTemp 34 fmt.Printf("Success generate redis instance\n") 35 } 36 37 code := m.Run() // execute all the tests 38 39 // Delete the Docker container 40 for pool, instance := range poolResourceMap { 41 if err := pool.Purge(instance); err != nil { 42 log.Fatalf("Could not purge postgres resource: %s\n", err) 43 } 44 } 45 46 // Delete the Docker container 47 if err := pool.Purge(redisResource); err != nil { 48 log.Fatalf("Could not purge redis resource: %s\n", err) 49 } 50 51 defer os.Exit(code) 52 }