Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(965)

Side by Side Diff: src/pkg/net/unix_test.go

Issue 7058062: code review 7058062: syscall: handle empty address in ReadFrom better (Closed)
Patch Set: diff -r 7bc28d72d49c http://code.google.com/p/go Created 11 years, 2 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/pkg/syscall/syscall_bsd.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // +build !plan9,!windows
6
7 package net
8
9 import (
10 "bytes"
11 "io/ioutil"
12 "os"
13 "syscall"
14 "testing"
15 "time"
16 )
17
18 // use ioutil.TempFile to get a name that is unique
mikio 2013/01/19 14:10:21 // testUnixAddr returns a unique pathname that ...
jeff.allen 2013/01/23 15:10:14 Done.
19 func genAddr() string {
mikio 2013/01/19 14:10:21 maybe testUnixAddr
jeff.allen 2013/01/23 15:10:14 Done.
20 f, err := ioutil.TempFile("", "nettest")
21 if err != nil {
22 panic(err)
23 }
24 f.Close()
mikio 2013/01/19 14:10:21 seems wrong f.Close then f.Name
jeff.allen 2013/01/23 15:10:14 Done.
25 addr := f.Name()
26 os.Remove(addr)
27 return addr
28 }
29
30 func TestReadUnixgramWithUnnamedSocket(t *testing.T) {
31 addr := genAddr()
32 la, err := ResolveUnixAddr("unixgram", addr)
33 if err != nil {
34 t.Fatalf("ResolveUnixAddr failed: %v", err)
35 }
36 c, err := ListenUnixgram("unixgram", la)
37 if err != nil {
38 t.Fatalf("ListenUnixgram failed: %v", err)
39 }
40 defer func() {
41 c.Close()
42 os.Remove(addr)
43 }()
44
mikio 2013/01/19 14:10:21 sorry, i forgot to add a channel that avoids ECONN
jeff.allen 2013/01/23 15:10:14 Done.
45 data := [5]byte{1, 2, 3, 4, 5}
46 go func() {
47 s, err := syscall.Socket(syscall.AF_UNIX, syscall.SOCK_DGRAM, 0)
48 if err != nil {
49 t.Errorf("syscall.Socket failed: %v", err)
50 return
51 }
52 defer syscall.Close(s)
53 rsa := &syscall.SockaddrUnix{Name: addr}
54 if err := syscall.Sendto(s, data[:], 0, rsa); err != nil {
55 t.Errorf("syscall.Sendto failed: %v", err)
56 return
57 }
58 }()
59
60 b := make([]byte, 64)
61 c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
62 n, from, err := c.ReadFrom(b)
63 if err != nil {
64 t.Errorf("UnixConn.ReadFrom failed: %v", err)
65 return
66 }
67 if from != nil {
68 t.Logf("neighbor address is %v", from)
69 }
70 if !bytes.Equal(b[:n], data[:]) {
71 t.Errorf("got %v, want %v", b[:n], data[:])
72 return
73 }
74 }
75
76 func TestReadUnixgramWithZeroBytesBuffer(t *testing.T) {
77 // issue 4352: Recvfrom failed with "address family not
78 // supported by protocol family" if zero-length buffer provided
79
80 addr := genAddr()
81 defer os.Remove(addr)
mikio 2013/01/19 14:10:21 delete
jeff.allen 2013/01/23 15:10:14 Done.
82 la, err := ResolveUnixAddr("unixgram", addr)
83 if err != nil {
84 t.Fatalf("ResolveUnixAddr failed: %v", err)
85 }
86 c, err := ListenUnixgram("unixgram", la)
87 if err != nil {
88 t.Fatalf("ListenUnixgram failed: %v", err)
89 }
90 defer func() {
91 c.Close()
92 os.Remove(addr)
93 }()
94
95 go func() {
mikio 2013/01/19 14:10:21 sorry, pls add a channel (same as above)
jeff.allen 2013/01/23 15:10:14 Done.
96 c, err := DialUnix("unixgram", nil, la)
97 if err != nil {
98 t.Errorf("DialUnix failed: %v", err)
99 return
100 }
101 defer c.Close()
102 if _, err := c.Write([]byte{1, 2, 3, 4, 5}); err != nil {
103 t.Errorf("UnixConn.Write failed: %v", err)
104 return
105 }
106 }()
107
108 c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
109 if _, _, err := c.ReadFrom(nil); err != nil {
110 t.Errorf("UnixConn.ReadFrom failed: %v", err)
111 return
112 }
113 }
OLDNEW
« no previous file with comments | « no previous file | src/pkg/syscall/syscall_bsd.go » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b