mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-08-20 22:27:04 +00:00
add docstrings to Dremio integration tests and fix CI image pre-pull
- Add function docstrings to all test functions and helper functions in dremio_catalog_test.go, dremio_crud_operations_test.go, and dremio_deterministic_location_test.go to improve code documentation and satisfy CodeRabbit's docstring coverage requirements. - Make Dremio Docker image pre-pull non-critical in CI workflow. The pre-pull was failing with access denied error, but the image can still be pulled at runtime. Using continue-on-error to allow tests to proceed.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
{"sessionId":"fba16607-cd4c-4120-8aed-3f7b3e9e8daa","pid":65783,"procStart":"Fri May 1 22:24:46 2026","acquiredAt":1777680869716}
|
||||
@@ -213,7 +213,8 @@ jobs:
|
||||
uses: docker/setup-buildx-action@v4
|
||||
|
||||
- name: Pre-pull Dremio image
|
||||
run: docker pull dremio/dremio:latest
|
||||
run: docker pull dremio/dremio:latest || echo "Warning: Failed to pre-pull Dremio image, will try at runtime"
|
||||
continue-on-error: true
|
||||
|
||||
- name: Run go mod tidy
|
||||
run: go mod tidy
|
||||
|
||||
@@ -39,6 +39,7 @@ type TestEnvironment struct {
|
||||
secretKey string
|
||||
}
|
||||
|
||||
// TestDremioIcebergCatalog tests basic Dremio catalog connectivity and schema operations.
|
||||
func TestDremioIcebergCatalog(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
@@ -77,6 +78,7 @@ func TestDremioIcebergCatalog(t *testing.T) {
|
||||
runDremioSQL(t, env.dremioContainer, fmt.Sprintf("SHOW TABLES IN %s", schemaName))
|
||||
}
|
||||
|
||||
// TestDremioTableOperations tests table creation, insertion, and querying with Dremio.
|
||||
func TestDremioTableOperations(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
@@ -129,6 +131,7 @@ func TestDremioTableOperations(t *testing.T) {
|
||||
t.Logf(">>> TestDremioTableOperations PASSED")
|
||||
}
|
||||
|
||||
// NewTestEnvironment creates a new test environment with allocated ports and configuration.
|
||||
func NewTestEnvironment(t *testing.T) *TestEnvironment {
|
||||
t.Helper()
|
||||
|
||||
@@ -190,6 +193,7 @@ func NewTestEnvironment(t *testing.T) *TestEnvironment {
|
||||
return env
|
||||
}
|
||||
|
||||
// StartSeaweedFS starts a SeaweedFS mini instance with all necessary services.
|
||||
func (env *TestEnvironment) StartSeaweedFS(t *testing.T) {
|
||||
t.Helper()
|
||||
|
||||
@@ -251,6 +255,7 @@ func (env *TestEnvironment) StartSeaweedFS(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup stops all processes and removes temporary resources.
|
||||
func (env *TestEnvironment) Cleanup(t *testing.T) {
|
||||
t.Helper()
|
||||
|
||||
@@ -272,6 +277,7 @@ func (env *TestEnvironment) Cleanup(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// waitForService polls a URL until it responds with a success status or timeout is reached.
|
||||
func (env *TestEnvironment) waitForService(url string, timeout time.Duration) bool {
|
||||
client := &http.Client{Timeout: 2 * time.Second}
|
||||
deadline := time.Now().Add(timeout)
|
||||
@@ -294,6 +300,7 @@ func (env *TestEnvironment) waitForService(url string, timeout time.Duration) bo
|
||||
return false
|
||||
}
|
||||
|
||||
// testIcebergRestAPI verifies that the Iceberg REST API endpoint is responding.
|
||||
func testIcebergRestAPI(t *testing.T, env *TestEnvironment) {
|
||||
t.Helper()
|
||||
fmt.Printf(">>> Testing Iceberg REST API directly...\n")
|
||||
@@ -324,6 +331,7 @@ func testIcebergRestAPI(t *testing.T, env *TestEnvironment) {
|
||||
}
|
||||
}
|
||||
|
||||
// writeDremioConfig creates a Dremio configuration file with Iceberg catalog settings.
|
||||
func (env *TestEnvironment) writeDremioConfig(t *testing.T, warehouseBucket string) string {
|
||||
t.Helper()
|
||||
|
||||
@@ -358,6 +366,7 @@ func (env *TestEnvironment) writeDremioConfig(t *testing.T, warehouseBucket stri
|
||||
return configDir
|
||||
}
|
||||
|
||||
// startDremioContainer starts a Dremio Docker container with the given configuration.
|
||||
func (env *TestEnvironment) startDremioContainer(t *testing.T, configDir string) {
|
||||
t.Helper()
|
||||
|
||||
@@ -379,6 +388,7 @@ func (env *TestEnvironment) startDremioContainer(t *testing.T, configDir string)
|
||||
}
|
||||
}
|
||||
|
||||
// waitForDremio waits for Dremio container to be ready by polling its health endpoint.
|
||||
func waitForDremio(t *testing.T, containerName string, timeout time.Duration) {
|
||||
t.Helper()
|
||||
|
||||
@@ -412,6 +422,7 @@ func waitForDremio(t *testing.T, containerName string, timeout time.Duration) {
|
||||
t.Fatalf("Timed out waiting for Dremio to be ready\nLast output:\n%s", string(lastOutput))
|
||||
}
|
||||
|
||||
// runDremioSQL executes a SQL statement in Dremio and returns the output.
|
||||
func runDremioSQL(t *testing.T, containerName, sql string) string {
|
||||
t.Helper()
|
||||
|
||||
@@ -429,6 +440,7 @@ func runDremioSQL(t *testing.T, containerName, sql string) string {
|
||||
return strings.TrimSpace(string(output))
|
||||
}
|
||||
|
||||
// createTableBucket creates an S3 table bucket using weed shell command.
|
||||
func createTableBucket(t *testing.T, env *TestEnvironment, bucketName string) {
|
||||
t.Helper()
|
||||
|
||||
@@ -447,11 +459,13 @@ func createTableBucket(t *testing.T, env *TestEnvironment, bucketName string) {
|
||||
t.Logf("Created table bucket: %s", bucketName)
|
||||
}
|
||||
|
||||
// hasDocker checks if Docker is available in the system.
|
||||
func hasDocker() bool {
|
||||
cmd := exec.Command("docker", "version")
|
||||
return cmd.Run() == nil
|
||||
}
|
||||
|
||||
// randomString generates a random string of the specified length.
|
||||
func randomString(length int) string {
|
||||
const charset = "abcdefghijklmnopqrstuvwxyz0123456789"
|
||||
b := make([]byte, length)
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// setupDremioTest creates a test environment with SeaweedFS and Dremio running.
|
||||
func setupDremioTest(t *testing.T) *TestEnvironment {
|
||||
t.Helper()
|
||||
|
||||
@@ -34,6 +35,7 @@ func setupDremioTest(t *testing.T) *TestEnvironment {
|
||||
return env
|
||||
}
|
||||
|
||||
// TestSchemaCRUD tests schema creation, listing, and deletion operations.
|
||||
func TestSchemaCRUD(t *testing.T) {
|
||||
env := setupDremioTest(t)
|
||||
defer env.Cleanup(t)
|
||||
@@ -62,6 +64,7 @@ func TestSchemaCRUD(t *testing.T) {
|
||||
t.Logf(">>> TestSchemaCRUD PASSED")
|
||||
}
|
||||
|
||||
// TestTableCRUD tests table creation, insertion, listing, and deletion operations.
|
||||
func TestTableCRUD(t *testing.T) {
|
||||
env := setupDremioTest(t)
|
||||
defer env.Cleanup(t)
|
||||
@@ -100,6 +103,7 @@ func TestTableCRUD(t *testing.T) {
|
||||
t.Logf(">>> TestTableCRUD PASSED")
|
||||
}
|
||||
|
||||
// TestDataInsertAndQuery tests data insertion and querying with various SQL operations.
|
||||
func TestDataInsertAndQuery(t *testing.T) {
|
||||
env := setupDremioTest(t)
|
||||
defer env.Cleanup(t)
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// TestDeterministicTableLocation tests that explicit table locations are preserved.
|
||||
func TestDeterministicTableLocation(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
@@ -64,6 +65,7 @@ func TestDeterministicTableLocation(t *testing.T) {
|
||||
t.Logf(">>> TestDeterministicTableLocation PASSED")
|
||||
}
|
||||
|
||||
// TestMultiLevelNamespace tests multi-level namespace (dot-separated) support.
|
||||
func TestMultiLevelNamespace(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
|
||||
Reference in New Issue
Block a user