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

Delta Between Two Patch Sets: src/pkg/net/ipraw_test.go

Issue 12843043: code review 12843043: net: fix dial to raw IP networks on Windows (Closed)
Left Patch Set: diff -r 0593b48602fa https://code.google.com/p/go Created 10 years, 7 months ago
Right Patch Set: diff -r 646b13b8c136 https://code.google.com/p/go Created 10 years, 7 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:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « src/pkg/net/fd_windows.go ('k') | src/pkg/net/protoconn_test.go » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 // Copyright 2009 The Go Authors. All rights reserved. 1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style 2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file. 3 // license that can be found in the LICENSE file.
4 4
5 package net 5 package net
6 6
7 import ( 7 import (
8 "bytes" 8 "bytes"
9 "errors" 9 "errors"
10 "fmt" 10 "fmt"
11 "os" 11 "os"
12 "reflect" 12 "reflect"
13 "runtime"
13 "testing" 14 "testing"
14 "time" 15 "time"
15 ) 16 )
16 17
17 type resolveIPAddrTest struct { 18 type resolveIPAddrTest struct {
18 net string 19 net string
19 litAddr string 20 litAddr string
20 addr *IPAddr 21 addr *IPAddr
21 err error 22 err error
22 } 23 }
23 24
24 var resolveIPAddrTests = []resolveIPAddrTest{ 25 var resolveIPAddrTests = []resolveIPAddrTest{
25 {"ip", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil}, 26 {"ip", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil},
26 {"ip4", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil}, 27 {"ip4", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil},
27 {"ip4:icmp", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil}, 28 {"ip4:icmp", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil},
28 29
29 {"ip", "::1", &IPAddr{IP: ParseIP("::1")}, nil}, 30 {"ip", "::1", &IPAddr{IP: ParseIP("::1")}, nil},
30 {"ip6", "::1", &IPAddr{IP: ParseIP("::1")}, nil}, 31 {"ip6", "::1", &IPAddr{IP: ParseIP("::1")}, nil},
31 {"ip6:ipv6-icmp", "::1", &IPAddr{IP: ParseIP("::1")}, nil}, 32 {"ip6:ipv6-icmp", "::1", &IPAddr{IP: ParseIP("::1")}, nil},
33 {"ip6:IPv6-ICMP", "::1", &IPAddr{IP: ParseIP("::1")}, nil},
32 34
33 {"ip", "::1%en0", &IPAddr{IP: ParseIP("::1"), Zone: "en0"}, nil}, 35 {"ip", "::1%en0", &IPAddr{IP: ParseIP("::1"), Zone: "en0"}, nil},
34 {"ip6", "::1%911", &IPAddr{IP: ParseIP("::1"), Zone: "911"}, nil}, 36 {"ip6", "::1%911", &IPAddr{IP: ParseIP("::1"), Zone: "911"}, nil},
35 37
36 {"", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil}, // Go 1.0 behav ior 38 {"", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil}, // Go 1.0 behav ior
37 {"", "::1", &IPAddr{IP: ParseIP("::1")}, nil}, // Go 1.0 behav ior 39 {"", "::1", &IPAddr{IP: ParseIP("::1")}, nil}, // Go 1.0 behav ior
38 40
39 {"l2tp", "127.0.0.1", nil, UnknownNetworkError("l2tp")}, 41 {"l2tp", "127.0.0.1", nil, UnknownNetworkError("l2tp")},
40 {"l2tp:gre", "127.0.0.1", nil, UnknownNetworkError("l2tp:gre")}, 42 {"l2tp:gre", "127.0.0.1", nil, UnknownNetworkError("l2tp:gre")},
41 {"tcp", "1.2.3.4:123", nil, UnknownNetworkError("tcp")}, 43 {"tcp", "1.2.3.4:123", nil, UnknownNetworkError("tcp")},
42 } 44 }
43 45
44 func init() { 46 func init() {
45 if ifi := loopbackInterface(); ifi != nil { 47 if ifi := loopbackInterface(); ifi != nil {
46 index := fmt.Sprintf("%v", ifi.Index) 48 index := fmt.Sprintf("%v", ifi.Index)
47 resolveIPAddrTests = append(resolveIPAddrTests, []resolveIPAddrT est{ 49 resolveIPAddrTests = append(resolveIPAddrTests, []resolveIPAddrT est{
48 {"ip6", "fe80::1%" + ifi.Name, &IPAddr{IP: ParseIP("fe80 ::1"), Zone: zoneToString(ifi.Index)}, nil}, 50 {"ip6", "fe80::1%" + ifi.Name, &IPAddr{IP: ParseIP("fe80 ::1"), Zone: zoneToString(ifi.Index)}, nil},
49 {"ip6", "fe80::1%" + index, &IPAddr{IP: ParseIP("fe80::1 "), Zone: index}, nil}, 51 {"ip6", "fe80::1%" + index, &IPAddr{IP: ParseIP("fe80::1 "), Zone: index}, nil},
50 }...) 52 }...)
51 } 53 }
52 } 54 }
53 55
54 func TestResolveIPAddr(t *testing.T) { 56 func TestResolveIPAddr(t *testing.T) {
55 for _, tt := range resolveIPAddrTests { 57 for _, tt := range resolveIPAddrTests {
56 addr, err := ResolveIPAddr(tt.net, tt.litAddr) 58 addr, err := ResolveIPAddr(tt.net, tt.litAddr)
57 if err != tt.err { 59 if err != tt.err {
58 » » » condFatalf(t, "ResolveIPAddr(%v, %v) failed: %v", tt.net , tt.litAddr, err) 60 » » » t.Fatalf("ResolveIPAddr(%v, %v) failed: %v", tt.net, tt. litAddr, err)
59 } else if !reflect.DeepEqual(addr, tt.addr) { 61 } else if !reflect.DeepEqual(addr, tt.addr) {
60 t.Fatalf("got %#v; expected %#v", addr, tt.addr) 62 t.Fatalf("got %#v; expected %#v", addr, tt.addr)
61 } 63 }
62 } 64 }
63 } 65 }
64 66
65 var icmpEchoTests = []struct { 67 var icmpEchoTests = []struct {
66 net string 68 net string
67 laddr string 69 laddr string
68 raddr string 70 raddr string
69 }{ 71 }{
70 {"ip4:icmp", "0.0.0.0", "127.0.0.1"}, 72 {"ip4:icmp", "0.0.0.0", "127.0.0.1"},
71 {"ip6:ipv6-icmp", "::", "::1"}, 73 {"ip6:ipv6-icmp", "::", "::1"},
72 } 74 }
73 75
74 func TestConnICMPEcho(t *testing.T) { 76 func TestConnICMPEcho(t *testing.T) {
75 » if os.Getuid() != 0 { 77 » switch runtime.GOOS {
76 » » t.Skip("skipping test; must be root") 78 » case "plan9":
79 » » t.Skipf("skipping test on %q", runtime.GOOS)
80 » case "windows":
81 » default:
82 » » if os.Getuid() != 0 {
83 » » » t.Skip("skipping test; must be root")
84 » » }
77 } 85 }
78 86
79 for i, tt := range icmpEchoTests { 87 for i, tt := range icmpEchoTests {
80 net, _, err := parseNetwork(tt.net) 88 net, _, err := parseNetwork(tt.net)
81 if err != nil { 89 if err != nil {
82 t.Fatalf("parseNetwork failed: %v", err) 90 t.Fatalf("parseNetwork failed: %v", err)
83 } 91 }
84 if net == "ip6" && !supportsIPv6 { 92 if net == "ip6" && !supportsIPv6 {
85 continue 93 continue
86 } 94 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 if p.ID != xid || p.Seq != xseq { 141 if p.ID != xid || p.Seq != xseq {
134 t.Fatalf("got id=%v, seqnum=%v; expected id=%v, seqnum=%v", p.ID, p.Seq, xid, xseq) 142 t.Fatalf("got id=%v, seqnum=%v; expected id=%v, seqnum=%v", p.ID, p.Seq, xid, xseq)
135 } 143 }
136 default: 144 default:
137 t.Fatalf("got type=%v, code=%v; expected type=%v, code=% v", m.Type, m.Code, typ, 0) 145 t.Fatalf("got type=%v, code=%v; expected type=%v, code=% v", m.Type, m.Code, typ, 0)
138 } 146 }
139 } 147 }
140 } 148 }
141 149
142 func TestPacketConnICMPEcho(t *testing.T) { 150 func TestPacketConnICMPEcho(t *testing.T) {
143 » if os.Getuid() != 0 { 151 » switch runtime.GOOS {
144 » » t.Skip("skipping test; must be root") 152 » case "plan9":
153 » » t.Skipf("skipping test on %q", runtime.GOOS)
154 » case "windows":
155 » default:
156 » » if os.Getuid() != 0 {
157 » » » t.Skip("skipping test; must be root")
158 » » }
145 } 159 }
146 160
147 for i, tt := range icmpEchoTests { 161 for i, tt := range icmpEchoTests {
148 net, _, err := parseNetwork(tt.net) 162 net, _, err := parseNetwork(tt.net)
149 if err != nil { 163 if err != nil {
150 t.Fatalf("parseNetwork failed: %v", err) 164 t.Fatalf("parseNetwork failed: %v", err)
151 } 165 }
152 if net == "ip6" && !supportsIPv6 { 166 if net == "ip6" && !supportsIPv6 {
153 continue 167 continue
154 } 168 }
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 var ipConnLocalNameTests = []struct { 346 var ipConnLocalNameTests = []struct {
333 net string 347 net string
334 laddr *IPAddr 348 laddr *IPAddr
335 }{ 349 }{
336 {"ip4:icmp", &IPAddr{IP: IPv4(127, 0, 0, 1)}}, 350 {"ip4:icmp", &IPAddr{IP: IPv4(127, 0, 0, 1)}},
337 {"ip4:icmp", &IPAddr{}}, 351 {"ip4:icmp", &IPAddr{}},
338 {"ip4:icmp", nil}, 352 {"ip4:icmp", nil},
339 } 353 }
340 354
341 func TestIPConnLocalName(t *testing.T) { 355 func TestIPConnLocalName(t *testing.T) {
342 » if os.Getuid() != 0 { 356 » switch runtime.GOOS {
343 » » t.Skip("skipping test; must be root") 357 » case "plan9", "windows":
358 » » t.Skipf("skipping test on %q", runtime.GOOS)
359 » default:
360 » » if os.Getuid() != 0 {
361 » » » t.Skip("skipping test; must be root")
362 » » }
344 } 363 }
345 364
346 for _, tt := range ipConnLocalNameTests { 365 for _, tt := range ipConnLocalNameTests {
347 c, err := ListenIP(tt.net, tt.laddr) 366 c, err := ListenIP(tt.net, tt.laddr)
348 if err != nil { 367 if err != nil {
349 t.Fatalf("ListenIP failed: %v", err) 368 t.Fatalf("ListenIP failed: %v", err)
350 } 369 }
351 defer c.Close() 370 defer c.Close()
352 if la := c.LocalAddr(); la == nil { 371 if la := c.LocalAddr(); la == nil {
353 t.Fatal("IPConn.LocalAddr failed") 372 t.Fatal("IPConn.LocalAddr failed")
354 } 373 }
355 } 374 }
356 } 375 }
357 376
358 func TestIPConnRemoteName(t *testing.T) { 377 func TestIPConnRemoteName(t *testing.T) {
359 » if os.Getuid() != 0 { 378 » switch runtime.GOOS {
360 » » t.Skip("skipping test; must be root") 379 » case "plan9", "windows":
380 » » t.Skipf("skipping test on %q", runtime.GOOS)
381 » default:
382 » » if os.Getuid() != 0 {
383 » » » t.Skip("skipping test; must be root")
384 » » }
361 } 385 }
362 386
363 raddr := &IPAddr{IP: IPv4(127, 0, 0, 10).To4()} 387 raddr := &IPAddr{IP: IPv4(127, 0, 0, 10).To4()}
364 c, err := DialIP("ip:tcp", &IPAddr{IP: IPv4(127, 0, 0, 1)}, raddr) 388 c, err := DialIP("ip:tcp", &IPAddr{IP: IPv4(127, 0, 0, 1)}, raddr)
365 if err != nil { 389 if err != nil {
366 t.Fatalf("DialIP failed: %v", err) 390 t.Fatalf("DialIP failed: %v", err)
367 } 391 }
368 defer c.Close() 392 defer c.Close()
369 if !reflect.DeepEqual(raddr, c.RemoteAddr()) { 393 if !reflect.DeepEqual(raddr, c.RemoteAddr()) {
370 t.Fatalf("got %#v, expected %#v", c.RemoteAddr(), raddr) 394 t.Fatalf("got %#v, expected %#v", c.RemoteAddr(), raddr)
371 } 395 }
372 } 396 }
LEFTRIGHT

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