Home / Function/ TestFileDescriptor() — gin Function Reference

TestFileDescriptor() — gin Function Reference

Architecture documentation for the TestFileDescriptor() function in gin_integration_test.go from the gin codebase.

Entity Profile

Dependency Diagram

graph TD
  f6dc6e98_fd48_2b1a_3695_806da658dfaf["TestFileDescriptor()"]
  487220f8_37c1_07f4_cdd9_390faec27ae3["isWindows()"]
  f6dc6e98_fd48_2b1a_3695_806da658dfaf -->|calls| 487220f8_37c1_07f4_cdd9_390faec27ae3
  style f6dc6e98_fd48_2b1a_3695_806da658dfaf fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

gin_integration_test.go lines 298–337

func TestFileDescriptor(t *testing.T) {
	router := New()

	addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
	require.NoError(t, err)
	listener, err := net.ListenTCP("tcp", addr)
	require.NoError(t, err)
	socketFile, err := listener.File()
	if isWindows() {
		// not supported by windows, it is unimplemented now
		require.Error(t, err)
	} else {
		require.NoError(t, err)
	}

	if socketFile == nil {
		return
	}

	go func() {
		router.GET("/example", func(c *Context) { c.String(http.StatusOK, "it worked") })
		assert.NoError(t, router.RunFd(int(socketFile.Fd())))
	}()
	// have to wait for the goroutine to start and run the server
	// otherwise the main thread will complete
	time.Sleep(5 * time.Millisecond)

	c, err := net.Dial("tcp", listener.Addr().String())
	require.NoError(t, err)

	fmt.Fprintf(c, "GET /example HTTP/1.0\r\n\r\n")
	scanner := bufio.NewScanner(c)
	var responseBuilder strings.Builder
	for scanner.Scan() {
		responseBuilder.WriteString(scanner.Text())
	}
	response := responseBuilder.String()
	assert.Contains(t, response, "HTTP/1.0 200", "should get a 200")
	assert.Contains(t, response, "it worked", "resp body should match")
}

Domain

Subdomains

Calls

Frequently Asked Questions

What does TestFileDescriptor() do?
TestFileDescriptor() is a function in the gin codebase.
What does TestFileDescriptor() call?
TestFileDescriptor() calls 1 function(s): isWindows.

Analyze Your Own Codebase

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

Try Supermodel Free