private void createTransportSet(SocketAddress... addrs) {
   addressGroup = new EquivalentAddressGroup(Arrays.asList(addrs));
   transportSet =
       new TransportSet(
           addressGroup,
           AUTHORITY,
           USER_AGENT,
           mockLoadBalancer,
           mockBackoffPolicyProvider,
           mockTransportFactory,
           fakeClock.getScheduledExecutorService(),
           fakeClock.getStopwatchSupplier(),
           fakeExecutor.getScheduledExecutorService(),
           mockTransportSetCallback);
 }
  @Test
  public void scheduleBackoff_DoNotScheduleEndOfBackoffIfAlreadyShutdown() {
    // Setup
    final boolean[] startBackoffAndShutdownAreCalled = {false};
    Executor executor =
        new Executor() {
          @Override
          public void execute(Runnable command) {
            if (command.getClass().getName().contains("FailTheFailFastPendingStreams")) {
              // shutdown during startBackoff
              transportSet.shutdown();
              startBackoffAndShutdownAreCalled[0] = true;
            }
            fakeExecutor.getScheduledExecutorService().execute(command);
          }
        };
    SocketAddress addr = mock(SocketAddress.class);
    addressGroup = new EquivalentAddressGroup(Arrays.asList(addr));
    transportSet =
        new TransportSet(
            addressGroup,
            AUTHORITY,
            USER_AGENT,
            mockLoadBalancer,
            mockBackoffPolicyProvider,
            mockTransportFactory,
            fakeClock.getScheduledExecutorService(),
            fakeClock.getStopwatchSupplier(),
            executor,
            mockTransportSetCallback);

    // Attempt and fail, scheduleBackoff should be triggered,
    // and transportSet.shutdown should be triggered by setup
    transportSet
        .obtainActiveTransport()
        .newStream(method, new Metadata(), waitForReadyCallOptions, statsTraceCtx);
    transports.poll().listener.transportShutdown(Status.UNAVAILABLE);
    verify(mockTransportSetCallback, times(1)).onAllAddressesFailed();
    assertTrue(startBackoffAndShutdownAreCalled[0]);

    fakeExecutor.runDueTasks();
    // verify endOfBackoff not scheduled
    verify(mockBackoffPolicy1, never()).nextBackoffMillis();
  }