Source file
src/net/http/server_test.go
1
2
3
4
5
6
7 package http
8
9 import (
10 "fmt"
11 "testing"
12 "time"
13 )
14
15 func TestServerTLSHandshakeTimeout(t *testing.T) {
16 tests := []struct {
17 s *Server
18 want time.Duration
19 }{
20 {
21 s: &Server{},
22 want: 0,
23 },
24 {
25 s: &Server{
26 ReadTimeout: -1,
27 },
28 want: 0,
29 },
30 {
31 s: &Server{
32 ReadTimeout: 5 * time.Second,
33 },
34 want: 5 * time.Second,
35 },
36 {
37 s: &Server{
38 ReadTimeout: 5 * time.Second,
39 WriteTimeout: -1,
40 },
41 want: 5 * time.Second,
42 },
43 {
44 s: &Server{
45 ReadTimeout: 5 * time.Second,
46 WriteTimeout: 4 * time.Second,
47 },
48 want: 4 * time.Second,
49 },
50 {
51 s: &Server{
52 ReadTimeout: 5 * time.Second,
53 ReadHeaderTimeout: 2 * time.Second,
54 WriteTimeout: 4 * time.Second,
55 },
56 want: 2 * time.Second,
57 },
58 }
59 for i, tt := range tests {
60 got := tt.s.tlsHandshakeTimeout()
61 if got != tt.want {
62 t.Errorf("%d. got %v; want %v", i, got, tt.want)
63 }
64 }
65 }
66
67 func BenchmarkServerMatch(b *testing.B) {
68 fn := func(w ResponseWriter, r *Request) {
69 fmt.Fprintf(w, "OK")
70 }
71 mux := NewServeMux()
72 mux.HandleFunc("/", fn)
73 mux.HandleFunc("/index", fn)
74 mux.HandleFunc("/home", fn)
75 mux.HandleFunc("/about", fn)
76 mux.HandleFunc("/contact", fn)
77 mux.HandleFunc("/robots.txt", fn)
78 mux.HandleFunc("/products/", fn)
79 mux.HandleFunc("/products/1", fn)
80 mux.HandleFunc("/products/2", fn)
81 mux.HandleFunc("/products/3", fn)
82 mux.HandleFunc("/products/3/image.jpg", fn)
83 mux.HandleFunc("/admin", fn)
84 mux.HandleFunc("/admin/products/", fn)
85 mux.HandleFunc("/admin/products/create", fn)
86 mux.HandleFunc("/admin/products/update", fn)
87 mux.HandleFunc("/admin/products/delete", fn)
88
89 paths := []string{"/", "/notfound", "/admin/", "/admin/foo", "/contact", "/products",
90 "/products/", "/products/3/image.jpg"}
91 b.StartTimer()
92 for i := 0; i < b.N; i++ {
93 if h, p := mux.match(paths[i%len(paths)]); h != nil && p == "" {
94 b.Error("impossible")
95 }
96 }
97 b.StopTimer()
98 }
99
View as plain text