// Copyright 2009 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 net

import (
	"net";
	"os";
	"testing";
	"time";
)

func testTimeout(t *testing.T, network, addr string) {
	fd, err := net.Dial(network, "", addr);
	defer fd.Close();
	if err != nil {
		t.Errorf("dial %s %s failed: %v", network, addr, err);
	}
	t0 := time.Nanoseconds();
	fd.SetReadTimeout(1e8);	// 100ms
	var b [100]byte;
	n, err1 := fd.Read(&b);
	t1 := time.Nanoseconds();
	if n != 0 || !isEAGAIN(err1) {
		t.Errorf("fd.Read on %s %s did not return 0, EAGAIN: %v, %v", network, addr, n, err1);
	}
	if t1 - t0 < 0.5e8 || t1 - t0 > 1.5e8 {
		t.Errorf("fd.Read on %s %s took %f seconds, expected 0.1", network, addr, float64(t1 - t0) / 1e9);
	}
}

func TestTimeoutUDP(t *testing.T) {
	testTimeout(t, "udp", "127.0.0.1:53");
}

func TestTimeoutTCP(t *testing.T) {
	// 74.125.19.99 is www.google.com.
	// could use dns, but dns depends on
	// timeouts and this is the timeout test.
	testTimeout(t, "tcp", "74.125.19.99:80");
}
