7
7
"math/big"
8
8
"math/rand"
9
9
"net"
10
+ "path/filepath"
10
11
"testing"
11
12
"time"
12
13
@@ -17,7 +18,7 @@ import (
17
18
func TestReader (t * testing.T ) {
18
19
for _ , recordSize := range []uint {24 , 28 , 32 } {
19
20
for _ , ipVersion := range []uint {4 , 6 } {
20
- fileName := fmt .Sprintf ("test-data/test-data/ MaxMind-DB-test-ipv%d-%d.mmdb" , ipVersion , recordSize )
21
+ fileName := fmt .Sprintf (testFile ( " MaxMind-DB-test-ipv%d-%d.mmdb") , ipVersion , recordSize )
21
22
reader , err := Open (fileName )
22
23
require .NoError (t , err , "unexpected error while opening database: %v" , err )
23
24
checkMetadata (t , reader , ipVersion , recordSize )
@@ -34,7 +35,7 @@ func TestReader(t *testing.T) {
34
35
func TestReaderBytes (t * testing.T ) {
35
36
for _ , recordSize := range []uint {24 , 28 , 32 } {
36
37
for _ , ipVersion := range []uint {4 , 6 } {
37
- fileName := fmt .Sprintf ("test-data/test-data/ MaxMind-DB-test-ipv%d-%d.mmdb" , ipVersion , recordSize )
38
+ fileName := fmt .Sprintf (testFile ( " MaxMind-DB-test-ipv%d-%d.mmdb") , ipVersion , recordSize )
38
39
bytes , _ := ioutil .ReadFile (fileName )
39
40
reader , err := FromBytes (bytes )
40
41
require .NoError (t , err , "unexpected error while opening bytes: %v" , err )
@@ -51,7 +52,7 @@ func TestReaderBytes(t *testing.T) {
51
52
}
52
53
53
54
func TestDecodingToInterface (t * testing.T ) {
54
- reader , err := Open ("test-data/test-data/ MaxMind-DB-test-decoder.mmdb" )
55
+ reader , err := Open (testFile ( " MaxMind-DB-test-decoder.mmdb") )
55
56
require .NoError (t , err , "unexpected error while opening database: %v" , err )
56
57
57
58
var recordInterface interface {}
@@ -98,7 +99,7 @@ type TestType struct {
98
99
}
99
100
100
101
func TestDecoder (t * testing.T ) {
101
- reader , err := Open ("test-data/test-data/ MaxMind-DB-test-decoder.mmdb" )
102
+ reader , err := Open (testFile ( " MaxMind-DB-test-decoder.mmdb") )
102
103
require .NoError (t , err )
103
104
104
105
verify := func (result TestType ) {
@@ -156,7 +157,7 @@ func (t *TestType) method() bool {
156
157
func TestStructInterface (t * testing.T ) {
157
158
var result TestInterface = & TestType {}
158
159
159
- reader , err := Open ("test-data/test-data/ MaxMind-DB-test-decoder.mmdb" )
160
+ reader , err := Open (testFile ( " MaxMind-DB-test-decoder.mmdb") )
160
161
require .NoError (t , err )
161
162
162
163
require .NoError (t , reader .Lookup (net .ParseIP ("::1.1.1.0" ), & result ))
@@ -167,7 +168,7 @@ func TestStructInterface(t *testing.T) {
167
168
func TestNonEmptyNilInterface (t * testing.T ) {
168
169
var result TestInterface
169
170
170
- reader , err := Open ("test-data/test-data/ MaxMind-DB-test-decoder.mmdb" )
171
+ reader , err := Open (testFile ( " MaxMind-DB-test-decoder.mmdb") )
171
172
require .NoError (t , err )
172
173
173
174
err = reader .Lookup (net .ParseIP ("::1.1.1.0" ), & result )
@@ -186,7 +187,7 @@ func TestEmbeddedStructAsInterface(t *testing.T) {
186
187
var city City
187
188
var result interface {} = city .Traits
188
189
189
- db , err := Open ("test-data/test-data/ GeoIP2-ISP-Test.mmdb" )
190
+ db , err := Open (testFile ( " GeoIP2-ISP-Test.mmdb") )
190
191
require .NoError (t , err )
191
192
192
193
assert .NoError (t , db .Lookup (net .ParseIP ("1.128.0.0" ), & result ))
@@ -210,7 +211,7 @@ func TesValueTypeInterface(t *testing.T) {
210
211
var result ValueTypeTestType
211
212
result .Boolean = Bool (false )
212
213
213
- reader , err := Open ("test-data/test-data/ MaxMind-DB-test-decoder.mmdb" )
214
+ reader , err := Open (testFile ( " MaxMind-DB-test-decoder.mmdb") )
214
215
require .NoError (t , err )
215
216
require .NoError (t , reader .Lookup (net .ParseIP ("::1.1.1.0" ), & result ))
216
217
@@ -251,7 +252,7 @@ type TestPointerType struct {
251
252
}
252
253
253
254
func TestComplexStructWithNestingAndPointer (t * testing.T ) {
254
- reader , err := Open ("test-data/test-data/ MaxMind-DB-test-decoder.mmdb" )
255
+ reader , err := Open (testFile ( " MaxMind-DB-test-decoder.mmdb") )
255
256
assert .NoError (t , err )
256
257
257
258
var result TestPointerType
@@ -282,7 +283,7 @@ func TestComplexStructWithNestingAndPointer(t *testing.T) {
282
283
}
283
284
284
285
func TestNestedOffsetDecode (t * testing.T ) {
285
- db , err := Open ("test-data/test-data/ GeoIP2-City-Test.mmdb" )
286
+ db , err := Open (testFile ( " GeoIP2-City-Test.mmdb") )
286
287
require .NoError (t , err )
287
288
288
289
off , err := db .LookupOffset (net .ParseIP ("81.2.69.142" ))
@@ -321,7 +322,7 @@ func TestNestedOffsetDecode(t *testing.T) {
321
322
}
322
323
323
324
func TestDecodingUint16IntoInt (t * testing.T ) {
324
- reader , err := Open ("test-data/test-data/ MaxMind-DB-test-decoder.mmdb" )
325
+ reader , err := Open (testFile ( " MaxMind-DB-test-decoder.mmdb") )
325
326
require .NoError (t , err , "unexpected error while opening database: %v" , err )
326
327
327
328
var result struct {
@@ -334,7 +335,7 @@ func TestDecodingUint16IntoInt(t *testing.T) {
334
335
}
335
336
336
337
func TestIpv6inIpv4 (t * testing.T ) {
337
- reader , err := Open ("test-data/test-data/ MaxMind-DB-test-ipv4-24.mmdb" )
338
+ reader , err := Open (testFile ( " MaxMind-DB-test-ipv4-24.mmdb") )
338
339
require .NoError (t , err , "unexpected error while opening database: %v" , err )
339
340
340
341
var result TestType
@@ -349,7 +350,7 @@ func TestIpv6inIpv4(t *testing.T) {
349
350
}
350
351
351
352
func TestBrokenDoubleDatabase (t * testing.T ) {
352
- reader , err := Open ("test-data/test-data/ GeoIP2-City-Test-Broken-Double-Format.mmdb" )
353
+ reader , err := Open (testFile ( " GeoIP2-City-Test-Broken-Double-Format.mmdb") )
353
354
require .NoError (t , err , "unexpected error while opening database: %v" , err )
354
355
355
356
var result interface {}
@@ -361,7 +362,7 @@ func TestBrokenDoubleDatabase(t *testing.T) {
361
362
}
362
363
363
364
func TestInvalidNodeCountDatabase (t * testing.T ) {
364
- _ , err := Open ("test-data/test-data/ GeoIP2-City-Test-Invalid-Node-Count.mmdb" )
365
+ _ , err := Open (testFile ( " GeoIP2-City-Test-Invalid-Node-Count.mmdb") )
365
366
366
367
expected := newInvalidDatabaseError ("the MaxMind DB contains invalid metadata" )
367
368
assert .Equal (t , err , expected )
@@ -380,7 +381,7 @@ func TestNonDatabase(t *testing.T) {
380
381
}
381
382
382
383
func TestDecodingToNonPointer (t * testing.T ) {
383
- reader , _ := Open ("test-data/test-data/ MaxMind-DB-test-decoder.mmdb" )
384
+ reader , _ := Open (testFile ( " MaxMind-DB-test-decoder.mmdb") )
384
385
385
386
var recordInterface interface {}
386
387
err := reader .Lookup (net .ParseIP ("::1.1.1.0" ), recordInterface )
@@ -389,7 +390,7 @@ func TestDecodingToNonPointer(t *testing.T) {
389
390
}
390
391
391
392
func TestNilLookup (t * testing.T ) {
392
- reader , _ := Open ("test-data/test-data/ MaxMind-DB-test-decoder.mmdb" )
393
+ reader , _ := Open (testFile ( " MaxMind-DB-test-decoder.mmdb") )
393
394
394
395
var recordInterface interface {}
395
396
err := reader .Lookup (nil , recordInterface )
@@ -398,7 +399,7 @@ func TestNilLookup(t *testing.T) {
398
399
}
399
400
400
401
func TestUsingClosedDatabase (t * testing.T ) {
401
- reader , _ := Open ("test-data/test-data/ MaxMind-DB-test-decoder.mmdb" )
402
+ reader , _ := Open (testFile ( " MaxMind-DB-test-decoder.mmdb") )
402
403
reader .Close ()
403
404
404
405
var recordInterface interface {}
@@ -565,3 +566,7 @@ func randomIPv4Address(r *rand.Rand, ip []byte) {
565
566
ip [2 ] = byte (num >> 8 )
566
567
ip [3 ] = byte (num )
567
568
}
569
+
570
+ func testFile (file string ) string {
571
+ return filepath .Join ("test-data/test-data" , file )
572
+ }
0 commit comments