ecs
Fusion Monster Evaluation Project - GO Refactored Version
Please report any issues via issues.
Go version: https://github.com/oneclickvirt/ecs
Shell version: https://github.com/spiritLHLS/ecs/blob/main/README_EN.md
Language
Supported Systems and Architectures
Architectures supported for compilation
- amd64, arm, arm64, 386, mips, mipsle, s390x, riscv64
Tested architectures
- amd64, arm64
More architectures can be tested by yourself.
Compilation supported systems
- Linux, Windows, MacOS, FreeBSD, OpenBSD
Tested systems
- Linux, Windows
More systems can be tested by yourself.
Systems to be supported
- MacOS, FreeBSD, OpenBSD (hardware testing bugs not yet fixed)
Features
- System basic information query and concurrent IP basic information query:
Self-developed basics, gostun - CPU test:
Self-developed cputest supporting sysbench(lua/golang version), geekbench, winsat - Memory test:
Self-developed memorytest supporting sysbench, dd - Disk test:
Self-developed disktest supporting dd, fio, winsat - Streaming media unlock information concurrent query:
Modified from netflix-verify and more to CommonMediaTests - Common streaming media tests concurrent query:
Self-developed to UnlockTests, logic modified from RegionRestrictionCheck and others - IP quality/security information concurrent query:
Self-developed, binary files compiled in securityCheck - Email port test:
Self-developed portchecker - Three-network return path test:
Modified from zhanghanyun/backtrace to oneclickvirt/backtrace - Three-network route test:
Modified from NTrace-core to nt3 - Speed test:
Based on data from speedtest.net and speedtest.cn, developed to oneclickvirt/speedtest - Three-network Ping test:
Modified from ecsspeed to pingtest
Instructions for Use
Linux/FreeBSD/MacOS
One-click command
Will install dependencies by default, update package manager by default, non-interactive mode by default. The non-one-click version below allows control of dependency installation/package manager updates/interactive mode by default.
-
International users without acceleration:
export noninteractive=true && curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh && bash goecs.sh env && bash goecs.sh install && goecs -l en -
International/domestic users with CDN acceleration:
export noninteractive=true && curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh && bash goecs.sh env && bash goecs.sh install && goecs -l en -
Domestic users with CNB acceleration:
export noninteractive=true && curl -L https://cnb.cool/oneclickvirt/ecs/-/git/raw/main/goecs.sh -o goecs.sh && chmod +x goecs.sh && bash goecs.sh env && bash goecs.sh install && goecs -l en
Detailed instructions
-
Download the script
International users without acceleration:
curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.shInternational/domestic users with CDN acceleration:
curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.shDomestic users with CNB acceleration:
curl -L https://cnb.cool/oneclickvirt/ecs/-/git/raw/main/goecs.sh -o goecs.sh && chmod +x goecs.sh -
Update package manager (optional) and install environment
./goecs.sh envNon-interactive mode:
export noninteractive=true && ./goecs.sh env -
Install
goecs./goecs.sh install -
Upgrade
goecs./goecs.sh upgrade -
Uninstall
goecs./goecs.sh uninstall -
help command
./goecs.sh -h -
Invoke the menu
goecs -l en
Command parameterization
Expand to view parameter descriptions
Usage: goecs [options]
-backtrace
Enable/Disable backtrace test (in 'en' language or on windows it always false) (default true)
-basic
Enable/Disable basic test (default true)
-comm
Enable/Disable common media test (default true)
-cpu
Enable/Disable CPU test (default true)
-cpum string
Set CPU test method (supported: sysbench, geekbench, winsat) (default "sysbench")
-cput string
Set CPU test thread mode (supported: single, multi) (default "multi")
-disk
Enable/Disable disk test (default true)
-diskm string
Set disk test method (supported: fio, dd, winsat) (default "fio")
-diskmc
Enable/Disable multiple disk checks, e.g., -diskmc=false
-diskp string
Set disk test path, e.g., -diskp /root
-email
Enable/Disable email port test (default true)
-h Show help information
-l string
Set language (supported: en, zh) (default "zh")
-log
Enable/Disable logging in the current path
-memory
Enable/Disable memory test (default true)
-memorym string
Set memory test method (supported: sysbench, dd, winsat) (default "sysbench")
-menu
Enable/Disable menu mode, disable example: -menu=false (default true)
-nt3
Enable/Disable NT3 test (in 'en' language or on windows it always false) (default true)
-nt3loc string
Specify NT3 test location (supported: GZ, SH, BJ, CD for Guangzhou, Shanghai, Beijing, Chengdu) (default "GZ")
-nt3t string
Set NT3 test type (supported: both, ipv4, ipv6) (default "ipv4")
-security
Enable/Disable security test (default true)
-speed
Enable/Disable speed test (default true)
-spnum int
Set the number of servers per operator for speed test (default 2)
-upload
Enable/Disable upload the result (default true)
-ut
Enable/Disable unlock media test (default true)
-v Display version information
Windows
- Download the compressed file with the .exe file: Releases
- After unzipping, right-click and run as administrator.
Docker
International image: https://hub.docker.com/r/spiritlhl/goecs
Please ensure Docker is installed on your machine before executing the following commands
Privileged mode + host network
docker run --rm --privileged --network host spiritlhl/goecs:latest -menu=false -l en
Unprivileged mode + non-host network
docker run --rm spiritlhl/goecs:latest -menu=false -l en
Using Docker to execute tests will result in some hardware testing bias and virtualization architecture detection failure. Direct testing is recommended over Docker testing.
Domestic image: https://cnb.cool/oneclickvirt/ecs/-/packages/docker/ecs
Please ensure Docker is installed on your machine before executing the following commands
Privileged mode + host network
docker run --rm --privileged --network host docker.cnb.cool/oneclickvirt/ecs:latest -menu=false -l en
Unprivileged mode + non-host network
docker run --rm docker.cnb.cool/oneclickvirt/ecs:latest -menu=false -l en
Compiling from source code
Expand to view compilation instructions
- Clone the public branch of the repository (without private dependencies)
git clone -b public https://github.com/oneclickvirt/ecs.git
cd ecs
- Install Go environment (skip if already installed)
# Download and install Go
wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
- Compile
go build -o goecs
- Run test
./goecs -menu=false -l en
Supported compilation parameters:
- GOOS: supports linux, windows, darwin, freebsd, openbsd
- GOARCH: supports amd64, arm, arm64, 386, mips, mipsle, s390x, riscv64
Cross-platform compilation examples:
# Compile Windows version
GOOS=windows GOARCH=amd64 go build -o goecs.exe
# Compile MacOS version
GOOS=darwin GOARCH=amd64 go build -o goecs_darwin
QA
Q: Why is sysbench used by default instead of geekbench?
A: Comparing the characteristics of both:
| Comparison | sysbench | geekbench |
|---|---|---|
| Application scope | Lightweight, runs on almost any server | Heavyweight, won't run on small machines |
| Test requirements | No network needed, no special hardware requirements | Requires internet, IPv4 environment, minimum 1GB memory |
| Open source status | Based on LUA, open source, can compile for various architectures | Official binaries are closed source, cannot compile your own version |
| Test stability | Core test components unchanged for 10+ years | Each major version updates test items, making scores hard to compare between versions (each version benchmarks against current best CPUs) |
| Test content | Only tests computing performance | Covers multiple performance aspects with weighted scores, though some tests aren't commonly used |
| Suitable scenarios | Good for quick tests, focuses on computing performance | Good for comprehensive testing |
Note that goecs allows you to specify CPU test method via parameters. The default is chosen for faster testing across more systems.