MCPcopy
hub / github.com/gofiber/fiber / Test_Response_BodyStream

Function Test_Response_BodyStream

client/response_test.go:689–748  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

687}
688
689func Test_Response_BodyStream(t *testing.T) {
690 t.Parallel()
691
692 t.Run("basic streaming", func(t *testing.T) {
693 t.Parallel()
694
695 server := startTestServer(t, func(app *fiber.App) {
696 app.Get("/stream", func(c fiber.Ctx) error {
697 return c.SendStream(bytes.NewReader([]byte("streaming data")))
698 })
699 })
700 defer server.stop()
701
702 client := New().SetDial(server.dial()).SetStreamResponseBody(true)
703
704 resp, err := client.Get("http://example.com/stream")
705 require.NoError(t, err)
706 defer resp.Close()
707 bodyStream := resp.BodyStream()
708 require.NotNil(t, bodyStream)
709 data, err := io.ReadAll(bodyStream)
710 require.NoError(t, err)
711 require.Equal(t, "streaming data", string(data))
712 })
713
714 t.Run("large response streaming", func(t *testing.T) {
715 t.Parallel()
716
717 server := startTestServer(t, func(app *fiber.App) {
718 app.Get("/large", func(c fiber.Ctx) error {
719 data := make([]byte, 1024)
720 for i := range data {
721 data[i] = byte('A' + i%26)
722 }
723 return c.SendStream(bytes.NewReader(data))
724 })
725 })
726 defer server.stop()
727
728 client := New().SetDial(server.dial()).SetStreamResponseBody(true)
729 resp, err := client.Get("http://example.com/large")
730 require.NoError(t, err)
731 defer resp.Close()
732 bodyStream := resp.BodyStream()
733 require.NotNil(t, bodyStream)
734 buffer := make([]byte, 256)
735 var totalRead []byte
736 for {
737 n, err := bodyStream.Read(buffer)
738 if n > 0 {
739 totalRead = append(totalRead, buffer[:n]...)
740 }
741 if err == io.EOF {
742 break
743 }
744 require.NoError(t, err)
745 }
746 require.Len(t, totalRead, 1024)

Callers

nothing calls this directly

Calls 12

startTestServerFunction · 0.85
stopMethod · 0.80
dialMethod · 0.80
BodyStreamMethod · 0.80
NewFunction · 0.70
GetMethod · 0.65
SendStreamMethod · 0.65
SetStreamResponseBodyMethod · 0.65
SetDialMethod · 0.65
CloseMethod · 0.65
LenMethod · 0.65
ReadMethod · 0.45

Tested by

no test coverage detected