add shutdown that asserts if headscale had panics (#2126)

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
Kristoffer Dalby 2024-09-17 10:44:55 +01:00 committed by GitHub
parent 6cbbcd859c
commit ed78ecda12
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 53 additions and 53 deletions

View file

@ -276,7 +276,7 @@ func TestACLHostsInNetMapTable(t *testing.T) {
hsic.WithACLPolicy(&testCase.policy), hsic.WithACLPolicy(&testCase.policy),
) )
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
allClients, err := scenario.ListTailscaleClients() allClients, err := scenario.ListTailscaleClients()
assertNoErr(t, err) assertNoErr(t, err)
@ -316,7 +316,7 @@ func TestACLAllowUser80Dst(t *testing.T) {
}, },
1, 1,
) )
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
user1Clients, err := scenario.ListTailscaleClients("user1") user1Clients, err := scenario.ListTailscaleClients("user1")
assertNoErr(t, err) assertNoErr(t, err)
@ -373,7 +373,7 @@ func TestACLDenyAllPort80(t *testing.T) {
}, },
4, 4,
) )
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
allClients, err := scenario.ListTailscaleClients() allClients, err := scenario.ListTailscaleClients()
assertNoErr(t, err) assertNoErr(t, err)
@ -417,7 +417,7 @@ func TestACLAllowUserDst(t *testing.T) {
}, },
2, 2,
) )
// defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
user1Clients, err := scenario.ListTailscaleClients("user1") user1Clients, err := scenario.ListTailscaleClients("user1")
assertNoErr(t, err) assertNoErr(t, err)
@ -473,7 +473,7 @@ func TestACLAllowStarDst(t *testing.T) {
}, },
2, 2,
) )
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
user1Clients, err := scenario.ListTailscaleClients("user1") user1Clients, err := scenario.ListTailscaleClients("user1")
assertNoErr(t, err) assertNoErr(t, err)
@ -534,7 +534,7 @@ func TestACLNamedHostsCanReachBySubnet(t *testing.T) {
}, },
3, 3,
) )
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
user1Clients, err := scenario.ListTailscaleClients("user1") user1Clients, err := scenario.ListTailscaleClients("user1")
assertNoErr(t, err) assertNoErr(t, err)
@ -672,7 +672,7 @@ func TestACLNamedHostsCanReach(t *testing.T) {
&testCase.policy, &testCase.policy,
2, 2,
) )
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
// Since user/users dont matter here, we basically expect that some clients // Since user/users dont matter here, we basically expect that some clients
// will be assigned these ips and that we can pick them up for our own use. // will be assigned these ips and that we can pick them up for our own use.
@ -1021,7 +1021,7 @@ func TestPolicyUpdateWhileRunningWithCLIInDatabase(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": 1, "user1": 1,

View file

@ -48,7 +48,7 @@ func TestOIDCAuthenticationPingAll(t *testing.T) {
scenario := AuthOIDCScenario{ scenario := AuthOIDCScenario{
Scenario: baseScenario, Scenario: baseScenario,
} }
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": len(MustTestVersions), "user1": len(MustTestVersions),
@ -108,7 +108,7 @@ func TestOIDCExpireNodesBasedOnTokenExpiry(t *testing.T) {
scenario := AuthOIDCScenario{ scenario := AuthOIDCScenario{
Scenario: baseScenario, Scenario: baseScenario,
} }
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": 3, "user1": 3,

View file

@ -34,7 +34,7 @@ func TestAuthWebFlowAuthenticationPingAll(t *testing.T) {
scenario := AuthWebFlowScenario{ scenario := AuthWebFlowScenario{
Scenario: baseScenario, Scenario: baseScenario,
} }
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": len(MustTestVersions), "user1": len(MustTestVersions),
@ -73,7 +73,7 @@ func TestAuthWebFlowLogoutAndRelogin(t *testing.T) {
scenario := AuthWebFlowScenario{ scenario := AuthWebFlowScenario{
Scenario: baseScenario, Scenario: baseScenario,
} }
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": len(MustTestVersions), "user1": len(MustTestVersions),

View file

@ -35,7 +35,7 @@ func TestUserCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": 0, "user1": 0,
@ -115,7 +115,7 @@ func TestPreAuthKeyCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
user: 0, user: 0,
@ -257,7 +257,7 @@ func TestPreAuthKeyCommandWithoutExpiry(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
user: 0, user: 0,
@ -320,7 +320,7 @@ func TestPreAuthKeyCommandReusableEphemeral(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
user: 0, user: 0,
@ -398,7 +398,7 @@ func TestPreAuthKeyCorrectUserLoggedInCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
user1: 1, user1: 1,
@ -492,7 +492,7 @@ func TestApiKeyCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": 0, "user1": 0,
@ -660,7 +660,7 @@ func TestNodeTagCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": 0, "user1": 0,
@ -785,7 +785,7 @@ func TestNodeAdvertiseTagNoACLCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": 1, "user1": 1,
@ -835,7 +835,7 @@ func TestNodeAdvertiseTagWithACLCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": 1, "user1": 1,
@ -898,7 +898,7 @@ func TestNodeCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"node-user": 0, "node-user": 0,
@ -1139,7 +1139,7 @@ func TestNodeExpireCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"node-expire-user": 0, "node-expire-user": 0,
@ -1266,7 +1266,7 @@ func TestNodeRenameCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"node-rename-command": 0, "node-rename-command": 0,
@ -1432,7 +1432,7 @@ func TestNodeMoveCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"old-user": 0, "old-user": 0,
@ -1593,7 +1593,7 @@ func TestPolicyCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"policy-user": 0, "policy-user": 0,
@ -1673,7 +1673,7 @@ func TestPolicyBrokenConfigCommand(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"policy-user": 1, "policy-user": 1,

View file

@ -17,7 +17,7 @@ func TestResolveMagicDNS(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"magicdns1": len(MustTestVersions), "magicdns1": len(MustTestVersions),
@ -208,7 +208,7 @@ func TestValidateResolvConf(t *testing.T) {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"resolvconf1": 3, "resolvconf1": 3,

View file

@ -32,7 +32,7 @@ func TestDERPServerScenario(t *testing.T) {
Scenario: baseScenario, Scenario: baseScenario,
tsicNetworks: map[string]*dockertest.Network{}, tsicNetworks: map[string]*dockertest.Network{},
} }
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": len(MustTestVersions), "user1": len(MustTestVersions),

View file

@ -27,7 +27,7 @@ func TestPingAllByIP(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
// TODO(kradalby): it does not look like the user thing works, only second // TODO(kradalby): it does not look like the user thing works, only second
// get created? maybe only when many? // get created? maybe only when many?
@ -71,7 +71,7 @@ func TestPingAllByIPPublicDERP(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": len(MustTestVersions), "user1": len(MustTestVersions),
@ -109,7 +109,7 @@ func TestAuthKeyLogoutAndRelogin(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": len(MustTestVersions), "user1": len(MustTestVersions),
@ -228,7 +228,7 @@ func testEphemeralWithOptions(t *testing.T, opts ...hsic.Option) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": len(MustTestVersions), "user1": len(MustTestVersions),
@ -313,7 +313,7 @@ func TestEphemeral2006DeletedTooQuickly(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": len(MustTestVersions), "user1": len(MustTestVersions),
@ -427,7 +427,7 @@ func TestPingAllByHostname(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user3": len(MustTestVersions), "user3": len(MustTestVersions),
@ -476,7 +476,7 @@ func TestTaildrop(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"taildrop": len(MustTestVersions), "taildrop": len(MustTestVersions),
@ -637,7 +637,7 @@ func TestExpireNode(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": len(MustTestVersions), "user1": len(MustTestVersions),
@ -763,7 +763,7 @@ func TestNodeOnlineStatus(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
"user1": len(MustTestVersions), "user1": len(MustTestVersions),
@ -878,7 +878,7 @@ func TestPingAllByIPManyUpDown(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
// TODO(kradalby): it does not look like the user thing works, only second // TODO(kradalby): it does not look like the user thing works, only second
// get created? maybe only when many? // get created? maybe only when many?

View file

@ -32,7 +32,7 @@ func TestEnablingRoutes(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErrf(t, "failed to create scenario: %s", err) assertNoErrf(t, "failed to create scenario: %s", err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
user: 3, user: 3,
@ -254,7 +254,7 @@ func TestHASubnetRouterFailover(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErrf(t, "failed to create scenario: %s", err) assertNoErrf(t, "failed to create scenario: %s", err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
user: 3, user: 3,
@ -826,7 +826,7 @@ func TestEnableDisableAutoApprovedRoute(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErrf(t, "failed to create scenario: %s", err) assertNoErrf(t, "failed to create scenario: %s", err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
user: 1, user: 1,
@ -968,7 +968,7 @@ func TestAutoApprovedSubRoute2068(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErrf(t, "failed to create scenario: %s", err) assertNoErrf(t, "failed to create scenario: %s", err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
user: 1, user: 1,
@ -1059,7 +1059,7 @@ func TestSubnetRouteACL(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErrf(t, "failed to create scenario: %s", err) assertNoErrf(t, "failed to create scenario: %s", err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
spec := map[string]int{ spec := map[string]int{
user: 2, user: 2,

View file

@ -35,7 +35,7 @@ func TestHeadscale(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
t.Run("start-headscale", func(t *testing.T) { t.Run("start-headscale", func(t *testing.T) {
headscale, err := scenario.Headscale() headscale, err := scenario.Headscale()
@ -80,7 +80,7 @@ func TestCreateTailscale(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
scenario.users[user] = &User{ scenario.users[user] = &User{
Clients: make(map[string]TailscaleClient), Clients: make(map[string]TailscaleClient),
@ -116,7 +116,7 @@ func TestTailscaleNodesJoiningHeadcale(t *testing.T) {
scenario, err := NewScenario(dockertestMaxWait()) scenario, err := NewScenario(dockertestMaxWait())
assertNoErr(t, err) assertNoErr(t, err)
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
t.Run("start-headscale", func(t *testing.T) { t.Run("start-headscale", func(t *testing.T) {
headscale, err := scenario.Headscale() headscale, err := scenario.Headscale()

View file

@ -111,7 +111,7 @@ func TestSSHOneUserToAll(t *testing.T) {
}, },
len(MustTestVersions), len(MustTestVersions),
) )
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
allClients, err := scenario.ListTailscaleClients() allClients, err := scenario.ListTailscaleClients()
assertNoErrListClients(t, err) assertNoErrListClients(t, err)
@ -176,7 +176,7 @@ func TestSSHMultipleUsersAllToAll(t *testing.T) {
}, },
len(MustTestVersions), len(MustTestVersions),
) )
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
nsOneClients, err := scenario.ListTailscaleClients("user1") nsOneClients, err := scenario.ListTailscaleClients("user1")
assertNoErrListClients(t, err) assertNoErrListClients(t, err)
@ -222,7 +222,7 @@ func TestSSHNoSSHConfigured(t *testing.T) {
}, },
len(MustTestVersions), len(MustTestVersions),
) )
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
allClients, err := scenario.ListTailscaleClients() allClients, err := scenario.ListTailscaleClients()
assertNoErrListClients(t, err) assertNoErrListClients(t, err)
@ -271,7 +271,7 @@ func TestSSHIsBlockedInACL(t *testing.T) {
}, },
len(MustTestVersions), len(MustTestVersions),
) )
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
allClients, err := scenario.ListTailscaleClients() allClients, err := scenario.ListTailscaleClients()
assertNoErrListClients(t, err) assertNoErrListClients(t, err)
@ -327,7 +327,7 @@ func TestSSHUserOnlyIsolation(t *testing.T) {
}, },
len(MustTestVersions), len(MustTestVersions),
) )
defer scenario.Shutdown() defer scenario.ShutdownAssertNoPanics(t)
ssh1Clients, err := scenario.ListTailscaleClients("user1") ssh1Clients, err := scenario.ListTailscaleClients("user1")
assertNoErrListClients(t, err) assertNoErrListClients(t, err)