(t *testing.T)
| 1621 | } |
| 1622 | |
| 1623 | func TestUnixSocketAdaptor(t *testing.T) { |
| 1624 | dir := t.TempDir() |
| 1625 | socketPath := filepath.Join(dir, "test.sock") |
| 1626 | defer func() { |
| 1627 | if err := os.Remove(socketPath); err != nil { |
| 1628 | t.Logf("cleanup failed: %v", err) |
| 1629 | } |
| 1630 | }() |
| 1631 | |
| 1632 | app := fiber.New() |
| 1633 | app.Get("/hello", func(c fiber.Ctx) error { |
| 1634 | return c.SendString("ok") |
| 1635 | }) |
| 1636 | handler := FiberApp(app) |
| 1637 | |
| 1638 | listener, err := net.Listen("unix", socketPath) |
| 1639 | if err != nil { |
| 1640 | // Skip on platforms where the "unix" network is unsupported |
| 1641 | if strings.Contains(err.Error(), "unknown network") || |
| 1642 | strings.Contains(err.Error(), "address family not supported") { |
| 1643 | t.Skipf("Unix domain sockets not supported on this platform: %v", err) |
| 1644 | } |
| 1645 | t.Fatal(err) |
| 1646 | } |
| 1647 | defer func() { |
| 1648 | if closeErr := listener.Close(); closeErr != nil { |
| 1649 | t.Logf("listener close failed: %v", closeErr) |
| 1650 | } |
| 1651 | }() |
| 1652 | |
| 1653 | // start server with timeouts |
| 1654 | srv := &http.Server{ |
| 1655 | Handler: handler, |
| 1656 | ReadTimeout: 5 * time.Second, |
| 1657 | WriteTimeout: 10 * time.Second, |
| 1658 | } |
| 1659 | done := make(chan struct{}) |
| 1660 | go func() { |
| 1661 | if serveErr := srv.Serve(listener); serveErr != nil && serveErr != http.ErrServerClosed { |
| 1662 | t.Errorf("http server failed: %v", serveErr) |
| 1663 | } |
| 1664 | close(done) |
| 1665 | }() |
| 1666 | |
| 1667 | conn, err := net.Dial("unix", socketPath) |
| 1668 | require.NoError(t, err) |
| 1669 | defer func() { |
| 1670 | if closeErr := conn.Close(); closeErr != nil { |
| 1671 | t.Logf("conn close failed: %v", closeErr) |
| 1672 | } |
| 1673 | }() |
| 1674 | |
| 1675 | // set deadline for both write + read (2s) |
| 1676 | require.NoError(t, conn.SetDeadline(time.Now().Add(2*time.Second))) |
| 1677 | |
| 1678 | // write request |
| 1679 | _, err = conn.Write([]byte("GET /hello HTTP/1.1\r\nHost: localhost\r\n\r\n")) |
| 1680 | require.NoError(t, err) |
nothing calls this directly
no test coverage detected