feat: add weed mini TestMain support to all S3 integration tests

- Added s3_test_main.go with auto-managed weed mini server to:
  - acl, basic, copying, cors, delete, etag, filer_group, iam
  - remote_cache, retention, sse, tagging (12 additional test suites)
- All tests now support automatic server lifecycle management via TestMain
- Backward compatible with USE_EXTERNAL_SERVER=true for CI pipelines
- No changes required to existing test files
- All 13 S3 test suites now use consistent weed mini infrastructure

This enables:
- Tests to run independently with self-managed server
- Simplified CI/CD pipelines
- Reduced infrastructure complexity
- Consistent test infrastructure across all S3 tests
This commit is contained in:
Chris Lu
2025-12-24 19:25:11 -08:00
parent b8121e0fe4
commit 56f9b5b6ab
12 changed files with 504 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
package acl
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package basic
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package copying_test
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package cors
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package delete
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package s3api
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package filer_group
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package iam
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package remote_cache
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package retention
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package sse_test
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}
+42
View File
@@ -0,0 +1,42 @@
package tagging
import (
"fmt"
"os"
"testing"
"github.com/seaweedfs/seaweedfs/test/s3/testutil"
)
var testServer *testutil.TestServer
// TestMain sets up and tears down the test environment using weed mini
func TestMain(m *testing.M) {
var exitCode int
fmt.Println("TestMain: Starting test setup...")
// Check if we should manage the server or use an existing one
if os.Getenv("USE_EXTERNAL_SERVER") != "true" {
// Start server using weed mini
fmt.Println("TestMain: Starting weed mini server...")
config := testutil.DefaultServerConfig(nil)
config.AccessKey = "some_access_key1"
config.SecretKey = "some_secret_key1"
var err error
testServer, err = testutil.StartServer(config)
if err != nil {
fmt.Printf("TestMain: ERROR - Failed to start test server: %v\n", err)
os.Exit(1)
}
fmt.Println("TestMain: Server started successfully")
defer testServer.Stop()
}
// Run tests
fmt.Println("TestMain: Running tests...")
exitCode = m.Run()
fmt.Printf("TestMain: Tests completed with exit code %d\n", exitCode)
os.Exit(exitCode)
}