timeoutconn_test.go 802 B

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