go_dreamfactory/stress/server/golink/grpc_link.go
2022-12-08 17:03:32 +08:00

74 lines
1.5 KiB
Go

// Package golink 连接
package golink
import (
"context"
"sync"
"time"
"go_dreamfactory/stress/helper"
pb "go_dreamfactory/stress/proto"
"go_dreamfactory/stress/model"
"go_dreamfactory/stress/server/client"
)
// Grpc grpc 接口请求
func Grpc(ctx context.Context, chanID uint64, ch chan<- *model.RequestResults, totalNumber uint64, wg *sync.WaitGroup,
request *model.Request, ws *client.GrpcSocket) {
defer func() {
wg.Done()
}()
defer func() {
_ = ws.Close()
}()
for i := uint64(0); i < totalNumber; i++ {
grpcRequest(chanID, ch, i, request, ws)
}
return
}
// grpcRequest 请求
func grpcRequest(chanID uint64, ch chan<- *model.RequestResults, i uint64, request *model.Request,
ws *client.GrpcSocket) {
var (
startTime = time.Now()
isSucceed = false
errCode = model.HTTPOk
)
// 需要发送的数据
conn := ws.GetConn()
if conn == nil {
errCode = model.RequestErr
} else {
// TODO::请求接口示例
c := pb.NewApiServerClient(conn)
var (
ctx = context.Background()
req = &pb.Request{
//UserName: request.Body,
}
)
rsp, err := c.HelloWorld(ctx, req)
// fmt.Printf("rsp:%+v", rsp)
if err != nil {
errCode = model.RequestErr
} else {
// 200 为成功
if rsp.Code != 200 {
errCode = model.RequestErr
} else {
isSucceed = true
}
}
}
requestTime := uint64(helper.DiffNano(startTime))
requestResults := &model.RequestResults{
Time: requestTime,
IsSucceed: isSucceed,
ErrCode: errCode,
}
requestResults.SetID(chanID, i)
ch <- requestResults
}