goapiperf/httpReuse/httpReuse_test.go

47 lines
1.0 KiB
Go
Raw Permalink Normal View History

2024-09-19 20:54:54 +03:00
package main
import (
"net/http"
"net/http/httptest"
"testing"
)
func makeRequest(client *http.Client, url string) error {
resp, err := client.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
return nil
}
func BenchmarkNewHttpClientEachRequest(b *testing.B) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("OK"))
}))
defer server.Close()
for i := 0; i < b.N; i++ {
client := &http.Client{}
if err := makeRequest(client, server.URL); err != nil {
b.Fatalf("Request failed: %v", err)
}
}
}
func BenchmarkReuseHttpClient(b *testing.B) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("OK"))
}))
defer server.Close()
client := &http.Client{} // Reusable HTTP client
for i := 0; i < b.N; i++ {
if err := makeRequest(client, server.URL); err != nil {
b.Fatalf("Request failed: %v", err)
}
}
}