10 "github.com/anacrolix/missinggo"
11 "github.com/bradfitz/iter"
15 # List distributed by iblocklist.com
19 something:more detail:86.59.95.195-86.59.95.195`
21 func TestIPv4RangeLen(t *testing.T) {
22 ranges, _ := sampleRanges(t)
23 for i := range iter.N(3) {
24 if len(ranges[i].First) != 4 {
27 if len(ranges[i].Last) != 4 {
33 func sampleRanges(tb testing.TB) (ranges []Range, err error) {
34 scanner := bufio.NewScanner(strings.NewReader(sample))
36 r, ok, err := ParseBlocklistP2PLine(scanner.Bytes())
41 ranges = append(ranges, r)
48 func BenchmarkParseP2pBlocklist(b *testing.B) {
49 for i := 0; i < b.N; i++ {
54 func connRemoteAddrIP(network, laddr string, dialHost string) net.IP {
55 l, err := net.Listen(network, laddr)
60 c, err := net.Dial(network, net.JoinHostPort(dialHost, fmt.Sprintf("%d", missinggo.AddrPort(l.Addr()))))
71 ret := missinggo.AddrIP(c.RemoteAddr())
75 func TestBadIP(t *testing.T) {
77 if iplist.Lookup(net.IP(make([]byte, 4))) != nil {
80 if iplist.Lookup(net.IP(make([]byte, 16))) != nil {
83 if iplist.Lookup(nil) == nil {
86 if iplist.Lookup(net.IP(make([]byte, 5))) == nil {
91 func TestSimple(t *testing.T) {
92 ranges, err := sampleRanges(t)
97 t.Fatalf("expected 3 ranges but got %d", len(ranges))
100 for _, _case := range []struct {
105 {"1.2.3.255", false, ""},
106 {"1.2.8.0", true, "b"},
107 {"1.2.4.255", true, "a"},
108 // Try to roll over to the next octet on the parse. Note the final
109 // octet is overbounds. In the next case.
110 {"1.2.7.256", true, "unsupported IP: <nil>"},
111 {"1.2.8.254", true, "b"},
113 ip := net.ParseIP(_case.IP)
114 r := iplist.Lookup(ip)
117 t.Fatalf("got hit when none was expected: %s", ip)
122 t.Fatalf("expected hit for %q", _case.IP)
124 if r.Description != _case.Desc {
125 t.Fatalf("%q != %q", r.Description, _case.Desc)