// Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package httptest import ( "io/ioutil" "net/http" "testing" "time" ) func TestServer(t *testing.T) { ts := NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello")) })) defer ts.Close() res, err := http.Get(ts.URL) if err != nil { t.Fatal(err) } got, err := ioutil.ReadAll(res.Body) if err != nil { t.Fatal(err) } if string(got) != "hello" { t.Errorf("got %q, want hello", string(got)) } } func TestIssue7264(t *testing.T) { for i := 0; i < 1000; i++ { func() { inHandler := make(chan bool, 1) ts := NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { inHandler <- true })) defer ts.Close() tr := &http.Transport{ ResponseHeaderTimeout: time.Nanosecond, } defer tr.CloseIdleConnections() c := &http.Client{Transport: tr} res, err := c.Get(ts.URL) <-inHandler if err == nil { res.Body.Close() } }() } }