Last active
August 1, 2019 01:34
-
-
Save manhdaovan/f9a177e4caa477a29e129e2df246fd1a to your computer and use it in GitHub Desktop.
Simple test grpc.ClientConn
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// asynchronous requesting with same client | |
func main() { | |
err := logger.RegisterLoggerFactory(func() (logger.Logger, error) { | |
return onelog.NewOneLogger(os.Stdout), nil | |
}) | |
if err != nil { | |
fmt.Printf("error on register logger factory: %v", err) | |
return | |
} | |
lgr, _ := logger.NewLogger() | |
target := "localhost:51111" | |
conn, err := grpc.Dial(target, grpc.WithInsecure()) | |
if err != nil { | |
lgr.Errorf(context.Background(), "cannot dial %s, err: %v", target, err) | |
} | |
client := service.NewGenerateIDClient(conn) | |
var wg sync.WaitGroup | |
wg.Add(2) | |
go func() { | |
defer wg.Done() | |
ctx := context.Background() | |
in := &service.GenerateRequest{ | |
Prefix: "serviceA-ServiceB", | |
} | |
out, err := client.Generate(ctx, in) | |
lgr.Infof(ctx, "out: %+v, err: %v", out, err) | |
}() | |
go func() { | |
defer wg.Done() | |
ctx2 := context.Background() | |
in := &service.GenerateRequest{ | |
Prefix: "serviceA-ServiceB2222", | |
} | |
out2, err2 := client.Generate(ctx2, in) | |
lgr.Infof(ctx2, "out: %+v, err: %v", out2, err2) | |
}() | |
wg.Wait() | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Generate generate a unique id per request, then save it to db | |
func (s *GenerateIDService) Generate(ctx context.Context, in *GenerateRequest) (*GenerateResponse, error) { | |
s.ac.GetLogger().Infof(ctx, "request: %+v", in) | |
time.Sleep(30 * time.Second) | |
id, err := s.idDAO.NextID(ctx, in.Prefix) | |
if err != nil { | |
return nil, status.Errorf(codes.Internal, "cannot generate next id for %s, error: %v", in.Prefix, err) | |
} | |
res := &GenerateResponse{Id: id.UniqueString()} | |
s.ac.GetLogger().Infof(ctx, "response: %+v", res) | |
return res, nil | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// synchronous requesting with same client | |
func main() { | |
err := logger.RegisterLoggerFactory(func() (logger.Logger, error) { | |
return onelog.NewOneLogger(os.Stdout), nil | |
}) | |
if err != nil { | |
fmt.Printf("error on register logger factory: %v", err) | |
return | |
} | |
lgr, _ := logger.NewLogger() | |
target := "localhost:51111" | |
conn, err := grpc.Dial(target, grpc.WithInsecure()) | |
if err != nil { | |
lgr.Errorf(context.Background(), "cannot dial %s, err: %v", target, err) | |
} | |
client := service.NewGenerateIDClient(conn) | |
for { | |
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) | |
defer cancel() | |
//ctx := context.Background() | |
in := &service.GenerateRequest{ | |
Prefix: "serviceA-ServiceB", | |
} | |
out, err := client.Generate(ctx, in) | |
lgr.Infof(ctx, "out: %+v, err: %v", out, err) | |
ctx2, cancel2 := context.WithTimeout(context.Background(), 5*time.Second) | |
defer cancel2() | |
out2, err2 := client.Generate(ctx2, in) | |
lgr.Infof(ctx, "out: %+v, err: %v", out2, err2) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Testing cases
context.Background()
instead ofcontext. WithTimeout()
)client.go
code with diffirent context.ctx1
in aboveclient.go
)Testing scenario
Testing result
rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = \"transport: Error while dialing dial tcp 127.0.0.1:51111: connect: connection refused\""
was raised in client-side.rpc error: code = DeadlineExceeded desc = context deadline exceeded"
when the server is running.Conclusion
async_client.go
file)