Home / Function/ TestSetParserDecoderConcurrentAccess() — fiber Function Reference

TestSetParserDecoderConcurrentAccess() — fiber Function Reference

Architecture documentation for the TestSetParserDecoderConcurrentAccess() function in mapping_test.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  5d3cd757_941e_1c0b_9bc6_f1154e513e06["TestSetParserDecoderConcurrentAccess()"]
  ecb7a598_be7d_ed73_d2c3_8ca5f67838de["mapping_test.go"]
  5d3cd757_941e_1c0b_9bc6_f1154e513e06 -->|defined in| ecb7a598_be7d_ed73_d2c3_8ca5f67838de
  style 5d3cd757_941e_1c0b_9bc6_f1154e513e06 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

binder/mapping_test.go lines 462–532

func TestSetParserDecoderConcurrentAccess(t *testing.T) {
	t.Parallel()

	t.Cleanup(func() {
		SetParserDecoder(ParserConfig{
			IgnoreUnknownKeys: true,
			ZeroEmpty:         true,
		})
	})

	type queryUser struct {
		Name string `query:"name"`
	}

	data := map[string][]string{
		"name": {"fiber"},
	}
	parserConfig := ParserConfig{
		IgnoreUnknownKeys: true,
		ZeroEmpty:         true,
	}

	start := make(chan struct{})
	const workers = 25
	errCh := make(chan error, workers*2)
	var wg sync.WaitGroup

	runWorker := func(fn func() error) {
		wg.Go(func() {
			<-start

			defer func() {
				if r := recover(); r != nil {
					errCh <- fmt.Errorf("panic: %v", r)
				}
			}()

			if err := fn(); err != nil {
				errCh <- err
			}
		})
	}

	for i := 0; i < workers; i++ {
		runWorker(func() error {
			SetParserDecoder(parserConfig)
			return nil
		})

		runWorker(func() error {
			var out queryUser
			if err := parseToStruct("query", &out, data); err != nil {
				return err
			}

			if out.Name != "fiber" {
				return fmt.Errorf("unexpected name %q", out.Name)
			}

			return nil
		})
	}

	close(start)
	wg.Wait()
	close(errCh)

	for err := range errCh {
		require.NoError(t, err)
	}
}

Domain

Subdomains

Frequently Asked Questions

What does TestSetParserDecoderConcurrentAccess() do?
TestSetParserDecoderConcurrentAccess() is a function in the fiber codebase, defined in binder/mapping_test.go.
Where is TestSetParserDecoderConcurrentAccess() defined?
TestSetParserDecoderConcurrentAccess() is defined in binder/mapping_test.go at line 462.

Analyze Your Own Codebase

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

Try Supermodel Free