tstest/integration: remove t param in testNode methods
testNodes have a reference to a testing.TB via their env. Use it instead of making the caller pass theirs. We did this in some methods but not others; finish the job. This simplifies the call sites. Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
This commit is contained in:
parent
93ae11105d
commit
681d4897cc
|
@ -68,12 +68,12 @@ func TestOneNodeUpNoAuth(t *testing.T) {
|
|||
env := newTestEnv(t)
|
||||
n1 := newTestNode(t, env)
|
||||
|
||||
d1 := n1.StartDaemon(t)
|
||||
n1.AwaitResponding(t)
|
||||
d1 := n1.StartDaemon()
|
||||
n1.AwaitResponding()
|
||||
n1.MustUp()
|
||||
|
||||
t.Logf("Got IP: %v", n1.AwaitIP(t))
|
||||
n1.AwaitRunning(t)
|
||||
t.Logf("Got IP: %v", n1.AwaitIP())
|
||||
n1.AwaitRunning()
|
||||
|
||||
d1.MustCleanShutdown(t)
|
||||
|
||||
|
@ -85,10 +85,10 @@ func TestOneNodeExpiredKey(t *testing.T) {
|
|||
env := newTestEnv(t)
|
||||
n1 := newTestNode(t, env)
|
||||
|
||||
d1 := n1.StartDaemon(t)
|
||||
n1.AwaitResponding(t)
|
||||
d1 := n1.StartDaemon()
|
||||
n1.AwaitResponding()
|
||||
n1.MustUp()
|
||||
n1.AwaitRunning(t)
|
||||
n1.AwaitRunning()
|
||||
|
||||
nodes := env.Control.AllNodes()
|
||||
if len(nodes) != 1 {
|
||||
|
@ -103,7 +103,7 @@ func TestOneNodeExpiredKey(t *testing.T) {
|
|||
cancel()
|
||||
|
||||
env.Control.SetExpireAllNodes(true)
|
||||
n1.AwaitNeedsLogin(t)
|
||||
n1.AwaitNeedsLogin()
|
||||
ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second)
|
||||
if err := env.Control.AwaitNodeInMapRequest(ctx, nodeKey); err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -111,7 +111,7 @@ func TestOneNodeExpiredKey(t *testing.T) {
|
|||
cancel()
|
||||
|
||||
env.Control.SetExpireAllNodes(false)
|
||||
n1.AwaitRunning(t)
|
||||
n1.AwaitRunning()
|
||||
|
||||
d1.MustCleanShutdown(t)
|
||||
}
|
||||
|
@ -152,14 +152,14 @@ func TestStateSavedOnStart(t *testing.T) {
|
|||
env := newTestEnv(t)
|
||||
n1 := newTestNode(t, env)
|
||||
|
||||
d1 := n1.StartDaemon(t)
|
||||
n1.AwaitResponding(t)
|
||||
d1 := n1.StartDaemon()
|
||||
n1.AwaitResponding()
|
||||
n1.MustUp()
|
||||
|
||||
t.Logf("Got IP: %v", n1.AwaitIP(t))
|
||||
n1.AwaitRunning(t)
|
||||
t.Logf("Got IP: %v", n1.AwaitIP())
|
||||
n1.AwaitRunning()
|
||||
|
||||
p1 := n1.diskPrefs(t)
|
||||
p1 := n1.diskPrefs()
|
||||
t.Logf("Prefs1: %v", p1.Pretty())
|
||||
|
||||
// Bring it down, to prevent an EditPrefs call in the
|
||||
|
@ -172,7 +172,7 @@ func TestStateSavedOnStart(t *testing.T) {
|
|||
t.Fatalf("up: %v", err)
|
||||
}
|
||||
|
||||
p2 := n1.diskPrefs(t)
|
||||
p2 := n1.diskPrefs()
|
||||
if pretty := p1.Pretty(); pretty == p2.Pretty() {
|
||||
t.Errorf("Prefs didn't change on disk after 'up', still: %s", pretty)
|
||||
}
|
||||
|
@ -190,11 +190,11 @@ func TestOneNodeUpAuth(t *testing.T) {
|
|||
}))
|
||||
|
||||
n1 := newTestNode(t, env)
|
||||
d1 := n1.StartDaemon(t)
|
||||
d1 := n1.StartDaemon()
|
||||
|
||||
n1.AwaitListening(t)
|
||||
n1.AwaitListening()
|
||||
|
||||
st := n1.MustStatus(t)
|
||||
st := n1.MustStatus()
|
||||
t.Logf("Status: %s", st.BackendState)
|
||||
|
||||
t.Logf("Running up --login-server=%s ...", env.ControlServer.URL)
|
||||
|
@ -215,9 +215,9 @@ func TestOneNodeUpAuth(t *testing.T) {
|
|||
if err := cmd.Run(); err != nil {
|
||||
t.Fatalf("up: %v", err)
|
||||
}
|
||||
t.Logf("Got IP: %v", n1.AwaitIP(t))
|
||||
t.Logf("Got IP: %v", n1.AwaitIP())
|
||||
|
||||
n1.AwaitRunning(t)
|
||||
n1.AwaitRunning()
|
||||
|
||||
if n := atomic.LoadInt32(&authCountAtomic); n != 1 {
|
||||
t.Errorf("Auth URLs completed = %d; want 1", n)
|
||||
|
@ -233,26 +233,26 @@ func TestTwoNodes(t *testing.T) {
|
|||
// Create two nodes:
|
||||
n1 := newTestNode(t, env)
|
||||
n1SocksAddrCh := n1.socks5AddrChan()
|
||||
d1 := n1.StartDaemon(t)
|
||||
d1 := n1.StartDaemon()
|
||||
|
||||
n2 := newTestNode(t, env)
|
||||
n2SocksAddrCh := n2.socks5AddrChan()
|
||||
d2 := n2.StartDaemon(t)
|
||||
d2 := n2.StartDaemon()
|
||||
|
||||
n1Socks := n1.AwaitSocksAddr(t, n1SocksAddrCh)
|
||||
n2Socks := n1.AwaitSocksAddr(t, n2SocksAddrCh)
|
||||
n1Socks := n1.AwaitSocksAddr(n1SocksAddrCh)
|
||||
n2Socks := n1.AwaitSocksAddr(n2SocksAddrCh)
|
||||
t.Logf("node1 SOCKS5 addr: %v", n1Socks)
|
||||
t.Logf("node2 SOCKS5 addr: %v", n2Socks)
|
||||
|
||||
n1.AwaitListening(t)
|
||||
n2.AwaitListening(t)
|
||||
n1.AwaitListening()
|
||||
n2.AwaitListening()
|
||||
n1.MustUp()
|
||||
n2.MustUp()
|
||||
n1.AwaitRunning(t)
|
||||
n2.AwaitRunning(t)
|
||||
n1.AwaitRunning()
|
||||
n2.AwaitRunning()
|
||||
|
||||
if err := tstest.WaitFor(2*time.Second, func() error {
|
||||
st := n1.MustStatus(t)
|
||||
st := n1.MustStatus()
|
||||
if len(st.Peer) == 0 {
|
||||
return errors.New("no peers")
|
||||
}
|
||||
|
@ -276,11 +276,11 @@ func TestNodeAddressIPFields(t *testing.T) {
|
|||
t.Parallel()
|
||||
env := newTestEnv(t)
|
||||
n1 := newTestNode(t, env)
|
||||
d1 := n1.StartDaemon(t)
|
||||
d1 := n1.StartDaemon()
|
||||
|
||||
n1.AwaitListening(t)
|
||||
n1.AwaitListening()
|
||||
n1.MustUp()
|
||||
n1.AwaitRunning(t)
|
||||
n1.AwaitRunning()
|
||||
|
||||
testNodes := env.Control.AllNodes()
|
||||
|
||||
|
@ -302,11 +302,11 @@ func TestAddPingRequest(t *testing.T) {
|
|||
t.Parallel()
|
||||
env := newTestEnv(t)
|
||||
n1 := newTestNode(t, env)
|
||||
n1.StartDaemon(t)
|
||||
n1.StartDaemon()
|
||||
|
||||
n1.AwaitListening(t)
|
||||
n1.AwaitListening()
|
||||
n1.MustUp()
|
||||
n1.AwaitRunning(t)
|
||||
n1.AwaitRunning()
|
||||
|
||||
gotPing := make(chan bool, 1)
|
||||
waitPing := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
|
@ -357,28 +357,28 @@ func TestNoControlConnWhenDown(t *testing.T) {
|
|||
env := newTestEnv(t)
|
||||
n1 := newTestNode(t, env)
|
||||
|
||||
d1 := n1.StartDaemon(t)
|
||||
n1.AwaitResponding(t)
|
||||
d1 := n1.StartDaemon()
|
||||
n1.AwaitResponding()
|
||||
|
||||
// Come up the first time.
|
||||
n1.MustUp()
|
||||
ip1 := n1.AwaitIP(t)
|
||||
n1.AwaitRunning(t)
|
||||
ip1 := n1.AwaitIP()
|
||||
n1.AwaitRunning()
|
||||
|
||||
// Then bring it down and stop the daemon.
|
||||
n1.MustDown()
|
||||
d1.MustCleanShutdown(t)
|
||||
|
||||
env.LogCatcher.Reset()
|
||||
d2 := n1.StartDaemon(t)
|
||||
n1.AwaitResponding(t)
|
||||
d2 := n1.StartDaemon()
|
||||
n1.AwaitResponding()
|
||||
|
||||
st := n1.MustStatus(t)
|
||||
st := n1.MustStatus()
|
||||
if got, want := st.BackendState, "Stopped"; got != want {
|
||||
t.Fatalf("after restart, state = %q; want %q", got, want)
|
||||
}
|
||||
|
||||
ip2 := n1.AwaitIP(t)
|
||||
ip2 := n1.AwaitIP()
|
||||
if ip1 != ip2 {
|
||||
t.Errorf("IPs different: %q vs %q", ip1, ip2)
|
||||
}
|
||||
|
@ -399,12 +399,12 @@ func TestOneNodeUpWindowsStyle(t *testing.T) {
|
|||
n1 := newTestNode(t, env)
|
||||
n1.upFlagGOOS = "windows"
|
||||
|
||||
d1 := n1.StartDaemonAsIPNGOOS(t, "windows")
|
||||
n1.AwaitResponding(t)
|
||||
d1 := n1.StartDaemonAsIPNGOOS("windows")
|
||||
n1.AwaitResponding()
|
||||
n1.MustUp("--unattended")
|
||||
|
||||
t.Logf("Got IP: %v", n1.AwaitIP(t))
|
||||
n1.AwaitRunning(t)
|
||||
t.Logf("Got IP: %v", n1.AwaitIP())
|
||||
n1.AwaitRunning()
|
||||
|
||||
d1.MustCleanShutdown(t)
|
||||
}
|
||||
|
@ -416,11 +416,11 @@ func TestLogoutRemovesAllPeers(t *testing.T) {
|
|||
nodes := make([]*testNode, 2)
|
||||
for i := range nodes {
|
||||
nodes[i] = newTestNode(t, env)
|
||||
nodes[i].StartDaemon(t)
|
||||
nodes[i].AwaitResponding(t)
|
||||
nodes[i].StartDaemon()
|
||||
nodes[i].AwaitResponding()
|
||||
nodes[i].MustUp()
|
||||
nodes[i].AwaitIP(t)
|
||||
nodes[i].AwaitRunning(t)
|
||||
nodes[i].AwaitIP()
|
||||
nodes[i].AwaitRunning()
|
||||
}
|
||||
|
||||
// Make every node ping every other node.
|
||||
|
@ -433,7 +433,7 @@ func TestLogoutRemovesAllPeers(t *testing.T) {
|
|||
if err := tstest.WaitFor(20*time.Second, func() error {
|
||||
return nodes[i].Ping(nodes[j])
|
||||
}); err != nil {
|
||||
t.Fatalf("ping %v -> %v: %v", nodes[i].AwaitIP(t), nodes[j].AwaitIP(t), err)
|
||||
t.Fatalf("ping %v -> %v: %v", nodes[i].AwaitIP(), nodes[j].AwaitIP(), err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -441,7 +441,7 @@ func TestLogoutRemovesAllPeers(t *testing.T) {
|
|||
// wantNode0PeerCount waits until node[0] status includes exactly want peers.
|
||||
wantNode0PeerCount := func(want int) {
|
||||
if err := tstest.WaitFor(20*time.Second, func() error {
|
||||
s := nodes[0].MustStatus(t)
|
||||
s := nodes[0].MustStatus()
|
||||
if peers := s.Peers(); len(peers) != want {
|
||||
return fmt.Errorf("want %d peer(s) in status, got %v", want, peers)
|
||||
}
|
||||
|
@ -455,7 +455,7 @@ func TestLogoutRemovesAllPeers(t *testing.T) {
|
|||
nodes[0].MustLogOut()
|
||||
wantNode0PeerCount(0) // node[0] is logged out, so it should not have any peers
|
||||
nodes[0].MustUp()
|
||||
nodes[0].AwaitIP(t)
|
||||
nodes[0].AwaitIP()
|
||||
wantNode0PeerCount(len(nodes) - 1) // all other nodes are peers again
|
||||
}
|
||||
|
||||
|
@ -558,7 +558,8 @@ func newTestNode(t *testing.T, env *testEnv) *testNode {
|
|||
}
|
||||
}
|
||||
|
||||
func (n *testNode) diskPrefs(t testing.TB) *ipn.Prefs {
|
||||
func (n *testNode) diskPrefs() *ipn.Prefs {
|
||||
t := n.env.t
|
||||
t.Helper()
|
||||
if _, err := ioutil.ReadFile(n.stateFile); err != nil {
|
||||
t.Fatalf("reading prefs: %v", err)
|
||||
|
@ -580,11 +581,12 @@ func (n *testNode) diskPrefs(t testing.TB) *ipn.Prefs {
|
|||
|
||||
// AwaitResponding waits for n's tailscaled to be up enough to be
|
||||
// responding, but doesn't wait for any particular state.
|
||||
func (n *testNode) AwaitResponding(t testing.TB) {
|
||||
func (n *testNode) AwaitResponding() {
|
||||
t := n.env.t
|
||||
t.Helper()
|
||||
n.AwaitListening(t)
|
||||
n.AwaitListening()
|
||||
|
||||
st := n.MustStatus(t)
|
||||
st := n.MustStatus()
|
||||
t.Logf("Status: %s", st.BackendState)
|
||||
|
||||
if err := tstest.WaitFor(20*time.Second, func() error {
|
||||
|
@ -625,7 +627,8 @@ func (n *testNode) socks5AddrChan() <-chan string {
|
|||
return ch
|
||||
}
|
||||
|
||||
func (n *testNode) AwaitSocksAddr(t testing.TB, ch <-chan string) string {
|
||||
func (n *testNode) AwaitSocksAddr(ch <-chan string) string {
|
||||
t := n.env.t
|
||||
t.Helper()
|
||||
timer := time.NewTimer(10 * time.Second)
|
||||
defer timer.Stop()
|
||||
|
@ -694,11 +697,12 @@ func (d *Daemon) MustCleanShutdown(t testing.TB) {
|
|||
|
||||
// StartDaemon starts the node's tailscaled, failing if it fails to start.
|
||||
// StartDaemon ensures that the process will exit when the test completes.
|
||||
func (n *testNode) StartDaemon(t testing.TB) *Daemon {
|
||||
return n.StartDaemonAsIPNGOOS(t, runtime.GOOS)
|
||||
func (n *testNode) StartDaemon() *Daemon {
|
||||
return n.StartDaemonAsIPNGOOS(runtime.GOOS)
|
||||
}
|
||||
|
||||
func (n *testNode) StartDaemonAsIPNGOOS(t testing.TB, ipnGOOS string) *Daemon {
|
||||
func (n *testNode) StartDaemonAsIPNGOOS(ipnGOOS string) *Daemon {
|
||||
t := n.env.t
|
||||
cmd := exec.Command(n.env.daemon,
|
||||
"--tun=userspace-networking",
|
||||
"--state="+n.stateFile,
|
||||
|
@ -763,14 +767,15 @@ func (n *testNode) MustLogOut() {
|
|||
|
||||
func (n *testNode) Ping(otherNode *testNode) error {
|
||||
t := n.env.t
|
||||
ip := otherNode.AwaitIP(t).String()
|
||||
t.Logf("Running ping %v (from %v)...", ip, n.AwaitIP(t))
|
||||
ip := otherNode.AwaitIP().String()
|
||||
t.Logf("Running ping %v (from %v)...", ip, n.AwaitIP())
|
||||
return n.Tailscale("ping", ip).Run()
|
||||
}
|
||||
|
||||
// AwaitListening waits for the tailscaled to be serving local clients
|
||||
// over its localhost IPC mechanism. (Unix socket, etc)
|
||||
func (n *testNode) AwaitListening(t testing.TB) {
|
||||
func (n *testNode) AwaitListening() {
|
||||
t := n.env.t
|
||||
s := safesocket.DefaultConnectionStrategy(n.sockFile)
|
||||
s.UseFallback(false) // connect only to the tailscaled that we started
|
||||
if err := tstest.WaitFor(20*time.Second, func() (err error) {
|
||||
|
@ -785,7 +790,8 @@ func (n *testNode) AwaitListening(t testing.TB) {
|
|||
}
|
||||
}
|
||||
|
||||
func (n *testNode) AwaitIPs(t testing.TB) []netaddr.IP {
|
||||
func (n *testNode) AwaitIPs() []netaddr.IP {
|
||||
t := n.env.t
|
||||
t.Helper()
|
||||
var addrs []netaddr.IP
|
||||
if err := tstest.WaitFor(20*time.Second, func() error {
|
||||
|
@ -818,14 +824,16 @@ func (n *testNode) AwaitIPs(t testing.TB) []netaddr.IP {
|
|||
}
|
||||
|
||||
// AwaitIP returns the IP address of n.
|
||||
func (n *testNode) AwaitIP(t testing.TB) netaddr.IP {
|
||||
func (n *testNode) AwaitIP() netaddr.IP {
|
||||
t := n.env.t
|
||||
t.Helper()
|
||||
ips := n.AwaitIPs(t)
|
||||
ips := n.AwaitIPs()
|
||||
return ips[0]
|
||||
}
|
||||
|
||||
// AwaitRunning waits for n to reach the IPN state "Running".
|
||||
func (n *testNode) AwaitRunning(t testing.TB) {
|
||||
func (n *testNode) AwaitRunning() {
|
||||
t := n.env.t
|
||||
t.Helper()
|
||||
if err := tstest.WaitFor(20*time.Second, func() error {
|
||||
st, err := n.Status()
|
||||
|
@ -842,7 +850,8 @@ func (n *testNode) AwaitRunning(t testing.TB) {
|
|||
}
|
||||
|
||||
// AwaitNeedsLogin waits for n to reach the IPN state "NeedsLogin".
|
||||
func (n *testNode) AwaitNeedsLogin(t testing.TB) {
|
||||
func (n *testNode) AwaitNeedsLogin() {
|
||||
t := n.env.t
|
||||
t.Helper()
|
||||
if err := tstest.WaitFor(20*time.Second, func() error {
|
||||
st, err := n.Status()
|
||||
|
@ -890,7 +899,8 @@ func (n *testNode) Status() (*ipnstate.Status, error) {
|
|||
return st, nil
|
||||
}
|
||||
|
||||
func (n *testNode) MustStatus(tb testing.TB) *ipnstate.Status {
|
||||
func (n *testNode) MustStatus() *ipnstate.Status {
|
||||
tb := n.env.t
|
||||
tb.Helper()
|
||||
st, err := n.Status()
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue