MCPcopy
hub / github.com/grpc/grpc-go / runAndCheckStats

Function runAndCheckStats

balancer/grpclb/grpclb_test.go:1396–1444  ·  view source on GitHub ↗
(t *testing.T, drop bool, statsChan chan *lbpb.ClientStats, runRPCs func(*grpc.ClientConn), statsWant *rpcStats)

Source from the content-addressed store, hash-verified

1394}
1395
1396func runAndCheckStats(t *testing.T, drop bool, statsChan chan *lbpb.ClientStats, runRPCs func(*grpc.ClientConn), statsWant *rpcStats) error {
1397 r := manual.NewBuilderWithScheme("whatever")
1398
1399 tss, cleanup, err := startBackendsAndRemoteLoadBalancer(t, 1, "", statsChan)
1400 if err != nil {
1401 t.Fatalf("failed to create new load balancer: %v", err)
1402 }
1403 defer cleanup()
1404 servers := []*lbpb.Server{{
1405 IpAddress: tss.beIPs[0].AsSlice(),
1406 Port: int32(tss.bePorts[0]),
1407 LoadBalanceToken: lbToken,
1408 }}
1409 if drop {
1410 servers = append(servers, &lbpb.Server{
1411 LoadBalanceToken: lbToken,
1412 Drop: drop,
1413 })
1414 }
1415 tss.ls.sls <- &lbpb.ServerList{Servers: servers}
1416 tss.ls.statsDura = 100 * time.Millisecond
1417 creds := serverNameCheckCreds{}
1418
1419 cc, err := grpc.NewClient(r.Scheme()+":///"+beServerName, grpc.WithResolvers(r),
1420 grpc.WithTransportCredentials(&creds),
1421 grpc.WithPerRPCCredentials(failPreRPCCred{}),
1422 grpc.WithContextDialer(fakeNameDialer))
1423 if err != nil {
1424 t.Fatalf("Failed to create a client for the backend %v", err)
1425 }
1426 cc.Connect()
1427 defer cc.Close()
1428
1429 rstate := resolver.State{ServiceConfig: r.CC().ParseServiceConfig(grpclbConfig)}
1430 r.UpdateState(grpclbstate.Set(rstate, &grpclbstate.State{BalancerAddresses: []resolver.Address{{
1431 Addr: tss.lbAddr,
1432 ServerName: lbServerName,
1433 }}}))
1434
1435 runRPCs(cc)
1436 end := time.Now().Add(time.Second)
1437 for time.Now().Before(end) {
1438 if err := checkStats(tss.ls.stats, statsWant); err == nil {
1439 time.Sleep(200 * time.Millisecond) // sleep for two intervals to make sure no new stats are reported.
1440 break
1441 }
1442 }
1443 return checkStats(tss.ls.stats, statsWant)
1444}
1445
1446const (
1447 countRPC = 40

Calls 15

NewBuilderWithSchemeFunction · 0.92
NewClientFunction · 0.92
WithResolversFunction · 0.92
WithTransportCredentialsFunction · 0.92
WithPerRPCCredentialsFunction · 0.92
WithContextDialerFunction · 0.92
runRPCsFunction · 0.85
checkStatsFunction · 0.85
CCMethod · 0.80
NowMethod · 0.80
FatalfMethod · 0.65

Tested by

no test coverage detected