1package domain
2
3import (
4 "testing"
5 "time"
6
7 "github.com/stretchr/testify/assert"
8 "github.com/stretchr/testify/require"
9)
10
11func TestDefaultHTTPOptions(t *testing.T) {
12 assert.Equal(t, HTTPOptions{
13 ReadHeaderTimeout: 5 * time.Second,
14 IdleTimeout: 30 * time.Second,
15 TransferIdleTimeout: 2 * time.Minute,
16 }, DefaultHTTPOptions())
17 assert.NoError(t, DefaultHTTPOptions().Validate())
18}
19
20func TestHTTPOptionsWithDefaults(t *testing.T) {
21 got := HTTPOptions{TransferIdleTimeout: time.Hour}.WithDefaults()
22 assert.Equal(t, 5*time.Second, got.ReadHeaderTimeout)
23 assert.Equal(t, 30*time.Second, got.IdleTimeout)
24 assert.Equal(t, time.Hour, got.TransferIdleTimeout)
25}
26
27func TestHTTPOptionsValidateRejectsNegative(t *testing.T) {
28 require.ErrorContains(t, HTTPOptions{ReadHeaderTimeout: -1}.Validate(), "traffic.http.read_header_timeout")
29 require.ErrorContains(t, HTTPOptions{IdleTimeout: -1}.Validate(), "traffic.http.idle_timeout")
30 require.ErrorContains(t, HTTPOptions{TransferIdleTimeout: -1}.Validate(), "traffic.http.transfer_idle_timeout")
31 assert.NoError(t, HTTPOptions{}.Validate(), "zero selects the default")
32}
33
34func TestTrafficGraphRejectsNegativeHTTPOptions(t *testing.T) {
35 graph := TrafficGraph{Options: TrafficOptions{HTTP: HTTPOptions{TransferIdleTimeout: -time.Second}}}
36 require.ErrorContains(t, graph.Validate(), "traffic.http.transfer_idle_timeout")
37}
38
39func TestDefaultRegistryHTTPTimeouts(t *testing.T) {
40 assert.Equal(t, RegistryHTTPTimeouts{
41 ReadHeaderTimeout: 10 * time.Second,
42 ReadTimeout: 5 * time.Minute,
43 WriteTimeout: 5 * time.Minute,
44 IdleTimeout: 120 * time.Second,
45 }, DefaultRegistryHTTPTimeouts())
46 assert.Equal(t, DefaultRegistryHTTPTimeouts(), RegistryHTTPTimeouts{}.WithDefaults())
47}
48
49func TestRegistryHTTPTimeoutsValidate(t *testing.T) {
50 assert.NoError(t, DefaultRegistryHTTPTimeouts().Validate())
51 require.ErrorContains(t, RegistryHTTPTimeouts{ReadHeaderTimeout: -1}.Validate(), "server.http.read_header_timeout")
52 require.ErrorContains(t, RegistryHTTPTimeouts{ReadTimeout: -1}.Validate(), "server.http.read_timeout")
53 require.ErrorContains(t, RegistryHTTPTimeouts{WriteTimeout: -1}.Validate(), "server.http.write_timeout")
54 require.ErrorContains(t, RegistryHTTPTimeouts{IdleTimeout: -1}.Validate(), "server.http.idle_timeout")
55}