Compare commits

...

14 Commits

Author SHA1 Message Date
spiritysdx
ac1da2af0a update 2024-07-26 10:25:15 +08:00
spiritysdx
6ff440a9e9 update 2024-07-21 20:55:07 +08:00
spiritysdx
1a3049e49d update 2024-07-21 20:50:11 +08:00
spiritysdx
b463cd3085 update 2024-07-21 20:47:05 +08:00
spiritysdx
bf16dfa387 update 2024-07-21 20:35:03 +08:00
spiritysdx
e00415960f update 2024-07-21 20:33:03 +08:00
spiritysdx
f0ed7c5b1c update 2024-07-21 20:32:06 +08:00
spiritysdx
e6500a23ee update 2024-07-21 20:31:54 +08:00
spiritysdx
b1d0611f6b update 2024-07-21 19:44:35 +08:00
spiritysdx
b78cf8a1ac update 2024-07-21 19:40:39 +08:00
spiritysdx
34065b0161 update 2024-07-20 18:48:31 +08:00
spiritysdx
f2e4ca6a0b update 2024-07-16 11:19:50 +08:00
spiritysdx
a8c76a2ee2 Remove vendor directory from version control 2024-07-16 11:18:54 +08:00
spiritysdx
d6319e5a02 Add vendor to .gitignore 2024-07-16 11:18:39 +08:00
8 changed files with 134 additions and 70 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
vendor/

View File

@@ -18,7 +18,7 @@ Shell版本 https://github.com/spiritLHLS/ecs
更多架构请自行测试
编译支持的系统: Linux、Windows、FreeBSD、OpenBSD
编译支持的系统: Linux、Windows、MacOS、FreeBSD、OpenBSD
测试支持的系统: Linux、Windows
@@ -91,29 +91,29 @@ curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt
卸载goecs
```
./goecs.sh delete
./goecs.sh uninstall
```
shell脚本的说明
```
Available commands:
可用命令:
./goecs.sh env Check and Install package:
sudo (Almost all unix-like systems have it.)
tar (Almost all unix-like systems have it.)
unzip (Almost all unix-like systems have it.)
dd (Almost all unix-like systems have it.)
fio (Almost all unix-like systems can be installed through the system's package manager.)
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
speedtest (Use the officially provided binaries for more accurate test results.)
ping (Use the officially provided binaries for more accurate test results.)
In fact, sysbench/geekbench is the only one of the above dependencies that must be installed, without which the CPU score cannot be tested.
./goecs.sh install Install goecs command
./goecs.sh upgrade Upgrade goecs command
./goecs.sh delete Uninstall goecs command
./goecs.sh help Show this message
./goecs.sh env 检查并安装的包:
sudo (几乎所有类 Unix 系统都有。)
tar (几乎所有类 Unix 系统都有。)
unzip (几乎所有类 Unix 系统都有。)
dd (几乎所有类 Unix 系统都有。)
fio (几乎所有类 Unix 系统可以通过系统的包管理器安装。)
sysbench (几乎所有类 Unix 系统可以通过系统的包管理器安装。)
geekbench (geekbench5) (仅支持 IPV4 环境,且内存大于 1GB 并需要持续联网,仅支持 amd64 arm64 架构。)
speedtest (使用官方提供的二进制文件以获得更准确的测试结果。)
ping (使用官方提供的二进制文件以获得更准确的测试结果。)
事实上,sysbench/geekbench 是上述依赖项中唯一必须安装的,没有它们无法测试 CPU 分数。
./goecs.sh install 安装 goecs 命令
./goecs.sh upgrade 升级 goecs 命令
./goecs.sh uninstall 卸载 goecs 命令
./goecs.sh help 显示此消息
```
goecs唤起菜单
@@ -194,4 +194,35 @@ https://github.com/oneclickvirt/ecs/releases
选择该exe文件右键点击选择管理员模式运行(非管理员模式运行无法进行硬件测试),唤起菜单自选
windows测试无需进行环境安装
windows测试无需进行环境安装
## QA
#### Q: 为什么默认使用sysbench而不是geekbench
#### A: 比较二者特点
```
sysbench geekbench
轻量几乎所有服务器都能跑 重型小机器跑不动
测试无联网需求,无硬件需求 测试必须联网且必须IPV4环境且有内存大小1G的最低需求
LUA编写且开源各架构系统可自行编译 仅官方二进制文件且不开源,无对应架构时无法自行编译
核心测试组件十多年不变 每次大版本更新对标的CPU不同版本间得分互相之间难转化你只能以对标的CPU为准
测试仅测试计算性能 测试涵盖多种性能测试,得分以权重计算,但实际很多测试项目实际是用不到的
适合快速测试 适合全面测试
```
且```goecs```测试使用何种CPU测试方式可使用参数指定默认只是为了更多用户快速测试的需求
#### Q: 为什么使用Golang而不是Rust重构
#### A: 因为网络相关的项目目前以Golang语言为趋势大多组件有开源生态维护Rust很多得自己手搓~~我懒得搞~~我没那个技术力
#### Q: 为什么不继续开发Shell版本而是选择重构
#### A: 因为太多千奇百怪的环境问题了,还是提前编译好测试的二进制文件比较容易解决环境问题(泛化性更好)
#### Q: 每个测试项目的说明有吗?
#### A: 每个测试项目有对应的维护仓库,自行点击查看仓库说明

