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  }