func main()

in e2e-examples/echo/echo-client/main.go [47:99]


func main() {
	flag.Parse()
	conn, err := grpc.Dial(
		*addr,
		grpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, "")),
		grpc.WithBlock())
	if err != nil {
		log.Fatalf("did not connect: %v", err)
	}
	defer conn.Close()

	client := pb.NewGrpcCloudapiClient(conn)
	msg := strings.Repeat("x", *reqSize*1024)
	req := &pb.EchoWithResponseSizeRequest{EchoMsg: msg, ResponseSize: int32(*rspSize * 1024)}

	// begin warmup calls
	for i := 0; i < *warmup; i++ {
		_, err := client.EchoWithResponseSize(context.Background(), req)
		if err != nil {
			log.Fatalf("EchoWithResponseSize failed with error during warmup: %v", err)
		}
	}

	rsts := []int{}

	if !*async {
		// begin tests
		for i := 0; i < *numRpcs; i++ {
			start := time.Now()
			_, err := client.EchoWithResponseSize(context.Background(), req)
			if err != nil {
				log.Fatalf("EchoWithResponseSize failed with error: %v", err)
			}
			rsts = append(rsts, int(time.Since(start).Milliseconds()))
		}
		printRsts(*numRpcs, *rspSize, *reqSize, rsts)
	} else {
		var wg sync.WaitGroup
		wg.Add(*numRpcs)

		for i := 0; i < *numRpcs; i++ {
			go func(r *pb.EchoWithResponseSizeRequest, n int) {
				defer wg.Done()
				_, err := client.EchoWithResponseSize(context.Background(), r)
				if err != nil {
					log.Fatalf("EchoWithResponseSize failed with error: %v", err)
				}
				log.Printf("Done %vth request", n)
			}(req, i)
		}
		wg.Wait()
	}
}