View File

@@ -18,7 +18,7 @@ Tested architectures: amd64, arm64
More architectures please test by yourself
Compilation support: Linux, Windows、FreeBSD、OpenBSD
Compilation support: Linux, Windows、MacOS、FreeBSD、OpenBSD
Tested on: Linux, Windows
@@ -79,7 +79,7 @@ Upgrade goecs
Uninstall goecs
```
./goecs.sh delete
./goecs.sh uninstall
```
Explanation of the shell script
@@ -88,19 +88,19 @@ Explanation of the shell script
Available commands:
./goecs.sh env Check and Install package:
sudo (Almost all unix-like systems have it.)
tar (Almost all unix-like systems have it.)
unzip (Almost all unix-like systems have it.)
dd (Almost all unix-like systems have it.)
fio (Almost all unix-like systems can be installed through the system's package manager.)
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
speedtest (Use the officially provided binaries for more accurate test results.)
ping (Use the officially provided binaries for more accurate test results.)
sudo (Almost all unix-like systems have it.)
tar (Almost all unix-like systems have it.)
unzip (Almost all unix-like systems have it.)
dd (Almost all unix-like systems have it.)
fio (Almost all unix-like systems can be installed through the system's package manager.)
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
speedtest (Use the officially provided binaries for more accurate test results.)
ping (Use the officially provided binaries for more accurate test results.)
In fact, sysbench/geekbench is the only one of the above dependencies that must be installed, without which the CPU score cannot be tested.
./goecs.sh install Install goecs command
./goecs.sh upgrade Upgrade goecs command
./goecs.sh delete Uninstall goecs command
./goecs.sh uninstall Uninstall goecs command
./goecs.sh help Show this message
```

2
go.mod
View File

@@ -5,7 +5,7 @@ go 1.22.4
require (
github.com/imroc/req/v3 v3.43.7
github.com/oneclickvirt/CommonMediaTests v0.0.4-20240704024502
github.com/oneclickvirt/UnlockTests v0.0.12-20240716020706
github.com/oneclickvirt/UnlockTests v0.0.13-20240726021207
github.com/oneclickvirt/backtrace v0.0.4-20240702140722
github.com/oneclickvirt/basics v0.0.6-20240706025619
github.com/oneclickvirt/cputest v0.0.8-20240702070215

4
go.sum
View File

@@ -80,8 +80,8 @@ github.com/nxtrace/NTrace-core v1.3.1 h1:f4z5UaZEuhUP/g6xElpZ2bo+guWITJVrMKrJTqd
github.com/nxtrace/NTrace-core v1.3.1/go.mod h1:0Px/Zc60qk6cssmP+yv4kstFxvX9sXqDduoVqBO+qf8=
github.com/oneclickvirt/CommonMediaTests v0.0.4-20240704024502 h1:hRIYJ2uEp2N3AH5bP5X6bwfdwWfZQO/2WoqpUJ8+WsY=
github.com/oneclickvirt/CommonMediaTests v0.0.4-20240704024502/go.mod h1:DAmFPRjFV5p9fEzUUSml5jJGn2f1NZJQCzTxITHDjc4=
github.com/oneclickvirt/UnlockTests v0.0.12-20240716020706 h1:vq4XidWGEdPb79aON3KAuCXaEsGhTEaJnedhxGHztAE=
github.com/oneclickvirt/UnlockTests v0.0.12-20240716020706/go.mod h1:HP3CvAS+AJWxxY+BVbxIOlvaQ87YOSge89vAMG52b5o=
github.com/oneclickvirt/UnlockTests v0.0.13-20240726021207 h1:pe9RKF/8QxNaxwyzLH+6HC+lkJdBUjQd1HV9FVULoEA=
github.com/oneclickvirt/UnlockTests v0.0.13-20240726021207/go.mod h1:HP3CvAS+AJWxxY+BVbxIOlvaQ87YOSge89vAMG52b5o=
github.com/oneclickvirt/backtrace v0.0.4-20240702140722 h1:UJ/VWf+ZbhGarc9HcHMIyenpmX+b2LxkXu0hlLk3Gxs=
github.com/oneclickvirt/backtrace v0.0.4-20240702140722/go.mod h1:zvsC7xY/WZqs5KL2JB967OVnuqjNbxu9bW6wXRLo5h8=
github.com/oneclickvirt/basics v0.0.6-20240706025619 h1:IVuyJY41eNAjH9rFf5FPzjegRbkDiS4os9+1YaUov4M=

View File

@@ -38,7 +38,7 @@ import (
)
var (
ecsVersion = "v0.0.52"
ecsVersion = "v0.0.54"
menuMode bool
onlyChinaTest bool
input, choice string

View File

@@ -1,6 +1,6 @@
#!/bin/bash
#From https://github.com/oneclickvirt/ecs
#2024.07.04
#2024.07.21
# curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh
@@ -10,7 +10,7 @@ cat <<"EOF"
GG OO OO EE CC SS
GG OO OO EE CC SS
GG OO OO EEEEEEEE CC SSSSSSSSSS
GG GGGGGG OO OO EE CC SS
GG GGGGGG OO OO EE CC SS
GG GG OO OO EE CC SS
GG GG OO OO EE CC SS
GGGGGGGG OOOOOOO EEEEEEEE CCCCCCCCC SSSSSSSSSS
@@ -375,33 +375,49 @@ env_check() {
_green "The next command is: ./goecs.sh install"
}
delete_goecs() {
uninstall_goecs() {
rm -rf /root/goecs
rm -rf /usr/bin/goecs
_green "The command (goecs) has been deleted."
_green "The command (goecs) has been uninstalled."
}
show_help() {
cat <<"EOF"
可用命令:
./goecs.sh env 检查并安装的包:
sudo (几乎所有类 Unix 系统都有。)
tar (几乎所有类 Unix 系统都有。)
unzip (几乎所有类 Unix 系统都有。)
dd (几乎所有类 Unix 系统都有。)
fio (几乎所有类 Unix 系统可以通过系统的包管理器安装。)
sysbench (几乎所有类 Unix 系统可以通过系统的包管理器安装。)
geekbench (geekbench5) (仅支持 IPV4 环境,且内存大于 1GB 并需要持续联网,仅支持 amd64 和 arm64 架构。)
speedtest (使用官方提供的二进制文件以获得更准确的测试结果。)
ping (使用官方提供的二进制文件以获得更准确的测试结果。)
事实上sysbench/geekbench 是上述依赖项中唯一必须安装的,没有它们无法测试 CPU 分数。
./goecs.sh install 安装 goecs 命令
./goecs.sh upgrade 升级 goecs 命令
./goecs.sh uninstall 卸载 goecs 命令
./goecs.sh help 显示此消息
Available commands:
./goecs.sh env Check and Install package:
sudo (Almost all unix-like systems have it.)
wget (Almost all unix-like systems have it.)
tar (Almost all unix-like systems have it.)
unzip (Almost all unix-like systems have it.)
dd (Almost all unix-like systems have it.)
fio (Almost all unix-like systems can be installed through the system's package manager.)
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
speedtest (Use the officially provided binaries for more accurate test results.)
ping (Use the officially provided binaries for more accurate test results.)
sudo (Almost all unix-like systems have it.)
tar (Almost all unix-like systems have it.)
unzip (Almost all unix-like systems have it.)
dd (Almost all unix-like systems have it.)
fio (Almost all unix-like systems can be installed through the system's package manager.)
sysbench (Almost all unix-like systems can be installed through the system's package manager.)
geekbench (geekbench5)(Only support IPV4 environment, and memory greater than 1GB network detection, only support amd64 and arm64 architecture.)
speedtest (Use the officially provided binaries for more accurate test results.)
ping (Use the officially provided binaries for more accurate test results.)
In fact, sysbench/geekbench is the only one of the above dependencies that must be installed, without which the CPU score cannot be tested.
./goecs.sh install Install goecs command
./goecs.sh upgrade Upgrade goecs command
./goecs.sh delete Uninstall goecs command
./goecs.sh uninstall Uninstall goecs command
./goecs.sh help Show this message
EOF
}
@@ -415,8 +431,8 @@ case "$1" in
"install" | "upgrade")
goecs_check
;;
"delete")
delete_goecs
"uninstall")
uninstall_goecs
;;
*)
echo "No command found."

View File

@@ -40,8 +40,8 @@ func PrintHead(language string, width int, ecsVersion string) {
PrintCenteredTitle("VPS Fusion Monster Test", width)
fmt.Printf("Version: %s\n", ecsVersion)
fmt.Println("Review Channel: https://t.me/vps_reviews\n" +
"Go Project URL: https://github.com/oneclickvirt/ecs\n" +
"Shell Project URL: https://github.com/spiritLHLS/ecs")
"Go Project: https://github.com/oneclickvirt/ecs\n" +
"Shell Project: https://github.com/spiritLHLS/ecs")
}
}
@@ -239,7 +239,8 @@ func PrintAndCapture(f func(), tempOutput, output string) string {
// UploadText 上传文本内容到指定URL
func UploadText(absPath string) (string, error) {
url := "https://paste.spiritlhl.net/api/upload"
primaryURL := "http://hpaste.spiritlhl.net/api/upload"
backupURL := "https://paste.spiritlhl.net/api/upload"
token := network.SecurityUploadToken
client := req.DefaultClient()
client.SetTimeout(6 * time.Second)
@@ -247,24 +248,39 @@ func UploadText(absPath string) (string, error) {
SetRetryCount(2).
SetRetryBackoffInterval(1*time.Second, 5*time.Second).
SetRetryFixedInterval(2 * time.Second)
file, _ := os.Open(absPath)
resp, err := client.R().
SetHeader("Authorization", token).
SetHeader("Format", "RANDOM").
SetHeader("Max-Views", "0").
SetHeader("UploadText", "true").
SetHeader("Content-Type", "multipart/form-data").
SetHeader("No-JSON", "true").
SetFileReader("file", "goecs.txt", file).
Post(url)
file, err := os.Open(absPath)
if err != nil {
return "", err
}
if resp.StatusCode >= 200 && resp.StatusCode <= 299 {
return resp.String(), nil
} else {
return "", fmt.Errorf("upload failed with status code: %d", resp.StatusCode)
defer file.Close()
upload := func(url string) (string, error) {
resp, err := client.R().
SetHeader("Authorization", token).
SetHeader("Format", "RANDOM").
SetHeader("Max-Views", "0").
SetHeader("UploadText", "true").
SetHeader("Content-Type", "multipart/form-data").
SetHeader("No-JSON", "true").
SetFileReader("file", "goecs.txt", file).
Post(url)
if err != nil {
return "", err
}
if resp.StatusCode >= 200 && resp.StatusCode <= 299 {
return resp.String(), nil
} else {
return "", fmt.Errorf("upload failed with status code: %d", resp.StatusCode)
}
}
result, err := upload(primaryURL)
if err == nil {
return result, nil
}
result, err = upload(backupURL)
if err != nil {
return "", err
}
return result, nil
}
// ProcessAndUpload 创建结果文件并上传文件