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

Function waitForFallbackAndDoRPCs

interop/grpclb_fallback/client_linux.go:129–154  ·  view source on GitHub ↗
(client testgrpc.TestServiceClient, fallbackDeadline time.Time)

Source from the content-addressed store, hash-verified

127}
128
129func waitForFallbackAndDoRPCs(client testgrpc.TestServiceClient, fallbackDeadline time.Time) {
130 fallbackRetryCount := 0
131 fellBack := false
132 for time.Now().Before(fallbackDeadline) {
133 g := doRPCAndGetPath(client, 20*time.Second)
134 if g == testpb.GrpclbRouteType_GRPCLB_ROUTE_TYPE_FALLBACK {
135 infoLog.Println("Made one successful RPC to a fallback. Now expect the same for the rest.")
136 fellBack = true
137 break
138 } else if g == testpb.GrpclbRouteType_GRPCLB_ROUTE_TYPE_BACKEND {
139 errorLog.Fatalf("Got RPC type backend. This suggests an error in test implementation")
140 } else {
141 infoLog.Println("Retryable RPC failure on iteration:", fallbackRetryCount)
142 }
143 fallbackRetryCount++
144 }
145 if !fellBack {
146 infoLog.Fatalf("Didn't fall back before deadline: %v\n", fallbackDeadline)
147 }
148 for i := 0; i < 30; i++ {
149 if g := doRPCAndGetPath(client, 20*time.Second); g != testpb.GrpclbRouteType_GRPCLB_ROUTE_TYPE_FALLBACK {
150 errorLog.Fatalf("Expected RPC to take grpclb route type FALLBACK. Got: %v", g)
151 }
152 time.Sleep(time.Second)
153 }
154}
155
156func doFallbackBeforeStartup() {
157 runCmd(*induceFallbackCmd)

Callers 2

doFallbackBeforeStartupFunction · 0.85
doFallbackAfterStartupFunction · 0.85

Calls 4

doRPCAndGetPathFunction · 0.85
NowMethod · 0.80
PrintlnMethod · 0.80
FatalfMethod · 0.65

Tested by

no test coverage detected