func TestAddLocalAddress(t *testing.T) { var tests = []struct { address btcwire.NetAddress valid bool }{ { btcwire.NetAddress{IP: net.ParseIP("192.168.0.100")}, false, }, { btcwire.NetAddress{IP: net.ParseIP("204.124.1.1")}, true, }, { btcwire.NetAddress{IP: net.ParseIP("::1")}, false, }, { btcwire.NetAddress{IP: net.ParseIP("fe80::1")}, false, }, { btcwire.NetAddress{IP: net.ParseIP("2620:100::1")}, true, }, } amgr := addrmgr.New("", nil) for x, test := range tests { result := amgr.AddLocalAddress(&test.address, addrmgr.InterfacePrio) if result == nil && !test.valid { t.Errorf("TestAddLocalAddress test #%d failed: %s should have "+ "been accepted", x, test.address.IP) continue } if result != nil && test.valid { t.Errorf("TestAddLocalAddress test #%d failed: %s should not have "+ "been accepted", test.address.IP) continue } } }
func TestGetBestLocalAddress(t *testing.T) { localAddrs := []btcwire.NetAddress{ {IP: net.ParseIP("192.168.0.100")}, {IP: net.ParseIP("::1")}, {IP: net.ParseIP("fe80::1")}, {IP: net.ParseIP("2001:470::1")}, } var tests = []struct { remoteAddr btcwire.NetAddress want1 btcwire.NetAddress want2 btcwire.NetAddress want3 btcwire.NetAddress }{ { // Remote connection from public IPv4 btcwire.NetAddress{IP: net.ParseIP("204.124.8.1")}, btcwire.NetAddress{IP: net.IPv4zero}, btcwire.NetAddress{IP: net.ParseIP("204.124.8.100")}, btcwire.NetAddress{IP: net.ParseIP("fd87:d87e:eb43:25::1")}, }, { // Remote connection from private IPv4 btcwire.NetAddress{IP: net.ParseIP("172.16.0.254")}, btcwire.NetAddress{IP: net.IPv4zero}, btcwire.NetAddress{IP: net.IPv4zero}, btcwire.NetAddress{IP: net.IPv4zero}, }, { // Remote connection from public IPv6 btcwire.NetAddress{IP: net.ParseIP("2602:100:abcd::102")}, btcwire.NetAddress{IP: net.ParseIP("2001:470::1")}, btcwire.NetAddress{IP: net.ParseIP("2001:470::1")}, btcwire.NetAddress{IP: net.ParseIP("2001:470::1")}, }, /* XXX { // Remote connection from Tor btcwire.NetAddress{IP: net.ParseIP("fd87:d87e:eb43::100")}, btcwire.NetAddress{IP: net.IPv4zero}, btcwire.NetAddress{IP: net.ParseIP("204.124.8.100")}, btcwire.NetAddress{IP: net.ParseIP("fd87:d87e:eb43:25::1")}, }, */ } amgr := addrmgr.New("", nil) for _, localAddr := range localAddrs { amgr.AddLocalAddress(&localAddr, addrmgr.InterfacePrio) } // Test against want1 for x, test := range tests { got := amgr.GetBestLocalAddress(&test.remoteAddr) if !test.want1.IP.Equal(got.IP) { t.Errorf("TestGetBestLocalAddress test1 #%d failed for remote address %s: want %s got %s", x, test.remoteAddr.IP, test.want1.IP, got.IP) continue } } // Add a public IP to the list of local addresses. localAddr := btcwire.NetAddress{IP: net.ParseIP("204.124.8.100")} amgr.AddLocalAddress(&localAddr, addrmgr.InterfacePrio) // Test against want2 for x, test := range tests { got := amgr.GetBestLocalAddress(&test.remoteAddr) if !test.want2.IP.Equal(got.IP) { t.Errorf("TestGetBestLocalAddress test2 #%d failed for remote address %s: want %s got %s", x, test.remoteAddr.IP, test.want2.IP, got.IP) continue } } /* // Add a tor generated IP address localAddr = btcwire.NetAddress{IP: net.ParseIP("fd87:d87e:eb43:25::1")} amgr.AddLocalAddress(&localAddr, addrmgr.ManualPrio) // Test against want3 for x, test := range tests { got := amgr.GetBestLocalAddress(&test.remoteAddr) if !test.want3.IP.Equal(got.IP) { t.Errorf("TestGetBestLocalAddress test3 #%d failed for remote address %s: want %s got %s", x, test.remoteAddr.IP, test.want3.IP, got.IP) continue } } */ }
func TestGetAddress(t *testing.T) { n := addrmgr.New("testdir", lookupFunc) if rv := n.GetAddress("any", 10); rv != nil { t.Errorf("GetAddress failed: got: %v want: %v\n", rv, nil) } }