github.com/dougm/docker@v1.5.0/utils/timeoutconn_test.go (about)

     1  package utils
     2  
     3  import (
     4  	"bufio"
     5  	"fmt"
     6  	"net"
     7  	"net/http"
     8  	"net/http/httptest"
     9  	"testing"
    10  	"time"
    11  )
    12  
    13  func TestTimeoutConnRead(t *testing.T) {
    14  	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    15  		fmt.Fprintln(w, "hello")
    16  	}))
    17  	defer ts.Close()
    18  	conn, err := net.Dial("tcp", ts.URL[7:])
    19  	if err != nil {
    20  		t.Fatalf("failed to create connection to %q: %v", ts.URL, err)
    21  	}
    22  	tconn := NewTimeoutConn(conn, 1*time.Second)
    23  
    24  	if _, err = bufio.NewReader(tconn).ReadString('\n'); err == nil {
    25  		t.Fatalf("expected timeout error, got none")
    26  	}
    27  	if _, err := fmt.Fprintf(tconn, "GET / HTTP/1.0\r\n\r\n"); err != nil {
    28  		t.Errorf("unexpected error: %v", err)
    29  	}
    30  	if _, err = bufio.NewReader(tconn).ReadString('\n'); err != nil {
    31  		t.Errorf("unexpected error: %v", err)
    32  	}
    33  }