| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package crimsondb | 5 package crimsondb |
| 6 | 6 |
| 7 import ( | 7 import ( |
| 8 "database/sql/driver" | 8 "database/sql/driver" |
| 9 "testing" | 9 "testing" |
| 10 | 10 |
| 11 "golang.org/x/net/context" | 11 "golang.org/x/net/context" |
| 12 | 12 |
| 13 . "github.com/smartystreets/goconvey/convey" | 13 . "github.com/smartystreets/goconvey/convey" |
| 14 | 14 |
| 15 crimson "infra/crimson/proto" | 15 crimson "infra/crimson/proto" |
| 16 "infra/crimson/server/sqlmock" | 16 "infra/crimson/server/sqlmock" |
| 17 ) | 17 ) |
| 18 | 18 |
| 19 func TestMacAddrStringToHexString(t *testing.T) { |
| 20 t.Parallel() |
| 21 Convey("MacAddrStringToHexString works", t, func() { |
| 22 Convey("on 00:00:00:00:00:00", func() { |
| 23 addr, err := MacAddrStringToHexString("00:00:00:00:00:00
") |
| 24 So(err, ShouldBeNil) |
| 25 So(addr, ShouldEqual, "0x000000000000") |
| 26 }) |
| 27 Convey("on 01:23:45:67:89:ab", func() { |
| 28 addr, err := MacAddrStringToHexString("01:23:45:67:89:ab
") |
| 29 So(err, ShouldBeNil) |
| 30 So(addr, ShouldEqual, "0x0123456789ab") |
| 31 }) |
| 32 }) |
| 33 |
| 34 Convey("MacAddrStringToHexString returns an error", t, func() { |
| 35 Convey("on empty string", func() { |
| 36 _, err := MacAddrStringToHexString("") |
| 37 So(err, ShouldNotBeNil) |
| 38 }) |
| 39 Convey("on 000000000000", func() { |
| 40 _, err := MacAddrStringToHexString("000000000000") |
| 41 So(err, ShouldNotBeNil) |
| 42 }) |
| 43 Convey("on 'deadmeat'", func() { |
| 44 _, err := MacAddrStringToHexString("deadmeat") |
| 45 So(err, ShouldNotBeNil) |
| 46 }) |
| 47 }) |
| 48 } |
| 49 |
| 50 func TestHexStringToHardwareAddr(t *testing.T) { |
| 51 t.Parallel() |
| 52 |
| 53 Convey("HexStringToHardwareAddr works", t, func() { |
| 54 Convey("on 0x000000000000", func() { |
| 55 hw, err := HexStringToHardwareAddr("0x000000000000") |
| 56 So(err, ShouldBeNil) |
| 57 So(hw.String(), ShouldEqual, "00:00:00:00:00:00") |
| 58 }) |
| 59 Convey("on 0x0123456789ab", func() { |
| 60 hw, err := HexStringToHardwareAddr("0x0123456789ab") |
| 61 So(err, ShouldBeNil) |
| 62 So(hw.String(), ShouldEqual, "01:23:45:67:89:ab") |
| 63 }) |
| 64 }) |
| 65 |
| 66 Convey("HexStringToHardwareAddr returns an error", t, func() { |
| 67 Convey("on empty string", func() { |
| 68 _, err := HexStringToHardwareAddr("") |
| 69 So(err, ShouldNotBeNil) |
| 70 }) |
| 71 Convey("on 000000000000", func() { |
| 72 _, err := HexStringToHardwareAddr("000000000000") |
| 73 So(err, ShouldNotBeNil) |
| 74 }) |
| 75 Convey("on '0xdeaddeadmeat'", func() { |
| 76 _, err := HexStringToHardwareAddr("0xdeaddeadmeat") |
| 77 So(err, ShouldNotBeNil) |
| 78 }) |
| 79 Convey("on 'Aa000000000000'", func() { |
| 80 _, err := HexStringToHardwareAddr("Aa000000000000") |
| 81 So(err, ShouldNotBeNil) |
| 82 }) |
| 83 }) |
| 84 } |
| 85 |
| 19 func TestIPStringToHexString(t *testing.T) { | 86 func TestIPStringToHexString(t *testing.T) { |
| 20 t.Parallel() | 87 t.Parallel() |
| 21 » Convey("TestHexStringToIPString works", t, func() { | 88 » Convey("IPStringToHexString works", t, func() { |
| 22 Convey("on 192.168.0.1", func() { | 89 Convey("on 192.168.0.1", func() { |
| 23 hexString, err := IPStringToHexString("192.168.0.1") | 90 hexString, err := IPStringToHexString("192.168.0.1") |
| 24 expected := "0xc0a80001" | 91 expected := "0xc0a80001" |
| 25 So(hexString, ShouldEqual, expected) | 92 So(hexString, ShouldEqual, expected) |
| 26 » » » So(err, ShouldEqual, nil) | 93 » » » So(err, ShouldBeNil) |
| 27 }) | 94 }) |
| 28 | 95 |
| 29 Convey("on 0.0.0.0", func() { | 96 Convey("on 0.0.0.0", func() { |
| 30 hexString, err := IPStringToHexString("0.0.0.0") | 97 hexString, err := IPStringToHexString("0.0.0.0") |
| 31 expected := "0x00000000" | 98 expected := "0x00000000" |
| 32 So(hexString, ShouldEqual, expected) | 99 So(hexString, ShouldEqual, expected) |
| 33 » » » So(err, ShouldEqual, nil) | 100 » » » So(err, ShouldBeNil) |
| 34 }) | 101 }) |
| 35 }) | 102 }) |
| 36 | 103 |
| 37 » Convey("TestHexStringToIPString returns an error", t, func() { | 104 » Convey("IPStringToHexString returns an error", t, func() { |
| 38 Convey("on empty string", func() { | 105 Convey("on empty string", func() { |
| 39 hexString, err := IPStringToHexString("") | 106 hexString, err := IPStringToHexString("") |
| 40 So(hexString, ShouldEqual, "") | 107 So(hexString, ShouldEqual, "") |
| 41 So(err, ShouldNotEqual, nil) | 108 So(err, ShouldNotEqual, nil) |
| 42 }) | 109 }) |
| 43 | 110 |
| 44 Convey("on non-numerical string with dots", func() { | 111 Convey("on non-numerical string with dots", func() { |
| 45 hexString, err := IPStringToHexString("ah.ah.ah.ah") | 112 hexString, err := IPStringToHexString("ah.ah.ah.ah") |
| 46 So(hexString, ShouldEqual, "") | 113 So(hexString, ShouldEqual, "") |
| 47 So(err, ShouldNotEqual, nil) | 114 So(err, ShouldNotEqual, nil) |
| 48 }) | 115 }) |
| 49 | 116 |
| 50 Convey("on non-numerical string", func() { | 117 Convey("on non-numerical string", func() { |
| 51 hexString, err := IPStringToHexString("aaaaaah") | 118 hexString, err := IPStringToHexString("aaaaaah") |
| 52 So(hexString, ShouldEqual, "") | 119 So(hexString, ShouldEqual, "") |
| 53 So(err, ShouldNotEqual, nil) | 120 So(err, ShouldNotEqual, nil) |
| 54 }) | 121 }) |
| 55 | 122 |
| 56 Convey("on '128.26.4'", func() { | 123 Convey("on '128.26.4'", func() { |
| 57 hexString, err := IPStringToHexString("128.26.4") | 124 hexString, err := IPStringToHexString("128.26.4") |
| 58 So(hexString, ShouldEqual, "") | 125 So(hexString, ShouldEqual, "") |
| 59 So(err, ShouldNotEqual, nil) | 126 So(err, ShouldNotEqual, nil) |
| 60 }) | 127 }) |
| 61 }) | 128 }) |
| 62 | 129 |
| 63 } | 130 } |
| 64 | 131 |
| 65 func TestHexStringToIPString(t *testing.T) { | 132 func TestHexStringToIPString(t *testing.T) { |
| 66 t.Parallel() | 133 t.Parallel() |
| 67 » Convey("TestHexStringToIPString works", t, func() { | 134 » Convey("HexStringToIP works", t, func() { |
| 68 Convey("on 0x00000000", func() { | 135 Convey("on 0x00000000", func() { |
| 69 » » » ipString := HexStringToIP("0x00000000").String() | 136 » » » ip, err := HexStringToIP("0x00000000") |
| 137 » » » So(err, ShouldBeNil) |
| 70 expected := "0.0.0.0" | 138 expected := "0.0.0.0" |
| 71 » » » So(ipString, ShouldEqual, expected) | 139 » » » So(ip.String(), ShouldEqual, expected) |
| 72 }) | 140 }) |
| 73 Convey("on 0xc0a80001", func() { | 141 Convey("on 0xc0a80001", func() { |
| 74 » » » ipString := HexStringToIP("0xc0a80001").String() | 142 » » » ip, err := HexStringToIP("0xc0a80001") |
| 143 » » » So(err, ShouldBeNil) |
| 75 expected := "192.168.0.1" | 144 expected := "192.168.0.1" |
| 76 » » » So(ipString, ShouldEqual, expected) | 145 » » » So(ip.String(), ShouldEqual, expected) |
| 77 }) | 146 }) |
| 78 Convey("on 0XC0A80002", func() { | 147 Convey("on 0XC0A80002", func() { |
| 79 » » » ipString := HexStringToIP("0XC0A80002").String() | 148 » » » ip, err := HexStringToIP("0XC0A80002") |
| 149 » » » So(err, ShouldBeNil) |
| 80 expected := "192.168.0.2" | 150 expected := "192.168.0.2" |
| 81 » » » So(ipString, ShouldEqual, expected) | 151 » » » So(ip.String(), ShouldEqual, expected) |
| 82 }) | 152 }) |
| 83 }) | 153 }) |
| 154 Convey("HexStringToIP returns an error", t, func() { |
| 155 Convey("on empty string", func() { |
| 156 ip, err := HexStringToIP("0XC0A80002") |
| 157 So(err, ShouldBeNil) |
| 158 expected := "192.168.0.2" |
| 159 So(ip.String(), ShouldEqual, expected) |
| 160 }) |
| 161 }) |
| 162 |
| 84 } | 163 } |
| 85 | 164 |
| 86 func TestIPStringToHexAndBack(t *testing.T) { | 165 func TestIPStringToHexAndBack(t *testing.T) { |
| 87 t.Parallel() | 166 t.Parallel() |
| 88 // Check that function which are supposed to be exact inverse actually a
re. | 167 // Check that function which are supposed to be exact inverse actually a
re. |
| 89 Convey("HexStringToIP and IPStringToHexString are inverse of each other"
, | 168 Convey("HexStringToIP and IPStringToHexString are inverse of each other"
, |
| 90 t, func() { | 169 t, func() { |
| 91 Convey("on 135.45.1.84", func() { | 170 Convey("on 135.45.1.84", func() { |
| 92 ip1 := "135.45.1.84" | 171 ip1 := "135.45.1.84" |
| 93 » » » » value, _ := IPStringToHexString(ip1) | 172 » » » » value, err := IPStringToHexString(ip1) |
| 94 » » » » ip2 := HexStringToIP(value).String() | 173 » » » » So(err, ShouldBeNil) |
| 95 » » » » So(ip1, ShouldEqual, ip2) | 174 » » » » ip2, err := HexStringToIP(value) |
| 175 » » » » So(err, ShouldBeNil) |
| 176 » » » » So(ip1, ShouldEqual, ip2.String()) |
| 96 }) | 177 }) |
| 97 | 178 |
| 98 Convey("on 1.2.3.4", func() { | 179 Convey("on 1.2.3.4", func() { |
| 99 ip1 := "1.2.3.4" | 180 ip1 := "1.2.3.4" |
| 100 » » » » value, _ := IPStringToHexString(ip1) | 181 » » » » value, err := IPStringToHexString(ip1) |
| 101 » » » » ip2 := HexStringToIP(value).String() | 182 » » » » So(err, ShouldBeNil) |
| 102 » » » » So(ip1, ShouldEqual, ip2) | 183 » » » » ip2, err := HexStringToIP(value) |
| 184 » » » » So(err, ShouldBeNil) |
| 185 » » » » So(ip1, ShouldEqual, ip2.String()) |
| 103 }) | 186 }) |
| 104 | 187 |
| 105 Convey("on 255.255.255.255", func() { | 188 Convey("on 255.255.255.255", func() { |
| 106 ip1 := "255.255.255.255" | 189 ip1 := "255.255.255.255" |
| 107 » » » » value, _ := IPStringToHexString(ip1) | 190 » » » » value, err := IPStringToHexString(ip1) |
| 108 » » » » ip2 := HexStringToIP(value).String() | 191 » » » » So(err, ShouldBeNil) |
| 109 » » » » So(ip1, ShouldEqual, ip2) | 192 » » » » ip2, err := HexStringToIP(value) |
| 193 » » » » So(err, ShouldBeNil) |
| 194 » » » » So(ip1, ShouldEqual, ip2.String()) |
| 110 }) | 195 }) |
| 111 }) | 196 }) |
| 112 } | 197 } |
| 113 | 198 |
| 114 func TestSelectIPRange(t *testing.T) { | 199 func TestSelectIPRange(t *testing.T) { |
| 115 t.Parallel() | 200 t.Parallel() |
| 116 ctx := context.Background() | 201 ctx := context.Background() |
| 117 db, conn := sqlmock.NewMockDB() | 202 db, conn := sqlmock.NewMockDB() |
| 118 ctx = UseDB(ctx, db) | 203 ctx = UseDB(ctx, db) |
| 119 | 204 |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 []driver.Value{ | 389 []driver.Value{ |
| 305 "site0", | 390 "site0", |
| 306 "0x01020314", | 391 "0x01020314", |
| 307 "0x01020304"}) | 392 "0x01020304"}) |
| 308 | 393 |
| 309 query, err = conn.PopOldestQuery() | 394 query, err = conn.PopOldestQuery() |
| 310 So(err, ShouldNotBeNil) | 395 So(err, ShouldNotBeNil) |
| 311 }) | 396 }) |
| 312 }) | 397 }) |
| 313 } | 398 } |
| OLD | NEW |