From 9c67a8d446bf708075a98b4305df149aa6b9eadb Mon Sep 17 00:00:00 2001 From: spiritlhl <103393591+spiritLHLS@users.noreply.github.com> Date: Thu, 18 Dec 2025 03:35:45 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9B=B4=E6=96=B0=E5=86=85=E5=AD=98?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=96=B9=E6=B3=95=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E5=AF=B9=E4=B8=8D=E5=90=8C=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 2 +- go.sum | 4 +- internal/tests/memory.go | 190 +++++++++++++++++++++++++++++++++------ 3 files changed, 165 insertions(+), 31 deletions(-) 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 = ""