feat: 测试交付 Q1 混沌压测骨架与 Q4 镜像骨架
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"git.asio.asia/nixevol/NixMsg/test/load"
|
||||
)
|
||||
|
||||
// 压测客户端骨架:连上 N 个 MQTT 连接并打印连接数。完整 1000 连接 / 10 分钟压测留给 Q3。
|
||||
func main() {
|
||||
addr := flag.String("addr", "", "MQTT broker host:port(必填,不要写死业务端口)")
|
||||
n := flag.Int("n", 10, "连接数")
|
||||
prefix := flag.String("prefix", "q-bench-", "client id 前缀")
|
||||
hold := flag.Duration("hold", 3*time.Second, "保持连接时长")
|
||||
flag.Parse()
|
||||
if *addr == "" {
|
||||
fmt.Fprintln(os.Stderr, "usage: mqttbench -addr host:port [-n 10]")
|
||||
os.Exit(2)
|
||||
}
|
||||
|
||||
b := &load.MQTTBench{Addr: *addr, ClientIDPrefix: *prefix, Timeout: 5 * time.Second}
|
||||
defer b.Close()
|
||||
if err := b.ConnectN(*n, os.Stdout); err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Printf("held %d connections for %s\n", b.Alive(), hold.String())
|
||||
|
||||
ch := make(chan os.Signal, 1)
|
||||
signal.Notify(ch, os.Interrupt, syscall.SIGTERM)
|
||||
select {
|
||||
case <-time.After(*hold):
|
||||
case <-ch:
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user