|
|
@ -75,6 +75,56 @@ func getVal() []interface{} {
|
|
|
|
{2: 3}: true,
|
|
|
|
{2: 3}: true,
|
|
|
|
{3: 4}: false,
|
|
|
|
{3: 4}: false,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
&tailcfg.MapResponse{
|
|
|
|
|
|
|
|
DERPMap: &tailcfg.DERPMap{
|
|
|
|
|
|
|
|
Regions: map[int]*tailcfg.DERPRegion{
|
|
|
|
|
|
|
|
1: &tailcfg.DERPRegion{
|
|
|
|
|
|
|
|
RegionID: 1,
|
|
|
|
|
|
|
|
RegionCode: "foo",
|
|
|
|
|
|
|
|
Nodes: []*tailcfg.DERPNode{
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Name: "n1",
|
|
|
|
|
|
|
|
RegionID: 1,
|
|
|
|
|
|
|
|
HostName: "foo.com",
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Name: "n2",
|
|
|
|
|
|
|
|
RegionID: 1,
|
|
|
|
|
|
|
|
HostName: "bar.com",
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
DNSConfig: &tailcfg.DNSConfig{
|
|
|
|
|
|
|
|
Resolvers: []tailcfg.DNSResolver{
|
|
|
|
|
|
|
|
{Addr: "10.0.0.1"},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
PacketFilter: []tailcfg.FilterRule{
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
SrcIPs: []string{"1.2.3.4"},
|
|
|
|
|
|
|
|
DstPorts: []tailcfg.NetPortRange{
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
IP: "1.2.3.4/32",
|
|
|
|
|
|
|
|
Ports: tailcfg.PortRange{1, 2},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
Peers: []*tailcfg.Node{
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
ID: 1,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
ID: 2,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
UserProfiles: []tailcfg.UserProfile{
|
|
|
|
|
|
|
|
{ID: 1, LoginName: "foo@bar.com"},
|
|
|
|
|
|
|
|
{ID: 2, LoginName: "bar@foo.com"},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -139,6 +189,15 @@ func BenchmarkHashMapAcyclic(b *testing.B) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func BenchmarkTailcfgNode(b *testing.B) {
|
|
|
|
|
|
|
|
b.ReportAllocs()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
node := new(tailcfg.Node)
|
|
|
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
|
|
|
|
sink = Hash(node)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func TestExhaustive(t *testing.T) {
|
|
|
|
func TestExhaustive(t *testing.T) {
|
|
|
|
seen := make(map[[sha256.Size]byte]bool)
|
|
|
|
seen := make(map[[sha256.Size]byte]bool)
|
|
|
|
for i := 0; i < 100000; i++ {
|
|
|
|
for i := 0; i < 100000; i++ {
|
|
|
|