diff --git a/src/pkg/net/udp_test.go b/src/pkg/net/udp_test.go --- a/src/pkg/net/udp_test.go +++ b/src/pkg/net/udp_test.go @@ -9,6 +9,7 @@ "runtime" "strings" "testing" + "time" ) func TestResolveUDPAddr(t *testing.T) { @@ -251,3 +252,35 @@ } } } + +func TestUDPReadFrom(t *testing.T) { + const raddr = "54.244.132.193:55555" + c, err := Dial("udp", raddr) + if err != nil { + t.Fatalf("Dial failed: %v", err) + } + defer c.Close() + + ra, err := ResolveUDPAddr("udp", raddr) + if err != nil { + t.Fatalf("ResolveUDPAddr failed: %v", err) + } + + _, err = c.(*UDPConn).WriteToUDP([]byte("a"), ra) + if err == nil { + t.Fatal("WriteToUDP should fail") + } + if err != nil && err.(*OpError).Err != ErrWriteToConnected { + t.Fatalf("WriteToUDP should fail as ErrWriteToConnected: %v", err) + } + + err = c.SetDeadline(time.Now().Add(100 * time.Millisecond)) + if err != nil { + t.Fatalf("SetDeadline failed: %v", err) + } + b := make([]byte, 1) + _, _, err = c.(*UDPConn).ReadFromUDP(b) + if err != nil && !isTimeout(err) { + t.Fatalf("ReadFromUDP failed: %v", err) + } +}