Test_Client_LBClient_Behavior() — fiber Function Reference
Architecture documentation for the Test_Client_LBClient_Behavior() function in client_test.go from the fiber codebase.
Entity Profile
Dependency Diagram
graph TD 2f1d41f6_a266_2665_cd73_74d0c530956c["Test_Client_LBClient_Behavior()"] 5d11d0f7_2b3b_7bf3_3b1d_76d79d6872a2["client_test.go"] 2f1d41f6_a266_2665_cd73_74d0c530956c -->|defined in| 5d11d0f7_2b3b_7bf3_3b1d_76d79d6872a2 d60625b6_c243_6c2d_ba86_cf99b49fb107["startTestServerWithPort()"] 2f1d41f6_a266_2665_cd73_74d0c530956c -->|calls| d60625b6_c243_6c2d_ba86_cf99b49fb107 style 2f1d41f6_a266_2665_cd73_74d0c530956c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
client/client_test.go lines 464–651
func Test_Client_LBClient_Behavior(t *testing.T) {
t.Parallel()
newLBClient := func(addr string) *fasthttp.LBClient {
return &fasthttp.LBClient{
Clients: []fasthttp.BalancingClient{
&fasthttp.HostClient{Addr: addr},
},
}
}
t.Run("do and redirects", func(t *testing.T) {
t.Parallel()
app, addr := startTestServerWithPort(t, func(app *fiber.App) {
app.Get("/ok", func(c fiber.Ctx) error {
return c.SendString("ok")
})
app.Get("/redirect", func(c fiber.Ctx) error {
return c.Redirect().Status(fiber.StatusFound).To("/ok")
})
})
t.Cleanup(func() {
require.NoError(t, app.Shutdown())
})
client := NewWithLBClient(newLBClient(addr))
resp, err := client.Get("http://" + addr + "/ok")
require.NoError(t, err)
require.Equal(t, fiber.StatusOK, resp.StatusCode())
require.Equal(t, "ok", resp.String())
resp, err = client.Get("http://"+addr+"/redirect", Config{MaxRedirects: 1})
require.NoError(t, err)
require.Equal(t, fiber.StatusOK, resp.StatusCode())
require.Equal(t, "ok", resp.String())
})
t.Run("retries respect dial overrides", func(t *testing.T) {
t.Parallel()
app, addr := startTestServerWithPort(t, func(app *fiber.App) {
app.Get("/", func(c fiber.Ctx) error {
return c.SendString("retry")
})
})
t.Cleanup(func() {
require.NoError(t, app.Shutdown())
})
client := NewWithLBClient(newLBClient(addr))
client.SetRetryConfig(&RetryConfig{
InitialInterval: time.Millisecond,
MaxRetryCount: 2,
})
var attempts int32
client.SetDial(func(address string) (net.Conn, error) {
if atomic.AddInt32(&attempts, 1) == 1 {
return nil, errors.New("dial failure")
}
return fasthttp.Dial(address)
})
resp, err := client.Get("http://" + addr)
require.NoError(t, err)
require.Equal(t, fiber.StatusOK, resp.StatusCode())
require.Equal(t, "retry", resp.String())
require.EqualValues(t, 2, atomic.LoadInt32(&attempts))
})
t.Run("tls configuration propagates", func(t *testing.T) {
t.Parallel()
serverTLSConf, clientTLSConf, err := tlstest.GetTLSConfigs()
require.NoError(t, err)
ln, err := net.Listen(fiber.NetworkTCP4, "127.0.0.1:0")
require.NoError(t, err)
ln = tls.NewListener(ln, serverTLSConf)
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does Test_Client_LBClient_Behavior() do?
Test_Client_LBClient_Behavior() is a function in the fiber codebase, defined in client/client_test.go.
Where is Test_Client_LBClient_Behavior() defined?
Test_Client_LBClient_Behavior() is defined in client/client_test.go at line 464.
What does Test_Client_LBClient_Behavior() call?
Test_Client_LBClient_Behavior() calls 1 function(s): startTestServerWithPort.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free