diff --git a/backtrace/ecs.log b/backtrace/ecs.log new file mode 100644 index 0000000..e69de29 diff --git a/basic/basic_test.go b/basic/basic_test.go index 378c21b..c9e90c8 100644 --- a/basic/basic_test.go +++ b/basic/basic_test.go @@ -3,5 +3,5 @@ package basic import "testing" func Test_basic(t *testing.T) { - basic() + Basic("zh") } diff --git a/basic/basiccheck.go b/basic/basiccheck.go index 240f480..f8486ae 100644 --- a/basic/basiccheck.go +++ b/basic/basiccheck.go @@ -11,11 +11,10 @@ import ( // TODO // 迁移Shell的完整检测逻辑使用执行命令的方式查询,最后都失败才使用gopsutil查询 -func basic() { - language := "zh" +func Basic(language string) { ipInfo, _, _ := network.NetworkCheck("both", false, language) res := system.CheckSystemInfo(language) - fmt.Println("--------------------------------------------------") + //fmt.Println("--------------------------------------------------") fmt.Printf(strings.ReplaceAll(res+ipInfo, "\n\n", "\n")) - fmt.Println("--------------------------------------------------") + //fmt.Println("--------------------------------------------------") } diff --git a/cputest/cputest.go b/cputest/cputest.go index eb3ab26..37050ef 100644 --- a/cputest/cputest.go +++ b/cputest/cputest.go @@ -3,10 +3,33 @@ package cputest import ( "fmt" "github.com/oneclickvirt/cputest/cpu" + "runtime" ) -func cputest() { - //res := cpu.SysBenchTest("zh", "1") - res := cpu.WinsatTest("zh", "1") - fmt.Println(res) +func CpuTest(language, testMethod, testThread string) { + var res string + if runtime.GOOS == "windows" { + if testMethod != "winsat" && testMethod != "" { + res = "Detected host is Windows, using Winsat for testing.\n" + } + res += cpu.WinsatTest(language, testThread) + } else { + switch testMethod { + case "sysbench": + res = cpu.SysBenchTest(language, testThread) + if res == "" { + res = "Sysbench test failed, switching to Geekbench for testing.\n" + res += cpu.GeekBenchTest(language, testThread) + } + case "geekbench": + res = cpu.GeekBenchTest(language, testThread) + if res == "" { + res = "Geekbench test failed, switching to Sysbench for testing.\n" + res += cpu.SysBenchTest(language, testThread) + } + default: + res = "Invalid test method specified.\n" + } + } + fmt.Print(res) } diff --git a/cputest/cputest_test.go b/cputest/cputest_test.go index ae8ec46..128ad4d 100644 --- a/cputest/cputest_test.go +++ b/cputest/cputest_test.go @@ -5,5 +5,5 @@ import ( ) func Test(t *testing.T) { - cputest() + CpuTest("zh", "sysbench", "1") } diff --git a/disktest/disktest.go b/disktest/disktest.go index 984a226..98a74c3 100644 --- a/disktest/disktest.go +++ b/disktest/disktest.go @@ -6,19 +6,32 @@ import ( "runtime" ) -func diskIoTest() { - var language, res string - language = "zh" - isMultiCheck := false +func DiskTest(language, testMethod, testPath string, isMultiCheck bool) { + var res string if runtime.GOOS == "windows" { - res = disk.WinsatTest(language, isMultiCheck, "") + if testMethod != "winsat" && testMethod != "" { + res = "Detected host is Windows, using Winsat for testing.\n" + } + res = disk.WinsatTest(language, isMultiCheck, testPath) } else { - res = disk.FioTest(language, isMultiCheck, "") - if res == "" { - res = disk.DDTest(language, isMultiCheck, "") + switch testMethod { + case "fio": + res = disk.FioTest(language, isMultiCheck, testPath) + if res == "" { + res = "Fio test failed, switching to DD for testing.\n" + res += disk.DDTest(language, isMultiCheck, testPath) + } + case "dd": + res = disk.DDTest(language, isMultiCheck, testPath) + if res == "" { + res = "DD test failed, switching to Fio for testing.\n" + res += disk.FioTest(language, isMultiCheck, testPath) + } + default: + res = "Unsupported test method specified.\n" } } - fmt.Println("--------------------------------------------------") + //fmt.Println("--------------------------------------------------") fmt.Printf(res) - fmt.Println("--------------------------------------------------") + //fmt.Println("--------------------------------------------------") } diff --git a/disktest/disktest_test.go b/disktest/disktest_test.go index 78f5900..eb09906 100644 --- a/disktest/disktest_test.go +++ b/disktest/disktest_test.go @@ -3,5 +3,5 @@ package disktest import "testing" func TestDiskIoTest(t *testing.T) { - diskIoTest() + DiskTest("zh", "", false) } diff --git a/main.go b/main.go index 11be38a..1c99836 100644 --- a/main.go +++ b/main.go @@ -1,12 +1,60 @@ package main import ( - . "github.com/oneclickvirt/ecs/defaultset" + "flag" + "fmt" + "github.com/oneclickvirt/ecs/basic" + "github.com/oneclickvirt/ecs/cputest" + "github.com/oneclickvirt/ecs/disktest" + "github.com/oneclickvirt/ecs/memorytest" + "strings" + "unicode/utf8" ) -func main() { - InitLogger() - defer Logger.Sync() - Logger.Info("Start logging") - // Logger.Info("Your log message", zap.Any("key", value)) +func printCenteredTitle(title string, width int) { + titleLength := utf8.RuneCountInString(title) // 计算字符串的字符数 + totalPadding := width - titleLength + padding := totalPadding / 2 + paddingStr := strings.Repeat("-", padding) + fmt.Println(paddingStr + title + paddingStr + strings.Repeat("-", totalPadding%2)) +} + +func main() { + var ( + ecsVersion = "2024.06.25" + showVersion bool + language string + cpuTestMethod, cpuTestThread string + memoryTestMethod string + diskTestMethod, diskTestPath string + diskMultiCheck bool + width = 80 + ) + flag.BoolVar(&showVersion, "v", false, "Show version information") + flag.StringVar(&language, "l", "zh", "Specify language (supported: en, zh)") + flag.StringVar(&cpuTestMethod, "cpum", "sysbench", "Specify CPU test method (supported: sysbench, geekbench, winsat)") + flag.StringVar(&cpuTestThread, "cput", "", "Specify CPU test thread count (supported: 1, 2, ...)") + flag.StringVar(&memoryTestMethod, "memorym", "", "Specify Memory test method (supported: sysbench, dd, winsat)") + flag.StringVar(&diskTestMethod, "diskm", "", "Specify Disk test method (supported: sysbench, dd, winsat)") + flag.StringVar(&diskTestPath, "diskp", "", "Specify Disk test path, example: -diskp /root") + flag.BoolVar(&diskMultiCheck, "diskmc", false, "Enable multiple disk checks, example: -diskmc=false") + flag.Parse() + if showVersion { + fmt.Println(ecsVersion) + return + } + if language == "zh" { + printCenteredTitle("融合怪测试", width) + fmt.Printf("版本:%s\n", ecsVersion) + fmt.Println("测评频道: https://t.me/vps_reviews\nGo项目地址:https://github.com/oneclickvirt/ecs\nShell项目地址:https://github.com/spiritLHLS/ecs") + printCenteredTitle("基础信息", width) + basic.Basic(language) + printCenteredTitle(fmt.Sprintf("CPU测试-通过%s测试", cpuTestMethod), width) + cputest.CpuTest(language, cpuTestMethod, cpuTestThread) + printCenteredTitle(fmt.Sprintf("内存测试-通过%s测试", cpuTestMethod), width) + memorytest.MemoryTest(language, memoryTestMethod) + printCenteredTitle(fmt.Sprintf("硬盘测试-通过%s测试", diskTestMethod), width) + disktest.DiskTest(language, diskTestMethod, diskTestPath, diskMultiCheck) + printCenteredTitle("", width) + } } diff --git a/main_test.go b/main_test.go new file mode 100644 index 0000000..45fcc77 --- /dev/null +++ b/main_test.go @@ -0,0 +1,7 @@ +package main + +import "testing" + +func Test(t *testing.T) { + main() +} diff --git a/memorytest/memorytest.go b/memorytest/memorytest.go index 70af666..17103a0 100644 --- a/memorytest/memorytest.go +++ b/memorytest/memorytest.go @@ -6,24 +6,26 @@ import ( "runtime" ) -func memorytest() { +func MemoryTest(language, testMethod string) { var res string - language := "zh" - testMethod := "" if runtime.GOOS == "windows" { - res = memory.WinsatTest(language) + if testMethod != "winsat" && testMethod != "" { + res = "Detected host is Windows, using Winsat for testing.\n" + } + res += memory.WinsatTest(language) } else { - if testMethod == "sysbench" { + switch testMethod { + case "sysbench": res = memory.SysBenchTest(language) if res == "" { res = "sysbench test failed, switch to use dd test.\n" res += memory.DDTest(language) } - } else if testMethod == "dd" { + case "dd": res = memory.DDTest(language) + default: + res = "Unsupported test method" } } - fmt.Println("--------------------------------------------------") fmt.Printf(res) - fmt.Println("--------------------------------------------------") } diff --git a/memorytest/memorytest_test.go b/memorytest/memorytest_test.go index 46ac975..2f1d9ae 100644 --- a/memorytest/memorytest_test.go +++ b/memorytest/memorytest_test.go @@ -5,5 +5,5 @@ import ( ) func Test(t *testing.T) { - memorytest() + MemoryTest("zh", "sysbench") }