MCPcopy
hub / github.com/gofiber/fiber / Test_ShutdownServices

Function Test_ShutdownServices

services_test.go:421–532  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

419}
420
421func Test_ShutdownServices(t *testing.T) {
422 t.Run("no-services", func(t *testing.T) {
423 app := &App{
424 configured: Config{
425 Services: []Service{},
426 },
427 state: newState(),
428 }
429
430 err := app.shutdownServices(context.Background())
431 require.NoError(t, err)
432 require.Zero(t, app.state.ServicesLen())
433 })
434
435 t.Run("successful-shutdown", func(t *testing.T) {
436 srv1 := &mockService{name: "dep1"}
437 srv2 := &mockService{name: "dep2"}
438
439 // Expected state, including the two started services
440 expectedState := newState()
441 expectedState.setService(srv1)
442 expectedState.setService(srv2)
443
444 app := &App{
445 configured: Config{
446 Services: []Service{srv1, srv2},
447 },
448 state: expectedState,
449 }
450
451 err := app.shutdownServices(context.Background())
452 require.NoError(t, err)
453 require.Zero(t, app.state.ServicesLen())
454 })
455
456 t.Run("failed-shutdown", func(t *testing.T) {
457 srv1 := &mockService{name: "dep1", terminateError: errors.New(terminateErrorMessage + " 1")}
458 srv2 := &mockService{name: "dep2", terminateError: errors.New(terminateErrorMessage + " 2")}
459 srv3 := &mockService{name: "dep3"}
460
461 // Expected state, including the two started services
462 expectedState := newState()
463 expectedState.setService(srv1)
464 expectedState.setService(srv2)
465 expectedState.setService(srv3)
466
467 app := &App{
468 configured: Config{
469 Services: []Service{srv1, srv2, srv3},
470 },
471 state: expectedState,
472 }
473
474 err := app.shutdownServices(context.Background())
475 require.Error(t, err)
476 require.Contains(t, err.Error(), terminateErrorMessage+" 1")
477 require.Contains(t, err.Error(), terminateErrorMessage+" 2")
478 require.Equal(t, 2, app.state.ServicesLen()) // 2 services failed to terminate

Callers

nothing calls this directly

Calls 7

shutdownServicesMethod · 0.95
newStateFunction · 0.85
ServicesLenMethod · 0.80
setServiceMethod · 0.80
ContainsMethod · 0.80
NewMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected