github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/generic/repository/nosql/repositorytest/main_test.go (about)

     1  package repositorytest
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/gocql/gocql"
    10  	_ "github.com/lib/pq"
    11  
    12  	"github.com/angryronald/go-kit/generic/repository/nosql"
    13  )
    14  
    15  var db *gocql.Session
    16  
    17  // Cassandra having a memory leaks issue with dockertest, testing should be done manually by running cassandra in docker
    18  func TestMain(m *testing.M) {
    19  	// pool, err := dockertest.NewPool("")
    20  	// if err != nil {
    21  	// 	log.Fatalf("Could not connect to Docker: %s", err)
    22  	// }
    23  	// resource, err := pool.Run("cassandra", "latest", nil)
    24  	// if err != nil {
    25  	// 	log.Fatalf("Could not start resource: %s", err)
    26  	// }
    27  	// defer resource.Close()
    28  
    29  	// if err := pool.Retry(func() error {
    30  	// 	db, err = gocql.NewCluster("localhost").CreateSession()
    31  	// 	if err != nil {
    32  	// 		return err
    33  	// 	}
    34  	// 	defer db.Close()
    35  
    36  	// 	if err = db.Query("CREATE KEYSPACE IF NOT EXISTS example WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};").Exec(); err != nil {
    37  	// 		return err
    38  	// 	}
    39  
    40  	// 	if err = nosql.MigrateTable(db, &TestModel{}); err != nil {
    41  	// 		return err
    42  	// 	}
    43  
    44  	// 	if err = nosql.MigrateTable(db, &ImmutableTestModel{}); err != nil {
    45  	// 		return err
    46  	// 	}
    47  
    48  	// 	return nil
    49  	// }); err != nil {
    50  	// 	log.Fatalf("Could not connect to Docker: %v", err)
    51  	// }
    52  
    53  	// manual test
    54  	var err error
    55  	db, err = gocql.NewCluster("localhost").CreateSession()
    56  	if err != nil {
    57  		log.Fatalf("Could not connect to cassandra: %v", err)
    58  	}
    59  	defer db.Close()
    60  
    61  	if keySpace == "" {
    62  		keySpace = "example"
    63  	}
    64  	if err = db.Query(fmt.Sprintf("CREATE KEYSPACE IF NOT EXISTS %s WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};", keySpace)).Exec(); err != nil {
    65  		log.Fatalf("Could not create keyspace: %v", err)
    66  	}
    67  
    68  	if err = nosql.MigrateTable(db, "example", &TestModel{}); err != nil {
    69  		log.Fatalf("Could not migrate table: %v", err)
    70  	}
    71  
    72  	if err = nosql.MigrateTable(db, "example", &ImmutableTestModel{}); err != nil {
    73  		log.Fatalf("Could not migrate table: %v", err)
    74  	}
    75  
    76  	code := m.Run() // execute all the tests
    77  
    78  	// Delete the Docker container
    79  	// if err := pool.Purge(resource); err != nil {
    80  	// 	logrus.Fatalf("Could not purge postgres resource: %v", err)
    81  	// }
    82  
    83  	defer os.Exit(code)
    84  }