func TestInitialAdvertiseFailedRetryBackoff(t *testing.T) { defer testutils.SetTimeout(t, 2*time.Second)() clientOpts := stubbedSleep() sleepArgs, sleepBlock, sleepClose := testutils.SleepStub(&clientOpts.TimeSleep) // We expect to retry 5 times, go func() { for attempt := uint(0); attempt < 5; attempt++ { maxSleepFor := advertiseRetryInterval * time.Duration(1<<attempt) got := <-sleepArgs assert.True(t, got <= maxSleepFor, "Initial advertise attempt %v expected sleep %v < %v", attempt, got, maxSleepFor) sleepBlock <- struct{}{} } sleepClose() }() withSetup(t, func(hypCh *tchannel.Channel, hostPort string) { serverCh := testutils.NewServer(t, nil) defer serverCh.Close() client, err := NewClient(serverCh, configFor(hostPort), clientOpts) require.NoError(t, err, "NewClient") defer client.Close() assert.Error(t, client.Advertise(), "Advertise without handler should fail") }) }
func (r *retryTest) setup() { r.respCh = make(chan int, 1) r.sleepArgs, r.sleepBlock = testutils.SleepStub(&timeSleep) }
func (r *retryTest) setup() { r.respCh = make(chan int, 1) r.reqCh = make(chan *AdRequest, 1) r.sleepArgs, r.sleepBlock, r.sleepClose = testutils.SleepStub(&timeSleep) }