diff --git a/go.mod b/go.mod index 07c666d..d138632 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/oneclickvirt/defaultset v0.0.2-20240624082446 github.com/oneclickvirt/disktest v0.0.10-20250924030424 github.com/oneclickvirt/gostun v0.0.5-20250727155022 - github.com/oneclickvirt/memorytest v0.0.10-20250924154648 + github.com/oneclickvirt/memorytest v0.0.10-20251218032900 github.com/oneclickvirt/nt3 v0.0.10-20251111095706 github.com/oneclickvirt/pingtest v0.0.9-20251104112920 github.com/oneclickvirt/portchecker v0.0.3-20250728015900 diff --git a/go.sum b/go.sum index cb64a48..c7a160d 100644 --- a/go.sum +++ b/go.sum @@ -114,8 +114,8 @@ github.com/oneclickvirt/gostun v0.0.5-20250727155022 h1:/e3gSUrOp1tg/1NTRx+P8B51 github.com/oneclickvirt/gostun v0.0.5-20250727155022/go.mod h1:pfp7MFZJK9n/KTLAVqqFcCAns4xqMykmjI+1UeF/vdE= github.com/oneclickvirt/mbw v0.0.1-20250808061222 h1:WGXOe6QvHiDRhPVMI0VcctjzW08kGvJf50yq5YeZCtw= github.com/oneclickvirt/mbw v0.0.1-20250808061222/go.mod h1:0Vq6NRpyLmGUdfHfL3uDcFsuZhi7KlG+OCs5ky2757Y= -github.com/oneclickvirt/memorytest v0.0.10-20250924154648 h1:trk6oZ7xs1eVtr+6oIv5IX8LDVtEMG+E6GVzQ810BtU= -github.com/oneclickvirt/memorytest v0.0.10-20250924154648/go.mod h1:4kiHsEWkW9r3/1ZcV5xIweU0smiKP0IRfQj74AUIiVI= +github.com/oneclickvirt/memorytest v0.0.10-20251218032900 h1:SmRFfPLyGfTVWIgC50lEGgOpbqahtMHIlyOMSbrhj9Y= +github.com/oneclickvirt/memorytest v0.0.10-20251218032900/go.mod h1:4kiHsEWkW9r3/1ZcV5xIweU0smiKP0IRfQj74AUIiVI= github.com/oneclickvirt/nt3 v0.0.10-20251111095706 h1:GEdgL6oAWXY80NIq23mLjcTR3gvLGh9iusFzJK6SoDo= github.com/oneclickvirt/nt3 v0.0.10-20251111095706/go.mod h1:yo1ufkduFt9QjqG7nqSUf1D3YlQOmFpdlTYniJfclQI= github.com/oneclickvirt/pingtest v0.0.9-20251104112920 h1:j3Fjhy0YHT/VF7iuAVVELaRXkquvRd64tWWfFLJs01o= diff --git a/internal/tests/memory.go b/internal/tests/memory.go index 09048d6..127db98 100644 --- a/internal/tests/memory.go +++ b/internal/tests/memory.go @@ -25,51 +25,132 @@ func MemoryTest(language, testMethod string) (realTestMethod, res string) { if runtime.GOOS == "windows" { switch testMethod { case "stream": - res = memory.WinsatTest(language) - realTestMethod = "winsat" + res = memory.StreamTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.WinsatTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.WindowsDDTest(language) + if res == "" || strings.TrimSpace(res) == "" { + realTestMethod = "" + } else { + realTestMethod = "dd" + } + } else { + realTestMethod = "winsat" + } + } else { + realTestMethod = "stream" + } case "dd": res = memory.WindowsDDTest(language) if res == "" || strings.TrimSpace(res) == "" { - res += memory.WinsatTest(language) - realTestMethod = "winsat" + res = memory.WinsatTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.StreamTest(language) + if res == "" || strings.TrimSpace(res) == "" { + realTestMethod = "" + } else { + realTestMethod = "stream" + } + } else { + realTestMethod = "winsat" + } } else { realTestMethod = "dd" } case "sysbench": + // Windows下不支持sysbench,使用stream → winsat → dd + res = memory.StreamTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.WinsatTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.WindowsDDTest(language) + if res == "" || strings.TrimSpace(res) == "" { + realTestMethod = "" + } else { + realTestMethod = "dd" + } + } else { + realTestMethod = "winsat" + } + } else { + realTestMethod = "stream" + } + case "auto": + res = memory.StreamTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.WinsatTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.WindowsDDTest(language) + if res == "" || strings.TrimSpace(res) == "" { + realTestMethod = "" + } else { + realTestMethod = "dd" + } + } else { + realTestMethod = "winsat" + } + } else { + realTestMethod = "stream" + } + case "winsat": res = memory.WinsatTest(language) - realTestMethod = "winsat" - case "auto", "winsat": - res = memory.WinsatTest(language) - realTestMethod = "winsat" + if res == "" || strings.TrimSpace(res) == "" { + res = memory.StreamTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.WindowsDDTest(language) + if res == "" || strings.TrimSpace(res) == "" { + realTestMethod = "" + } else { + realTestMethod = "dd" + } + } else { + realTestMethod = "stream" + } + } else { + realTestMethod = "winsat" + } default: - res = memory.WinsatTest(language) - realTestMethod = "winsat" + res = memory.StreamTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.WinsatTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.WindowsDDTest(language) + if res == "" || strings.TrimSpace(res) == "" { + realTestMethod = "" + } else { + realTestMethod = "dd" + } + } else { + realTestMethod = "winsat" + } + } else { + realTestMethod = "stream" + } } } else { switch testMethod { case "stream": res = memory.StreamTest(language) if res == "" || strings.TrimSpace(res) == "" { - res += memory.DDTest(language) - realTestMethod = "dd" + res = memory.SysBenchTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.DDTest(language) + if res == "" || strings.TrimSpace(res) == "" { + realTestMethod = "" + } else { + realTestMethod = "dd" + } + } else { + realTestMethod = "sysbench" + } } else { realTestMethod = "stream" } case "dd": res = memory.DDTest(language) - realTestMethod = "dd" - case "sysbench": - res = memory.SysBenchTest(language) if res == "" || strings.TrimSpace(res) == "" { - res += memory.DDTest(language) - realTestMethod = "dd" - } else { - realTestMethod = "sysbench" - } - case "auto": - res = memory.StreamTest(language) - if res == "" || strings.TrimSpace(res) == "" { - res = memory.DDTest(language) + res = memory.StreamTest(language) if res == "" || strings.TrimSpace(res) == "" { res = memory.SysBenchTest(language) if res == "" || strings.TrimSpace(res) == "" { @@ -78,15 +159,68 @@ func MemoryTest(language, testMethod string) (realTestMethod, res string) { realTestMethod = "sysbench" } } else { - realTestMethod = "dd" + realTestMethod = "stream" + } + } else { + realTestMethod = "dd" + } + case "sysbench": + res = memory.SysBenchTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.StreamTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.SysBenchTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.DDTest(language) + if res == "" || strings.TrimSpace(res) == "" { + realTestMethod = "" + } else { + realTestMethod = "dd" + } + } else { + realTestMethod = "sysbench" + } + } else { + realTestMethod = "stream" + } + } else { + realTestMethod = "sysbench" + } + case "auto": + res = memory.StreamTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.SysBenchTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.DDTest(language) + if res == "" || strings.TrimSpace(res) == "" { + realTestMethod = "" + } else { + realTestMethod = "dd" + } + } else { + realTestMethod = "sysbench" } } else { realTestMethod = "stream" } case "winsat": - // winsat 仅 Windows 支持,非 Windows fallback 到 dd - res = memory.DDTest(language) - realTestMethod = "dd" + // winsat 仅 Windows 支持,非 Windows fallback 到 stream → sysbench → dd + res = memory.StreamTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.SysBenchTest(language) + if res == "" || strings.TrimSpace(res) == "" { + res = memory.DDTest(language) + if res == "" || strings.TrimSpace(res) == "" { + realTestMethod = "" + } else { + realTestMethod = "dd" + } + } else { + realTestMethod = "sysbench" + } + } else { + realTestMethod = "stream" + } default: res = "Unsupported test method" realTestMethod = ""