detached 8345e76

http_timeouts_test.go RawHistoryFolder

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}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 7

Tags 106

↑↓ moveenter openesc close