Preface
看到有人在用locust,所以了解了一下,想起自己最近在做的一些东西,可以用来玩玩
Content
locust
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| from locust import HttpLocust, TaskSet, between
def index(l): l.client.get("/")
def login(l): l.client.get("/login")
def register(l): l.client.get("/register")
class UserBehavior(TaskSet): tasks = {index:2,login:1,register:1}
class WebsiteUser(HttpLocust): task_set = UserBehavior wait_time = between(5.0,9.0)
|
httpserver
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import ( "net/http" _ "net/http/pprof" )
func TestNewHttpServer(t *testing.T) { server := NewHttpServer(":8888") server.AddHandler("/register",GET, handlers.Register) server.AddHandler("/login", GET,handlers.Login) server.AddHandler("/", GET,handlers.Index) go server.Start() log.Println(http.ListenAndServe(":6060",nil)) sigs := make(chan os.Signal, 1) done := make(chan bool, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) go func() { sig := <-sigs log.Println() log.Println("Recieve Signal :", sig) done <- true }() <-done log.Println("Application terminated") }
|
这个是golang写的测试代码,特别要注意的是
导入 pprof 包的时候会默认给httphandler注册pprof相关的函数,所以如果自己的业务http server先启动的话,会导致端口冲突,pprof相关接口用不了,所以要先启动pprof的http服务,再启动自己的业务http服务
Result
最终效果图如下:
Reference