I don't think this is currently tested, and I'm not clear whether we have a bug. We should have a test that does the following:
- Create a channel with a manual name resolver set to not produce any updates when constructed.
- Confirm the channel's
State() == Idle.
- Two forks for this test:
- Call
ClientConn.Connect() and confirm the channel's State() == Connecting immediately upon returning. (It's possible this is racy but it should not be.)
- Perform an RPC, which will block since the name resolver never produced anything. In a separate goroutine, confirm the state eventually changes to
Connecting using testutils.AwaitState.
- Call
internal.EnterIdleModeForTesting and then perform (2) and (3) above.