/
ip_overlay_test.go
121 lines (106 loc) · 3.88 KB
/
ip_overlay_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package overlay
// xlOverlay_go/ip_overlay_test.go
import (
"fmt"
xr "github.com/jddixon/rnglib_go"
xt "github.com/jddixon/xlTransport_go"
. "gopkg.in/check.v1"
"net"
)
var _ = fmt.Print
func (s *XLSuite) TestCtor(c *C) {
rng := xr.MakeSimpleRNG()
name := rng.NextFileName(8)
o, err := NewIPOverlay(name, nil, "tcpip", 0.42)
c.Assert(err, IsNil)
c.Assert(o, Not(IsNil))
c.Assert(name, Equals, o.Name())
c.Assert("tcpip", Equals, o.Transport())
c.Assert(float32(0.42), Equals, o.Cost())
}
func (s *XLSuite) TestIsElement(c *C) {
rng := xr.MakeSimpleRNG()
name := rng.NextFileName(8)
p10_8 := net.ParseIP("10.0.0.0")[12:]
a10_8, err := NewAddrRange(p10_8, 8, 32)
c.Assert(err, IsNil)
o10_8, err := NewIPOverlay(name, a10_8, "ip", 1.0)
c.Assert(err, IsNil)
// bad transport(s)
mockE := xt.NewMockEndPoint("foo", "1234")
c.Assert(o10_8.IsElement(mockE), Equals, false)
// 10/8 ---------------------------------------------------------
n10_8, n10_8_IPNet, err := net.ParseCIDR("10.0.0.0/8")
c.Assert(err, IsNil)
c.Assert(n10_8, Not(IsNil))
c.Assert(len(n10_8), Equals, 16) // XXX is 16
c.Assert(len(n10_8_IPNet.IP), Equals, 4)
e1 := net.ParseIP("10.11.12.13")[12:]
c.Assert(e1, Not(IsNil))
c.Assert(n10_8_IPNet.Contains(e1), Equals, true)
e2 := net.ParseIP("9.10.11.12")[12:]
c.Assert(n10_8_IPNet.Contains(e2), Equals, false)
// 192.168/16 ---------------------------------------------------
n192_168, n192_168_IPNet, err := net.ParseCIDR("192.168.0.0/16")
c.Assert(err, IsNil)
c.Assert(n192_168, Not(IsNil))
c.Assert(len(n192_168), Equals, 16) // XXX is 16
c.Assert(len(n192_168_IPNet.IP), Equals, 4)
// The first value returned by ParseCIDR is all zeroes. The
// IP in the second value, the IPNet, is correct
e10 := net.ParseIP("192.168.0.0")[12:]
c.Assert(n192_168_IPNet.Contains(e10), Equals, true)
e11 := net.ParseIP("192.168.255.255")[12:]
c.Assert(n192_168_IPNet.Contains(e11), Equals, true)
e20 := net.ParseIP("192.167.255.255")[12:]
c.Assert(n192_168_IPNet.Contains(e20), Equals, false)
e21 := net.ParseIP("192.169.0.0")[12:]
c.Assert(n192_168_IPNet.Contains(e21), Equals, false)
}
// same test using NewCIDRAddrRange()
func (s *XLSuite) TestIsElement2(c *C) {
rng := xr.MakeSimpleRNG()
name := rng.NextFileName(8)
a10_8, err := NewCIDRAddrRange("10.0.0.0/8")
c.Assert(err, IsNil)
o10_8, err := NewIPOverlay(name, a10_8, "ip", 1.0)
c.Assert(err, IsNil)
// bad transport(s)
mockE := xt.NewMockEndPoint("foo", "1234")
c.Assert(o10_8.IsElement(mockE), Equals, false)
// 10/8 ---------------------------------------------------------
c.Assert(a10_8.PrefixLen(), Equals, uint(8))
c.Assert(a10_8.AddrLen(), Equals, uint(32))
prefix := a10_8.Prefix()
c.Assert(prefix[0], Equals, byte(10))
e1, err := xt.NewTcpEndPoint("10.11.12.13:55555")
c.Assert(err, IsNil)
c.Assert(e1, Not(IsNil))
c.Assert(o10_8.IsElement(e1), Equals, true)
e2, err := xt.NewTcpEndPoint("9.10.11.12:4444")
c.Assert(err, IsNil)
c.Assert(e2, Not(IsNil))
c.Assert(o10_8.IsElement(e2), Equals, false)
// 192.168/16 ---------------------------------------------------
a192_168, err := NewCIDRAddrRange("192.168.0.0/16")
c.Assert(err, IsNil)
o192_168, err := NewIPOverlay(name, a192_168, "ip", 1.0)
c.Assert(err, IsNil)
c.Assert(a192_168.PrefixLen(), Equals, uint(16))
c.Assert(a192_168.AddrLen(), Equals, uint(32))
prefix = a192_168.Prefix()
c.Assert(prefix[0], Equals, byte(192))
c.Assert(prefix[1], Equals, byte(168))
e10, err := xt.NewTcpEndPoint("192.168.0.0:1")
c.Assert(err, IsNil)
c.Assert(o192_168.IsElement(e10), Equals, true)
e11, err := xt.NewTcpEndPoint("192.168.255.255:2")
c.Assert(err, IsNil)
c.Assert(o192_168.IsElement(e11), Equals, true)
e20, err := xt.NewTcpEndPoint("192.167.255.255:3")
c.Assert(err, IsNil)
c.Assert(o192_168.IsElement(e20), Equals, false)
e21, err := xt.NewTcpEndPoint("192.169.0.0:4")
c.Assert(err, IsNil)
c.Assert(o192_168.IsElement(e21), Equals, false)
}