fix(fuse-tests): pass glog flags before the mount subcommand (#10215)

glog flags (-v, -logtostderr) are registered on weed's global flagset,
so passing them after the subcommand name kills the process at flag
parsing: flag provided but not defined: -logtostderr. The old stat-based
mount readiness probe masked this — TestWriteBufferCap silently ran
against the bare local directory and passed. The device-ID readiness
check now surfaces the dead mount as a not-ready timeout.

Move glog flags into MountGlobalOptions, emitted before the subcommand,
and do the same for the EnableDebug verbosity flag on mini and mount.
This commit is contained in:
Chris Lu
2026-07-02 18:01:57 -07:00
committed by GitHub
parent 39961ce5d7
commit 3089480c30
2 changed files with 40 additions and 32 deletions
+31 -25
View File
@@ -34,14 +34,18 @@ type FuseTestFramework struct {
// TestConfig holds configuration for FUSE tests
type TestConfig struct {
Collection string
Replication string
ChunkSizeMB int
CacheSizeMB int
NumVolumes int
EnableDebug bool
MountOptions []string
SkipCleanup bool // for debugging failed tests
Collection string
Replication string
ChunkSizeMB int
CacheSizeMB int
NumVolumes int
EnableDebug bool
// MountGlobalOptions are glog flags (-v, -logtostderr, ...) registered on
// weed's global flagset; they must precede the subcommand name or the
// mount process dies at flag parsing.
MountGlobalOptions []string
MountOptions []string
SkipCleanup bool // for debugging failed tests
}
// DefaultTestConfig returns a default configuration for FUSE tests
@@ -246,19 +250,20 @@ func (f *FuseTestFramework) copyLogsForCI() {
// startMini starts "weed mini" which runs master+volume+filer in one process.
func (f *FuseTestFramework) startMini(config *TestConfig) error {
args := []string{
"mini",
"-dir=" + f.dataDir,
"-ip=127.0.0.1",
"-ip.bind=127.0.0.1",
"-filer.port=" + strconv.Itoa(f.filerPort),
"-s3=false",
"-webdav=false",
"-admin.ui=false",
}
var args []string
if config.EnableDebug {
args = append(args, "-v=4")
}
args = append(args,
"mini",
"-dir="+f.dataDir,
"-ip=127.0.0.1",
"-ip.bind=127.0.0.1",
"-filer.port="+strconv.Itoa(f.filerPort),
"-s3=false",
"-webdav=false",
"-admin.ui=false",
)
proc, err := f.startProcess("mini", args)
if err != nil {
@@ -270,14 +275,18 @@ func (f *FuseTestFramework) startMini(config *TestConfig) error {
// mountFuse mounts the SeaweedFS FUSE filesystem
func (f *FuseTestFramework) mountFuse(config *TestConfig) error {
args := []string{
args := append([]string{}, config.MountGlobalOptions...)
if config.EnableDebug {
args = append(args, "-v=4")
}
args = append(args,
"mount",
"-filer=127.0.0.1:" + strconv.Itoa(f.filerPort),
"-dir=" + f.mountPoint,
"-filer=127.0.0.1:"+strconv.Itoa(f.filerPort),
"-dir="+f.mountPoint,
"-filer.path=/",
"-dirAutoCreate",
"-allowOthers=false",
}
)
if config.Collection != "" {
args = append(args, "-collection="+config.Collection)
@@ -291,9 +300,6 @@ func (f *FuseTestFramework) mountFuse(config *TestConfig) error {
if config.CacheSizeMB > 0 {
args = append(args, fmt.Sprintf("-cacheCapacityMB=%d", config.CacheSizeMB))
}
if config.EnableDebug {
args = append(args, "-v=4")
}
args = append(args, config.MountOptions...)
@@ -79,6 +79,15 @@ func writeBufferCapConfig(debugPort int) *TestConfig {
CacheSizeMB: 100, // read cache (unrelated)
NumVolumes: 3,
EnableDebug: false,
// Route glog to stderr so the framework's process log capture
// actually contains something — by default weed sends glog to
// /tmp/weed.* files which the CI artifact upload step never
// sees. Critical for diagnosing upload/saveToStorage errors
// on Linux runs.
MountGlobalOptions: []string{
"-logtostderr=true",
"-v=2",
},
MountOptions: []string{
// 16 MiB total write buffer ⇒ up to 8 chunks in flight
// across every open file handle on this mount. Large
@@ -88,13 +97,6 @@ func writeBufferCapConfig(debugPort int) *TestConfig {
"-writeBufferSizeMB=16",
"-debug=true",
fmt.Sprintf("-debug.port=%d", debugPort),
// Route glog to stderr so the framework's process log
// capture actually contains something — by default weed
// sends glog to /tmp/weed.* files which the CI artifact
// upload step never sees. Critical for diagnosing
// upload/saveToStorage errors on Linux runs.
"-logtostderr=true",
"-v=2",
},
SkipCleanup: false,
}