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.
73 lines
1.6 KiB
73 lines
1.6 KiB
package main |
|
|
|
import ( |
|
"context" |
|
"flag" |
|
"fmt" |
|
"sync/atomic" |
|
"time" |
|
|
|
"go-common/library/exp/feature" |
|
"go-common/library/log" |
|
"go-common/library/net/rpc/warden" |
|
pb "go-common/library/net/rpc/warden/proto/testproto" |
|
"go-common/library/net/rpc/warden/resolver" |
|
"go-common/library/net/rpc/warden/resolver/direct" |
|
) |
|
|
|
var addrs string |
|
var cli pb.GreeterClient |
|
var concurrency int |
|
var name string |
|
var req int64 |
|
var qps int64 |
|
|
|
func init() { |
|
log.Init(&log.Config{Stdout: false}) |
|
flag.StringVar(&addrs, "addr", "127.0.0.1:8000,127.0.0.1:8001", "-addr 127.0.0.1:8080,127.0.0.1:8081") |
|
flag.IntVar(&concurrency, "c", 3, "-c 5") |
|
flag.StringVar(&name, "name", "test", "-name test") |
|
} |
|
|
|
func main() { |
|
go calcuQPS() |
|
feature.DefaultGate.AddFlag(flag.CommandLine) |
|
flag.Parse() |
|
feature.DefaultGate.SetFromMap(map[string]bool{"dwrr": true}) |
|
resolver.Register(direct.New()) |
|
c := warden.NewClient(nil) |
|
conn, err := c.Dial(context.Background(), fmt.Sprintf("direct://d/%s", addrs)) |
|
if err != nil { |
|
panic(err) |
|
} |
|
cli = pb.NewGreeterClient(conn) |
|
for i := 0; i < concurrency; i++ { |
|
go func() { |
|
for { |
|
say() |
|
time.Sleep(time.Millisecond * 5) |
|
} |
|
}() |
|
} |
|
time.Sleep(time.Hour) |
|
} |
|
|
|
func calcuQPS() { |
|
var creq, breq int64 |
|
for { |
|
time.Sleep(time.Second * 5) |
|
creq = atomic.LoadInt64(&req) |
|
delta := creq - breq |
|
atomic.StoreInt64(&qps, delta/5) |
|
breq = creq |
|
fmt.Println("HTTP QPS: ", atomic.LoadInt64(&qps)) |
|
} |
|
} |
|
func say() { |
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second) |
|
defer cancel() |
|
reply, err := cli.SayHello(ctx, &pb.HelloRequest{Name: name, Age: 10}) |
|
if err == nil && reply.Success { |
|
atomic.AddInt64(&req, 1) |
|
} |
|
}
|
|
|