+
+func asyncTest2(conn api.Connection, cnt int) {
+ fmt.Printf("Running asynchronous perf test with %d requests...\n", cnt)
+
+ ctxChan := make(chan api.Stream, cnt)
+
+ go func() {
+ for i := 0; i < cnt; i++ {
+ stream, err := conn.NewStream(context.Background())
+ if err != nil {
+ log.Fatalln("Error NewStream:", err)
+ }
+ if err := stream.SendMsg(&vpe.ControlPing{}); err != nil {
+ log.Fatalln("Error SendMsg:", err)
+ }
+ ctxChan <- stream
+ }
+ close(ctxChan)
+ fmt.Printf("Sending asynchronous requests finished\n")
+ }()
+
+ for ctx := range ctxChan {
+ if msg, err := ctx.RecvMsg(); err != nil {
+ log.Fatalln("Error RecvMsg:", err)
+ } else if _, ok := msg.(*vpe.ControlPingReply); ok {
+ // ok
+ } else {
+ log.Fatalf("unexpected reply: %v", msg.GetMessageName())
+ }
+ ctx.Close()
+ }
+}