chore(s3): use require in tests, running a container per test function

This commit is contained in:
Manuel de la Peña
2025-04-15 16:54:45 +02:00
parent a875f39f69
commit 827ef9ec96
3 changed files with 47 additions and 12 deletions

View File

@@ -6,6 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/require"
"github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go"
"github.com/testcontainers/testcontainers-go/modules/minio" "github.com/testcontainers/testcontainers-go/modules/minio"
"github.com/testcontainers/testcontainers-go/wait" "github.com/testcontainers/testcontainers-go/wait"
@@ -15,8 +16,6 @@ const (
bucket = "testbucket" bucket = "testbucket"
) )
var testStore *Storage
const ( const (
// minioImage is the default image used for running S3 in tests. // minioImage is the default image used for running S3 in tests.
minioImage = "docker.io/minio/minio:latest" minioImage = "docker.io/minio/minio:latest"
@@ -25,7 +24,7 @@ const (
minioPass string = "minio-password" minioPass string = "minio-password"
) )
func TestMain(m *testing.M) { func newTestStore(t testing.TB) *Storage {
img := minioImage img := minioImage
if imgFromEnv := os.Getenv(minioImageEnvVar); imgFromEnv != "" { if imgFromEnv := os.Getenv(minioImageEnvVar); imgFromEnv != "" {
img = imgFromEnv img = imgFromEnv
@@ -51,7 +50,7 @@ func TestMain(m *testing.M) {
panic(err) panic(err)
} }
testStore = New( testStore := New(
Config{ Config{
Bucket: bucket, Bucket: bucket,
Endpoint: "http://" + conn, Endpoint: "http://" + conn,
@@ -65,12 +64,9 @@ func TestMain(m *testing.M) {
) )
// Create test bucket. // Create test bucket.
_ = testStore.CreateBucket(bucket) err = testStore.CreateBucket(bucket)
require.NoError(t, err)
// Do not delete test bucket, as the container is disposed after each test.
exitVal := m.Run() return testStore
// Delete test bucket.
_ = testStore.DeleteBucket(bucket)
os.Exit(exitVal)
} }

View File

@@ -11,6 +11,9 @@ import (
func Test_S3_CreateDeleteBucket(t *testing.T) { func Test_S3_CreateDeleteBucket(t *testing.T) {
bkt := "test-new-bucket" bkt := "test-new-bucket"
testStore := newTestStore(t)
defer testStore.Close()
err := testStore.CreateBucket(bkt) err := testStore.CreateBucket(bkt)
require.NoError(t, err) require.NoError(t, err)
@@ -21,6 +24,9 @@ func Test_S3_CreateDeleteBucket(t *testing.T) {
func Test_S3_DeleteMany(t *testing.T) { func Test_S3_DeleteMany(t *testing.T) {
val := []byte("doe") val := []byte("doe")
testStore := newTestStore(t)
defer testStore.Close()
err := testStore.Set("john1", val, 0) err := testStore.Set("john1", val, 0)
require.NoError(t, err) require.NoError(t, err)
@@ -61,6 +67,9 @@ func Test_S3_SetWithChecksum(t *testing.T) {
types.ChecksumAlgorithmSha256: sha256sum, types.ChecksumAlgorithmSha256: sha256sum,
} }
testStore := newTestStore(t)
defer testStore.Close()
err := testStore.SetWithChecksum(key, val, checksum) err := testStore.SetWithChecksum(key, val, checksum)
require.NoError(t, err) require.NoError(t, err)

View File

@@ -12,6 +12,9 @@ func Test_S3_Set(t *testing.T) {
val = []byte("doe") val = []byte("doe")
) )
testStore := newTestStore(t)
defer testStore.Close()
err := testStore.Set(key, val, 0) err := testStore.Set(key, val, 0)
require.NoError(t, err) require.NoError(t, err)
} }
@@ -22,6 +25,9 @@ func Test_S3_Set_Override(t *testing.T) {
val = []byte("doe") val = []byte("doe")
) )
testStore := newTestStore(t)
defer testStore.Close()
err := testStore.Set(key, val, 0) err := testStore.Set(key, val, 0)
require.NoError(t, err) require.NoError(t, err)
@@ -35,6 +41,9 @@ func Test_S3_Get(t *testing.T) {
val = []byte("doe") val = []byte("doe")
) )
testStore := newTestStore(t)
defer testStore.Close()
err := testStore.Set(key, val, 0) err := testStore.Set(key, val, 0)
require.NoError(t, err) require.NoError(t, err)
@@ -44,6 +53,9 @@ func Test_S3_Get(t *testing.T) {
} }
func Test_S3_Get_NotExist(t *testing.T) { func Test_S3_Get_NotExist(t *testing.T) {
testStore := newTestStore(t)
defer testStore.Close()
result, err := testStore.Get("notexist") result, err := testStore.Get("notexist")
require.NoError(t, err) require.NoError(t, err)
require.Zero(t, len(result)) require.Zero(t, len(result))
@@ -55,6 +67,9 @@ func Test_S3_Delete(t *testing.T) {
val = []byte("doe") val = []byte("doe")
) )
testStore := newTestStore(t)
defer testStore.Close()
err := testStore.Set(key, val, 0) err := testStore.Set(key, val, 0)
require.NoError(t, err) require.NoError(t, err)
@@ -69,6 +84,9 @@ func Test_S3_Delete(t *testing.T) {
func Test_S3_Reset(t *testing.T) { func Test_S3_Reset(t *testing.T) {
val := []byte("doe") val := []byte("doe")
testStore := newTestStore(t)
defer testStore.Close()
err := testStore.Set("john1", val, 0) err := testStore.Set("john1", val, 0)
require.NoError(t, err) require.NoError(t, err)
@@ -88,14 +106,20 @@ func Test_S3_Reset(t *testing.T) {
} }
func Test_S3_Close(t *testing.T) { func Test_S3_Close(t *testing.T) {
require.Nil(t, testStore.Close()) testStore := newTestStore(t)
require.NoError(t, testStore.Close())
} }
func Test_S3_Conn(t *testing.T) { func Test_S3_Conn(t *testing.T) {
testStore := newTestStore(t)
defer testStore.Close()
require.True(t, testStore.Conn() != nil) require.True(t, testStore.Conn() != nil)
} }
func Benchmark_S3_Set(b *testing.B) { func Benchmark_S3_Set(b *testing.B) {
testStore := newTestStore(b)
defer testStore.Close()
b.ReportAllocs() b.ReportAllocs()
b.ResetTimer() b.ResetTimer()
@@ -108,6 +132,9 @@ func Benchmark_S3_Set(b *testing.B) {
} }
func Benchmark_S3_Get(b *testing.B) { func Benchmark_S3_Get(b *testing.B) {
testStore := newTestStore(b)
defer testStore.Close()
err := testStore.Set("john", []byte("doe"), 0) err := testStore.Set("john", []byte("doe"), 0)
require.NoError(b, err) require.NoError(b, err)
@@ -122,6 +149,9 @@ func Benchmark_S3_Get(b *testing.B) {
} }
func Benchmark_S3_SetAndDelete(b *testing.B) { func Benchmark_S3_SetAndDelete(b *testing.B) {
testStore := newTestStore(b)
defer testStore.Close()
b.ReportAllocs() b.ReportAllocs()
b.ResetTimer() b.ResetTimer()