(t *testing.T, numberOfBackends int, customUserAgent string, statsChan chan *lbpb.ClientStats)
| 352 | } |
| 353 | |
| 354 | func startBackendsAndRemoteLoadBalancer(t *testing.T, numberOfBackends int, customUserAgent string, statsChan chan *lbpb.ClientStats) (tss *testServers, cleanup func(), err error) { |
| 355 | var ( |
| 356 | beListeners []net.Listener |
| 357 | ls *remoteBalancer |
| 358 | lb *grpc.Server |
| 359 | beIPs []netip.Addr |
| 360 | bePorts []int |
| 361 | ) |
| 362 | for i := 0; i < numberOfBackends; i++ { |
| 363 | beLis, e := net.Listen("tcp", "localhost:0") |
| 364 | if e != nil { |
| 365 | err = fmt.Errorf("failed to listen %v", err) |
| 366 | return |
| 367 | } |
| 368 | beIPs = append(beIPs, beLis.Addr().(*net.TCPAddr).AddrPort().Addr().Unmap()) |
| 369 | bePorts = append(bePorts, beLis.Addr().(*net.TCPAddr).Port) |
| 370 | |
| 371 | beListeners = append(beListeners, testutils.NewRestartableListener(beLis)) |
| 372 | } |
| 373 | backends := startBackends(t, beServerName, false, beListeners...) |
| 374 | |
| 375 | lbLis, err := net.Listen("tcp", "localhost:0") |
| 376 | if err != nil { |
| 377 | err = fmt.Errorf("failed to create the listener for the load balancer %v", err) |
| 378 | return |
| 379 | } |
| 380 | lbLis = testutils.NewRestartableListener(lbLis) |
| 381 | lbCreds := &serverNameCheckCreds{ |
| 382 | sn: lbServerName, |
| 383 | } |
| 384 | lb = grpc.NewServer(grpc.Creds(lbCreds)) |
| 385 | ls = newRemoteBalancer(customUserAgent, beServerName, statsChan) |
| 386 | lbgrpc.RegisterLoadBalancerServer(lb, ls) |
| 387 | go func() { |
| 388 | lb.Serve(lbLis) |
| 389 | }() |
| 390 | t.Logf("Started remote load balancer server listening on %s", lbLis.Addr().String()) |
| 391 | |
| 392 | tss = &testServers{ |
| 393 | lbAddr: net.JoinHostPort(fakeName, strconv.Itoa(lbLis.Addr().(*net.TCPAddr).Port)), |
| 394 | ls: ls, |
| 395 | lb: lb, |
| 396 | backends: backends, |
| 397 | beIPs: beIPs, |
| 398 | bePorts: bePorts, |
| 399 | |
| 400 | lbListener: lbLis, |
| 401 | beListeners: beListeners, |
| 402 | } |
| 403 | cleanup = func() { |
| 404 | defer stopBackends(backends) |
| 405 | defer func() { |
| 406 | ls.stop() |
| 407 | lb.Stop() |
| 408 | }() |
| 409 | } |
| 410 | return |
| 411 | } |
no test coverage detected