mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 21:15:39 +00:00
84adfa1ba3
We had a mix of 0-based and 1-based nodes and MACs in logs. Updates #13038 Change-Id: I36d1b00f7f94b37b4ae2cd439bcdc5dbee6eda4d Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package vnet
|
|
|
|
import "testing"
|
|
|
|
func TestConfig(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
setup func(*Config)
|
|
wantErr string
|
|
}{
|
|
{
|
|
name: "simple",
|
|
setup: func(c *Config) {
|
|
c.AddNode(c.AddNetwork("2.1.1.1", "192.168.1.1/24", EasyNAT, NATPMP))
|
|
c.AddNode(c.AddNetwork("2.2.2.2", "10.2.0.1/16", HardNAT))
|
|
},
|
|
},
|
|
{
|
|
name: "indirect",
|
|
setup: func(c *Config) {
|
|
n1 := c.AddNode(c.AddNetwork("2.1.1.1", "192.168.1.1/24", HardNAT))
|
|
n1.Network().AddService(NATPMP)
|
|
c.AddNode(c.AddNetwork("2.2.2.2", "10.2.0.1/16", NAT("hard")))
|
|
},
|
|
},
|
|
{
|
|
name: "multi-node-in-net",
|
|
setup: func(c *Config) {
|
|
net1 := c.AddNetwork("2.1.1.1", "192.168.1.1/24")
|
|
c.AddNode(net1)
|
|
c.AddNode(net1)
|
|
},
|
|
},
|
|
{
|
|
name: "dup-wan-ip",
|
|
setup: func(c *Config) {
|
|
c.AddNetwork("2.1.1.1", "192.168.1.1/24")
|
|
c.AddNetwork("2.1.1.1", "10.2.0.1/16")
|
|
},
|
|
wantErr: "two networks have the same WAN IP 2.1.1.1; Anycast not (yet?) supported",
|
|
},
|
|
{
|
|
name: "one-to-one-nat-with-multiple-nodes",
|
|
setup: func(c *Config) {
|
|
net1 := c.AddNetwork("2.1.1.1", "192.168.1.1/24", One2OneNAT)
|
|
c.AddNode(net1)
|
|
c.AddNode(net1)
|
|
},
|
|
wantErr: "error creating NAT type \"one2one\" for network 2.1.1.1: can't use one2one NAT type on networks other than single-node networks",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
var c Config
|
|
tt.setup(&c)
|
|
_, err := New(&c)
|
|
if err == nil {
|
|
if tt.wantErr == "" {
|
|
return
|
|
}
|
|
t.Fatalf("got success; wanted error %q", tt.wantErr)
|
|
}
|
|
if err.Error() != tt.wantErr {
|
|
t.Fatalf("got error %q; want %q", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestNodeString(t *testing.T) {
|
|
if g, w := (&Node{num: 1}).String(), "node1"; g != w {
|
|
t.Errorf("got %q; want %q", g, w)
|
|
}
|
|
if g, w := (&node{num: 1}).String(), "node1"; g != w {
|
|
t.Errorf("got %q; want %q", g, w)
|
|
}
|
|
}
|