Home / Function/ Test_ShutdownServices() — fiber Function Reference

Test_ShutdownServices() — fiber Function Reference

Architecture documentation for the Test_ShutdownServices() function in services_test.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  31b09217_6aa0_ab40_0c4f_f09bac8fcacd["Test_ShutdownServices()"]
  a3b050d2_f10a_df85_e082_e3ac664a6a6c["services_test.go"]
  31b09217_6aa0_ab40_0c4f_f09bac8fcacd -->|defined in| a3b050d2_f10a_df85_e082_e3ac664a6a6c
  style 31b09217_6aa0_ab40_0c4f_f09bac8fcacd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

services_test.go lines 310–421

func Test_ShutdownServices(t *testing.T) {
	t.Run("no-services", func(t *testing.T) {
		app := &App{
			configured: Config{
				Services: []Service{},
			},
			state: newState(),
		}

		err := app.shutdownServices(context.Background())
		require.NoError(t, err)
		require.Zero(t, app.state.ServicesLen())
	})

	t.Run("successful-shutdown", func(t *testing.T) {
		srv1 := &mockService{name: "dep1"}
		srv2 := &mockService{name: "dep2"}

		// Expected state, including the two started services
		expectedState := newState()
		expectedState.setService(srv1)
		expectedState.setService(srv2)

		app := &App{
			configured: Config{
				Services: []Service{srv1, srv2},
			},
			state: expectedState,
		}

		err := app.shutdownServices(context.Background())
		require.NoError(t, err)
		require.Zero(t, app.state.ServicesLen())
	})

	t.Run("failed-shutdown", func(t *testing.T) {
		srv1 := &mockService{name: "dep1", terminateError: errors.New(terminateErrorMessage + " 1")}
		srv2 := &mockService{name: "dep2", terminateError: errors.New(terminateErrorMessage + " 2")}
		srv3 := &mockService{name: "dep3"}

		// Expected state, including the two started services
		expectedState := newState()
		expectedState.setService(srv1)
		expectedState.setService(srv2)
		expectedState.setService(srv3)

		app := &App{
			configured: Config{
				Services: []Service{srv1, srv2, srv3},
			},
			state: expectedState,
		}

		err := app.shutdownServices(context.Background())
		require.Error(t, err)
		require.Contains(t, err.Error(), terminateErrorMessage+" 1")
		require.Contains(t, err.Error(), terminateErrorMessage+" 2")
		require.Equal(t, 2, app.state.ServicesLen()) // 2 services failed to terminate
	})

	t.Run("context", func(t *testing.T) {
		t.Run("already-canceled", func(t *testing.T) {
			srv1 := &mockService{name: "dep1"}

			// Expected state, including the two started services
			expectedState := newState()
			expectedState.setService(srv1)

			app := &App{
				configured: Config{
					Services: []Service{srv1},
				},
				state: expectedState,
			}

			// Create a context that is already canceled
			ctx, cancel := context.WithCancel(context.Background())
			cancel()

			err := app.shutdownServices(ctx)
			require.Error(t, err)

Domain

Subdomains

Defined In

Frequently Asked Questions

What does Test_ShutdownServices() do?
Test_ShutdownServices() is a function in the fiber codebase, defined in services_test.go.
Where is Test_ShutdownServices() defined?
Test_ShutdownServices() is defined in services_test.go at line 310.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free