印度包网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
1.8 KiB

1 year ago
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()
})
}