MCPcopy
hub / github.com/IBM/sarama / TestClusterAdminListTopicsRetriesOnTransientConnectionError

Function TestClusterAdminListTopicsRetriesOnTransientConnectionError

admin_test.go:209–276  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

207}
208
209func TestClusterAdminListTopicsRetriesOnTransientConnectionError(t *testing.T) {
210 seedBroker := NewMockBroker(t, 1)
211 defer seedBroker.Close()
212
213 metadataResponse := NewMockMetadataResponse(t).
214 SetController(seedBroker.BrokerID()).
215 SetBroker(seedBroker.Addr(), seedBroker.BrokerID()).
216 SetLeader("my_topic", 0, seedBroker.BrokerID())
217
218 var stateMu sync.Mutex
219 var injectTimeout, injected bool
220 var metadataAttempts int
221
222 seedBroker.SetHandlerFuncByMap(map[string]requestHandlerFunc{
223 "MetadataRequest": func(req *request) encoderWithHeader {
224 stateMu.Lock()
225 metadataAttempts++
226 shouldInject := injectTimeout && !injected
227 if shouldInject {
228 injected = true
229 }
230 stateMu.Unlock()
231 if shouldInject {
232 return nil
233 }
234 return metadataResponse.For(req.body)
235 },
236 "DescribeConfigsRequest": func(req *request) encoderWithHeader {
237 return NewMockDescribeConfigsResponse(t).For(req.body)
238 },
239 })
240
241 config := NewTestConfig()
242 config.Version = V1_1_0_0
243 config.Net.ReadTimeout = 100 * time.Millisecond
244 config.Admin.Retry.Max = 3
245 config.Admin.Retry.Backoff = 10 * time.Millisecond
246
247 admin, err := NewClusterAdmin([]string{seedBroker.Addr()}, config)
248 if err != nil {
249 t.Fatal(err)
250 }
251 defer safeClose(t, admin)
252
253 stateMu.Lock()
254 injectTimeout = true
255 metadataAttemptsBeforeList := metadataAttempts
256 stateMu.Unlock()
257
258 entries, err := admin.ListTopics()
259 if err != nil {
260 t.Fatal(err)
261 }
262
263 stateMu.Lock()
264 gotInjected := injected
265 gotMetadataAttempts := metadataAttempts
266 stateMu.Unlock()

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
BrokerIDMethod · 0.95
AddrMethod · 0.95
SetHandlerFuncByMapMethod · 0.95
ListTopicsMethod · 0.95
NewMockBrokerFunction · 0.85
NewMockMetadataResponseFunction · 0.85
NewClusterAdminFunction · 0.85
SetLeaderMethod · 0.80
SetBrokerMethod · 0.80
SetControllerMethod · 0.80

Tested by

no test coverage detected