aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2025-08-31 13:11:57 -0700
committerchrislu <chris.lu@gmail.com>2025-08-31 13:11:57 -0700
commit705c965c5c8e67cf9fa10e34a26e3282227dd6e8 (patch)
tree0930913b2c2ef6eed3b4179325da461e3e93e954
parenta2378a29dcea338e598689344b139515db7814c4 (diff)
downloadseaweedfs-705c965c5c8e67cf9fa10e34a26e3282227dd6e8.tar.xz
seaweedfs-705c965c5c8e67cf9fa10e34a26e3282227dd6e8.zip
fix
-rw-r--r--.github/workflows/posix-compliance.yml26
-rw-r--r--test/fuse_integration/fallocate_darwin.go6
-rw-r--r--test/fuse_integration/framework.go21
-rw-r--r--test/fuse_integration/posix_Makefile2
-rw-r--r--test/fuse_integration/posix_extended_test.go2
5 files changed, 55 insertions, 2 deletions
diff --git a/.github/workflows/posix-compliance.yml b/.github/workflows/posix-compliance.yml
index 28edcabbb..2235f8703 100644
--- a/.github/workflows/posix-compliance.yml
+++ b/.github/workflows/posix-compliance.yml
@@ -252,6 +252,26 @@ jobs:
# Verify mount point
echo "Mount point: $SEAWEEDFS_MOUNT_POINT"
ls -la $SEAWEEDFS_MOUNT_POINT
+
+ # Verify mount is actually working by testing file operations
+ echo "Verifying SeaweedFS mount functionality..."
+ TEST_FILE="$SEAWEEDFS_MOUNT_POINT/.mount_verification_test"
+ echo "SeaweedFS mount test" > "$TEST_FILE"
+ if [ "$(cat "$TEST_FILE")" = "SeaweedFS mount test" ]; then
+ echo "✅ Mount verification successful"
+ rm -f "$TEST_FILE"
+ else
+ echo "❌ Mount verification failed - mount may not be working properly"
+ exit 1
+ fi
+
+ # Check if this is actually a FUSE mount
+ if mount | grep -q "$SEAWEEDFS_MOUNT_POINT"; then
+ echo "✅ FUSE mount detected:"
+ mount | grep "$SEAWEEDFS_MOUNT_POINT"
+ else
+ echo "⚠️ Warning: Mount point not found in mount table"
+ fi
- name: Run POSIX compliance tests
id: posix-tests
@@ -273,6 +293,12 @@ jobs:
export TEST_MOUNT_POINT="$SEAWEEDFS_MOUNT_POINT"
export TEST_SKIP_CLUSTER_SETUP="true"
+ # Debug: Show environment variables
+ echo "🔍 Test Environment:"
+ echo " TEST_MOUNT_POINT=$TEST_MOUNT_POINT"
+ echo " TEST_SKIP_CLUSTER_SETUP=$TEST_SKIP_CLUSTER_SETUP"
+ echo " SEAWEEDFS_MOUNT_POINT=$SEAWEEDFS_MOUNT_POINT"
+
case "$TEST_TYPE" in
"critical")
make -f posix_Makefile test-posix-critical
diff --git a/test/fuse_integration/fallocate_darwin.go b/test/fuse_integration/fallocate_darwin.go
index 94f5de7b9..fa67f3f7a 100644
--- a/test/fuse_integration/fallocate_darwin.go
+++ b/test/fuse_integration/fallocate_darwin.go
@@ -34,6 +34,12 @@ type fstore struct {
}
func fallocateFile(fd int, mode int, offset int64, length int64) error {
+ // Check for unsupported modes on macOS
+ unsupportedModes := FALLOC_FL_PUNCH_HOLE | FALLOC_FL_NO_HIDE_STALE | FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_ZERO_RANGE | FALLOC_FL_INSERT_RANGE | FALLOC_FL_UNSHARE_RANGE
+ if mode&unsupportedModes != 0 {
+ return syscall.ENOTSUP // Operation not supported
+ }
+
// On macOS, we use fcntl with F_PREALLOCATE
store := fstore{
flags: F_ALLOCATECONTIG,
diff --git a/test/fuse_integration/framework.go b/test/fuse_integration/framework.go
index 32bcb97a9..c0ac39b77 100644
--- a/test/fuse_integration/framework.go
+++ b/test/fuse_integration/framework.go
@@ -106,6 +106,27 @@ func (f *FuseTestFramework) Setup(config *TestConfig) error {
f.t.Logf("Warning: failed to cleanup test file: %v", err)
}
+ // Verify this is actually a SeaweedFS mount by checking for SeaweedFS-specific behavior
+ // Create a test file and verify it appears in the filer
+ verifyFile := filepath.Join(f.mountPoint, ".seaweedfs_mount_verification")
+ if err := os.WriteFile(verifyFile, []byte("SeaweedFS mount verification"), 0644); err != nil {
+ return fmt.Errorf("mount point verification failed - cannot write: %v", err)
+ }
+
+ // Read it back to ensure it's working
+ if data, err := os.ReadFile(verifyFile); err != nil {
+ return fmt.Errorf("mount point verification failed - cannot read: %v", err)
+ } else if string(data) != "SeaweedFS mount verification" {
+ return fmt.Errorf("mount point verification failed - data mismatch")
+ }
+
+ // Clean up verification file
+ if err := os.Remove(verifyFile); err != nil {
+ f.t.Logf("Warning: failed to cleanup verification file: %v", err)
+ }
+
+ f.t.Logf("✅ SeaweedFS mount point verified and working: %s", f.mountPoint)
+
f.isSetup = true
return nil
}
diff --git a/test/fuse_integration/posix_Makefile b/test/fuse_integration/posix_Makefile
index a369cb5ef..7b74c984e 100644
--- a/test/fuse_integration/posix_Makefile
+++ b/test/fuse_integration/posix_Makefile
@@ -320,7 +320,7 @@ generate-json-report:
@echo "{" > $(REPORT_DIR)/posix_compliance_report.json
@echo " \"report_type\": \"posix_compliance\"," >> $(REPORT_DIR)/posix_compliance_report.json
@echo " \"timestamp\": \"$$(date -u +"%Y-%m-%dT%H:%M:%SZ")\"," >> $(REPORT_DIR)/posix_compliance_report.json
- @echo " \"seaweedfs_version\": \"$$($(WEED_BINARY) version 2>/dev/null | head -n1 || echo 'Unknown')\"," >> $(REPORT_DIR)/posix_compliance_report.json
+ @echo " \"seaweedfs_version\": \"$$($(WEED_BINARY) version 2>/dev/null | head -n1 | sed 's/\\/\\\\/g; s/\"/\\\"/g' || echo 'Unknown')\"," >> $(REPORT_DIR)/posix_compliance_report.json
@echo " \"test_environment\": { \"os\": \"$$(uname -s)\", \"arch\": \"$$(uname -m)\" }," >> $(REPORT_DIR)/posix_compliance_report.json
@echo " \"test_suites\": {" >> $(REPORT_DIR)/posix_compliance_report.json
@FIRST=true; \
diff --git a/test/fuse_integration/posix_extended_test.go b/test/fuse_integration/posix_extended_test.go
index 408d93287..bc966c15b 100644
--- a/test/fuse_integration/posix_extended_test.go
+++ b/test/fuse_integration/posix_extended_test.go
@@ -197,7 +197,7 @@ func (s *POSIXExtendedTestSuite) TestFileLocking(t *testing.T) {
}
err = syscall.FcntlFlock(file2.Fd(), syscall.F_SETLK, &flock2)
- require.Equal(t, syscall.EAGAIN, err) // Lock should be blocked
+ require.Equal(t, syscall.EAGAIN, err) // Lock attempt should fail immediately as it's non-blocking
// Release lock
flock.Type = syscall.F_UNLCK