package main import ( "flag" "fmt" "math/rand" "os" "os/signal" task2 "server/tools/robot/task" "server/util" "sync/atomic" "time" "github.com/liangdas/armyant/task" timewheel "github.com/liangdas/mqant/module/modules/timer" ) func main() { // addr := flag.String("addr", "http://149.129.136.204:7615", "addr") addr := flag.String("addr", "http://149.129.136.204:7615", "addr") C := flag.Int("C", 1, "task count") game := 0 start := flag.Int("start", 0, "start number") flag.Parse() if *start < 0 { *start = 0 } fmt.Println("addr: ", *addr) fmt.Println("task count = ", *C) rand.Seed(time.Now().UnixNano()) timewheel.SetTimeWheel(timewheel.New(100*time.Millisecond, 36)) closeSig := make(chan bool) util.Go(func() { timewheel.GetTimeWheel().Start(closeSig) }) /** 每一次请求都会调用该函数,在该函数内实现具体请求操作 task:=task.Task{ N:1000, //一共请求次数,会被平均分配给每一个并发协程 C:100, //并发数 //QPS:10, //每一个并发平均每秒请求次数(限流) 不填代表不限流 } N/C 可计算出每一个Work(协程) RunWorker将要调用的次数 */ _task := task.LoopTask{ C: *C, } manager := task2.NewManager(&_task, *addr, *start, game) task2.CurrentConnect = new(int32) task2.StopConnect = new(int32) // PrintConns() fmt.Println("开始测试") _task.Run(manager) c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) <-c _task.Stop() fmt.Println("exit...") os.Exit(1) } func PrintConns() { c := atomic.LoadInt32(task2.CurrentConnect) s := atomic.LoadInt32(task2.StopConnect) fmt.Println("**********************connecting:", c, "**********************stop:", s) timewheel.GetTimeWheel().AddTimer(5*time.Second, nil, func(arge interface{}) { PrintConns() }) }