@@ -100,95 +100,95 @@ func TestLookupNetwork(t *testing.T) {
100
100
}
101
101
102
102
tests := []struct {
103
- IP netip.Addr
104
- DBFile string
105
- ExpectedCIDR string
106
- ExpectedRecord any
107
- ExpectedOK bool
103
+ IP netip.Addr
104
+ DBFile string
105
+ ExpectedNetwork string
106
+ ExpectedRecord any
107
+ ExpectedFound bool
108
108
}{
109
109
{
110
- IP : netip .MustParseAddr ("1.1.1.1" ),
111
- DBFile : "MaxMind-DB-test-ipv6-32.mmdb" ,
112
- ExpectedCIDR : "1.0.0.0/8" ,
113
- ExpectedRecord : nil ,
114
- ExpectedOK : false ,
110
+ IP : netip .MustParseAddr ("1.1.1.1" ),
111
+ DBFile : "MaxMind-DB-test-ipv6-32.mmdb" ,
112
+ ExpectedNetwork : "1.0.0.0/8" ,
113
+ ExpectedRecord : nil ,
114
+ ExpectedFound : false ,
115
115
},
116
116
{
117
- IP : netip .MustParseAddr ("::1:ffff:ffff" ),
118
- DBFile : "MaxMind-DB-test-ipv6-24.mmdb" ,
119
- ExpectedCIDR : "::1:ffff:ffff/128" ,
120
- ExpectedRecord : map [string ]any {"ip" : "::1:ffff:ffff" },
121
- ExpectedOK : true ,
117
+ IP : netip .MustParseAddr ("::1:ffff:ffff" ),
118
+ DBFile : "MaxMind-DB-test-ipv6-24.mmdb" ,
119
+ ExpectedNetwork : "::1:ffff:ffff/128" ,
120
+ ExpectedRecord : map [string ]any {"ip" : "::1:ffff:ffff" },
121
+ ExpectedFound : true ,
122
122
},
123
123
{
124
- IP : netip .MustParseAddr ("::2:0:1" ),
125
- DBFile : "MaxMind-DB-test-ipv6-24.mmdb" ,
126
- ExpectedCIDR : "::2:0:0/122" ,
127
- ExpectedRecord : map [string ]any {"ip" : "::2:0:0" },
128
- ExpectedOK : true ,
124
+ IP : netip .MustParseAddr ("::2:0:1" ),
125
+ DBFile : "MaxMind-DB-test-ipv6-24.mmdb" ,
126
+ ExpectedNetwork : "::2:0:0/122" ,
127
+ ExpectedRecord : map [string ]any {"ip" : "::2:0:0" },
128
+ ExpectedFound : true ,
129
129
},
130
130
{
131
- IP : netip .MustParseAddr ("1.1.1.1" ),
132
- DBFile : "MaxMind-DB-test-ipv4-24.mmdb" ,
133
- ExpectedCIDR : "1.1.1.1/32" ,
134
- ExpectedRecord : map [string ]any {"ip" : "1.1.1.1" },
135
- ExpectedOK : true ,
131
+ IP : netip .MustParseAddr ("1.1.1.1" ),
132
+ DBFile : "MaxMind-DB-test-ipv4-24.mmdb" ,
133
+ ExpectedNetwork : "1.1.1.1/32" ,
134
+ ExpectedRecord : map [string ]any {"ip" : "1.1.1.1" },
135
+ ExpectedFound : true ,
136
136
},
137
137
{
138
- IP : netip .MustParseAddr ("1.1.1.3" ),
139
- DBFile : "MaxMind-DB-test-ipv4-24.mmdb" ,
140
- ExpectedCIDR : "1.1.1.2/31" ,
141
- ExpectedRecord : map [string ]any {"ip" : "1.1.1.2" },
142
- ExpectedOK : true ,
138
+ IP : netip .MustParseAddr ("1.1.1.3" ),
139
+ DBFile : "MaxMind-DB-test-ipv4-24.mmdb" ,
140
+ ExpectedNetwork : "1.1.1.2/31" ,
141
+ ExpectedRecord : map [string ]any {"ip" : "1.1.1.2" },
142
+ ExpectedFound : true ,
143
143
},
144
144
{
145
- IP : netip .MustParseAddr ("1.1.1.3" ),
146
- DBFile : "MaxMind-DB-test-decoder.mmdb" ,
147
- ExpectedCIDR : "1.1.1.0/24" ,
148
- ExpectedRecord : decoderRecord ,
149
- ExpectedOK : true ,
145
+ IP : netip .MustParseAddr ("1.1.1.3" ),
146
+ DBFile : "MaxMind-DB-test-decoder.mmdb" ,
147
+ ExpectedNetwork : "1.1.1.0/24" ,
148
+ ExpectedRecord : decoderRecord ,
149
+ ExpectedFound : true ,
150
150
},
151
151
{
152
- IP : netip .MustParseAddr ("::ffff:1.1.1.128" ),
153
- DBFile : "MaxMind-DB-test-decoder.mmdb" ,
154
- ExpectedCIDR : "::ffff:1.1.1.0/120" ,
155
- ExpectedRecord : decoderRecord ,
156
- ExpectedOK : true ,
152
+ IP : netip .MustParseAddr ("::ffff:1.1.1.128" ),
153
+ DBFile : "MaxMind-DB-test-decoder.mmdb" ,
154
+ ExpectedNetwork : "::ffff:1.1.1.0/120" ,
155
+ ExpectedRecord : decoderRecord ,
156
+ ExpectedFound : true ,
157
157
},
158
158
{
159
- IP : netip .MustParseAddr ("::1.1.1.128" ),
160
- DBFile : "MaxMind-DB-test-decoder.mmdb" ,
161
- ExpectedCIDR : "::101:100/120" ,
162
- ExpectedRecord : decoderRecord ,
163
- ExpectedOK : true ,
159
+ IP : netip .MustParseAddr ("::1.1.1.128" ),
160
+ DBFile : "MaxMind-DB-test-decoder.mmdb" ,
161
+ ExpectedNetwork : "::101:100/120" ,
162
+ ExpectedRecord : decoderRecord ,
163
+ ExpectedFound : true ,
164
164
},
165
165
{
166
- IP : netip .MustParseAddr ("200.0.2.1" ),
167
- DBFile : "MaxMind-DB-no-ipv4-search-tree.mmdb" ,
168
- ExpectedCIDR : "::/64" ,
169
- ExpectedRecord : "::0/64" ,
170
- ExpectedOK : true ,
166
+ IP : netip .MustParseAddr ("200.0.2.1" ),
167
+ DBFile : "MaxMind-DB-no-ipv4-search-tree.mmdb" ,
168
+ ExpectedNetwork : "::/64" ,
169
+ ExpectedRecord : "::0/64" ,
170
+ ExpectedFound : true ,
171
171
},
172
172
{
173
- IP : netip .MustParseAddr ("::200.0.2.1" ),
174
- DBFile : "MaxMind-DB-no-ipv4-search-tree.mmdb" ,
175
- ExpectedCIDR : "::/64" ,
176
- ExpectedRecord : "::0/64" ,
177
- ExpectedOK : true ,
173
+ IP : netip .MustParseAddr ("::200.0.2.1" ),
174
+ DBFile : "MaxMind-DB-no-ipv4-search-tree.mmdb" ,
175
+ ExpectedNetwork : "::/64" ,
176
+ ExpectedRecord : "::0/64" ,
177
+ ExpectedFound : true ,
178
178
},
179
179
{
180
- IP : netip .MustParseAddr ("0:0:0:0:ffff:ffff:ffff:ffff" ),
181
- DBFile : "MaxMind-DB-no-ipv4-search-tree.mmdb" ,
182
- ExpectedCIDR : "::/64" ,
183
- ExpectedRecord : "::0/64" ,
184
- ExpectedOK : true ,
180
+ IP : netip .MustParseAddr ("0:0:0:0:ffff:ffff:ffff:ffff" ),
181
+ DBFile : "MaxMind-DB-no-ipv4-search-tree.mmdb" ,
182
+ ExpectedNetwork : "::/64" ,
183
+ ExpectedRecord : "::0/64" ,
184
+ ExpectedFound : true ,
185
185
},
186
186
{
187
- IP : netip .MustParseAddr ("ef00::" ),
188
- DBFile : "MaxMind-DB-no-ipv4-search-tree.mmdb" ,
189
- ExpectedCIDR : "8000::/1" ,
190
- ExpectedRecord : nil ,
191
- ExpectedOK : false ,
187
+ IP : netip .MustParseAddr ("ef00::" ),
188
+ DBFile : "MaxMind-DB-no-ipv4-search-tree.mmdb" ,
189
+ ExpectedNetwork : "8000::/1" ,
190
+ ExpectedRecord : nil ,
191
+ ExpectedFound : false ,
192
192
},
193
193
}
194
194
@@ -198,10 +198,12 @@ func TestLookupNetwork(t *testing.T) {
198
198
reader , err := Open (testFile (test .DBFile ))
199
199
require .NoError (t , err )
200
200
201
- network , ok , err := reader .LookupNetwork (test .IP , & record )
202
- require .NoError (t , err )
203
- assert .Equal (t , test .ExpectedOK , ok )
204
- assert .Equal (t , test .ExpectedCIDR , network .String ())
201
+ result := reader .Lookup (test .IP )
202
+ require .NoError (t , result .Err ())
203
+ assert .Equal (t , test .ExpectedFound , result .Found ())
204
+ assert .Equal (t , test .ExpectedNetwork , result .Network ().String ())
205
+
206
+ require .NoError (t , result .Decode (& record ))
205
207
assert .Equal (t , test .ExpectedRecord , record )
206
208
})
207
209
}
@@ -819,21 +821,23 @@ func BenchmarkInterfaceLookup(b *testing.B) {
819
821
require .NoError (b , db .Close (), "error on close" )
820
822
}
821
823
822
- func BenchmarkInterfaceLookupNetwork (b * testing.B ) {
824
+ func BenchmarkLookupNetwork (b * testing.B ) {
823
825
db , err := Open ("GeoLite2-City.mmdb" )
824
826
require .NoError (b , err )
825
827
826
828
//nolint:gosec // this is a test
827
829
r := rand .New (rand .NewSource (time .Now ().UnixNano ()))
828
- var result any
829
830
830
831
s := make (net.IP , 4 )
831
832
for i := 0 ; i < b .N ; i ++ {
832
833
ip := randomIPv4Address (r , s )
833
- _ , _ , err = db .LookupNetwork (ip , & result )
834
- if err != nil {
834
+ res : = db .Lookup (ip )
835
+ if err := res . Err (); err != nil {
835
836
b .Error (err )
836
837
}
838
+ if ! res .Network ().IsValid () {
839
+ b .Fatalf ("invalid network for %s" , ip )
840
+ }
837
841
}
838
842
require .NoError (b , db .Close (), "error on close" )
839
843
}
@@ -907,19 +911,18 @@ func BenchmarkCityLookup(b *testing.B) {
907
911
require .NoError (b , db .Close (), "error on close" )
908
912
}
909
913
910
- func BenchmarkCityLookupNetwork (b * testing.B ) {
914
+ func BenchmarkCityLookupOnly (b * testing.B ) {
911
915
db , err := Open ("GeoLite2-City.mmdb" )
912
916
require .NoError (b , err )
913
917
914
918
//nolint:gosec // this is a test
915
919
r := rand .New (rand .NewSource (time .Now ().UnixNano ()))
916
- var result fullCity
917
920
918
921
s := make (net.IP , 4 )
919
922
for i := 0 ; i < b .N ; i ++ {
920
923
ip := randomIPv4Address (r , s )
921
- _ , _ , err = db .LookupNetwork (ip , & result )
922
- if err != nil {
924
+ result : = db .Lookup (ip )
925
+ if err := result . Err (); err != nil {
923
926
b .Error (err )
924
927
}
925
928
}
0 commit comments