func TestReconnect(t *testing.T) { ac, mockChannel, finish := setup(t) defer finish() // Override the clock so the sleep calls are instantaneous, regardless of what // the retry calls say. ac.clk = clock.NewFake() ac.retryTimeoutBase = time.Second ac.retryTimeoutMax = time.Second mockChannel.EXPECT().QueueDeclare( "fooqueue", AmqpDurable, AmqpDeleteUnused, AmqpExclusive, AmqpNoWait, nil).AnyTimes() mockChannel.EXPECT().QueueBind("fooqueue", "fooqueue", AmqpExchange, false, nil).Times(3).Return(errors.New("fail")) mockChannel.EXPECT().QueueBind("fooqueue", "fooqueue", AmqpExchange, false, nil).Return(nil) mockChannel.EXPECT().Consume("fooqueue", consumerName, AmqpAutoAck, AmqpExclusive, AmqpNoLocal, AmqpNoWait, nil).Return(make(<-chan amqp.Delivery), nil) mockChannel.EXPECT().NotifyClose(gomock.Any()).Return(make(chan *amqp.Error)) log = mocks.UseMockLog() ac.reconnect(&cmd.AMQPConfig{}, log) if ac.channel != mockChannel { t.Errorf("ac.channel was not equal to mockChannel") } if ac.msgs == nil { t.Errorf("ac.msgs was not initialized") } if ac.closeChan == nil { t.Errorf("ac.closeChan was not initialized") } }
func TestConnect(t *testing.T) { ac, mockChannel, finish := setup(t) defer finish() mockChannel.EXPECT().QueueDeclare( "fooqueue", AmqpDurable, AmqpDeleteUnused, AmqpExclusive, AmqpNoWait, nil) mockChannel.EXPECT().QueueBind("fooqueue", "fooqueue", AmqpExchange, false, nil) mockChannel.EXPECT().Consume("fooqueue", consumerName, AmqpAutoAck, AmqpExclusive, AmqpNoLocal, AmqpNoWait, nil).Return(make(<-chan amqp.Delivery), nil) mockChannel.EXPECT().NotifyClose(gomock.Any()).Return(make(chan *amqp.Error)) err := ac.connect(&cmd.AMQPConfig{}) if err != nil { t.Fatalf("failed to connect: %s", err) } if ac.channel != mockChannel { t.Errorf("ac.channel was not equal to mockChannel") } if ac.messages() == nil { t.Errorf("ac.msgs was not initialized") } if ac.closeChannel() == nil { t.Errorf("ac.closeChan was not initialized") } }