23
24
{"uSER-aGENT", "User-Agent"},
24
25
{"user-agent", "User-Agent"},
25
26
{"USER-AGENT", "User-Agent"},
27
{"üser-agenT", "üser-Agent"}, // non-ASCII unchanged
28
30
func TestCanonicalMIMEHeaderKey(t *testing.T) {
245
func TestCommonHeaders(t *testing.T) {
246
// need to disable the commonHeaders-based optimization
247
// during this check, or we'd not be testing anything
248
oldch := commonHeaders
249
commonHeaders = []string{}
250
defer func() { commonHeaders = oldch }()
253
for _, h := range oldch {
255
t.Errorf("%v is out of order", h)
258
t.Errorf("%v is duplicated", h)
260
if canon := CanonicalMIMEHeaderKey(h); h != canon {
261
t.Errorf("%v is not canonical", h)
267
var clientHeaders = strings.Replace(`Host: golang.org
268
Connection: keep-alive
269
Cache-Control: max-age=0
270
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
271
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3
272
Accept-Encoding: gzip,deflate,sdch
273
Accept-Language: en-US,en;q=0.8,fr-CH;q=0.6
274
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
275
COOKIE: __utma=000000000.0000000000.0000000000.0000000000.0000000000.00; __utmb=000000000.0.00.0000000000; __utmc=000000000; __utmz=000000000.0000000000.00.0.utmcsr=code.google.com|utmccn=(referral)|utmcmd=referral|utmcct=/p/go/issues/detail
280
var serverHeaders = strings.Replace(`Content-Type: text/html; charset=utf-8
281
Content-Encoding: gzip
282
Date: Thu, 27 Sep 2012 09:03:33 GMT
283
Server: Google Frontend
284
Cache-Control: private
286
VIA: 1.1 proxy.example.com:80 (XXX/n.n.n-nnn)
292
func BenchmarkReadMIMEHeader(b *testing.B) {
295
br := bufio.NewReader(&buf)
297
for i := 0; i < b.N; i++ {
301
buf.WriteString(clientHeaders)
305
buf.WriteString(serverHeaders)
309
h, err := r.ReadMIMEHeader()
314
b.Fatalf("wrong number of headers: got %d, want %d", len(h), want)
316
if _, ok := h[find]; !ok {
317
b.Fatalf("did not find key %s", find)
322
func BenchmarkUncommon(b *testing.B) {
325
br := bufio.NewReader(&buf)
327
for i := 0; i < b.N; i++ {
328
buf.WriteString("uncommon-header-for-benchmark: foo\r\n\r\n")
329
h, err := r.ReadMIMEHeader()
333
if _, ok := h["Uncommon-Header-For-Benchmark"]; !ok {
334
b.Fatal("Missing result header.")