introduce a version subset we must test against

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
Kristoffer Dalby 2023-08-31 14:57:43 +02:00 committed by Kristoffer Dalby
parent b4a4d0f760
commit f8a58aa15b
7 changed files with 43 additions and 32 deletions

View file

@ -21,7 +21,7 @@ func main() {
log.Fatalf("failed to create or get network: %s", err)
}
for _, version := range integration.TailscaleVersions {
for _, version := range integration.AllVersions {
log.Printf("creating container image for Tailscale (%s)", version)
tsClient, err := tsic.New(

View file

@ -50,7 +50,7 @@ func TestOIDCAuthenticationPingAll(t *testing.T) {
defer scenario.Shutdown()
spec := map[string]int{
"user1": len(TailscaleVersions),
"user1": len(MustTestVersions),
}
oidcConfig, err := scenario.runMockOIDC(defaultAccessTTL)
@ -105,7 +105,7 @@ func TestOIDCExpireNodesBasedOnTokenExpiry(t *testing.T) {
defer scenario.Shutdown()
spec := map[string]int{
"user1": len(TailscaleVersions),
"user1": len(MustTestVersions),
}
oidcConfig, err := scenario.runMockOIDC(shortAccessTTL)

View file

@ -37,8 +37,8 @@ func TestAuthWebFlowAuthenticationPingAll(t *testing.T) {
defer scenario.Shutdown()
spec := map[string]int{
"user1": len(TailscaleVersions),
"user2": len(TailscaleVersions),
"user1": len(MustTestVersions),
"user2": len(MustTestVersions),
}
err = scenario.CreateHeadscaleEnv(spec, hsic.WithTestName("webauthping"))
@ -74,8 +74,8 @@ func TestAuthWebFlowLogoutAndRelogin(t *testing.T) {
defer scenario.Shutdown()
spec := map[string]int{
"user1": len(TailscaleVersions),
"user2": len(TailscaleVersions),
"user1": len(MustTestVersions),
"user2": len(MustTestVersions),
}
err = scenario.CreateHeadscaleEnv(spec, hsic.WithTestName("weblogout"))

View file

@ -33,7 +33,7 @@ func TestDERPServerScenario(t *testing.T) {
defer scenario.Shutdown()
spec := map[string]int{
"user1": len(TailscaleVersions),
"user1": len(MustTestVersions),
}
headscaleConfig := map[string]string{}
@ -164,7 +164,7 @@ func (s *EmbeddedDERPServerScenario) CreateTailscaleIsolatedNodesInUser(
version := requestedVersion
if requestedVersion == "all" {
version = TailscaleVersions[clientN%len(TailscaleVersions)]
version = MustTestVersions[clientN%len(MustTestVersions)]
}
cert := hsServer.GetCert()

View file

@ -25,8 +25,8 @@ func TestPingAllByIP(t *testing.T) {
defer scenario.Shutdown()
spec := map[string]int{
"user1": len(TailscaleVersions),
"user2": len(TailscaleVersions),
"user1": len(MustTestVersions),
"user2": len(MustTestVersions),
}
err = scenario.CreateHeadscaleEnv(spec, []tsic.Option{}, hsic.WithTestName("pingallbyip"))
@ -58,8 +58,8 @@ func TestAuthKeyLogoutAndRelogin(t *testing.T) {
defer scenario.Shutdown()
spec := map[string]int{
"user1": len(TailscaleVersions),
"user2": len(TailscaleVersions),
"user1": len(MustTestVersions),
"user2": len(MustTestVersions),
}
err = scenario.CreateHeadscaleEnv(spec, []tsic.Option{}, hsic.WithTestName("pingallbyip"))
@ -165,8 +165,8 @@ func TestEphemeral(t *testing.T) {
defer scenario.Shutdown()
spec := map[string]int{
"user1": len(TailscaleVersions),
"user2": len(TailscaleVersions),
"user1": len(MustTestVersions),
"user2": len(MustTestVersions),
}
headscale, err := scenario.Headscale(hsic.WithTestName("ephemeral"))
@ -249,8 +249,8 @@ func TestPingAllByHostname(t *testing.T) {
spec := map[string]int{
// Omit 1.16.2 (-1) because it does not have the FQDN field
"user3": len(TailscaleVersions) - 1,
"user4": len(TailscaleVersions) - 1,
"user3": len(MustTestVersions) - 1,
"user4": len(MustTestVersions) - 1,
}
err = scenario.CreateHeadscaleEnv(spec, []tsic.Option{}, hsic.WithTestName("pingallbyname"))
@ -297,7 +297,7 @@ func TestTaildrop(t *testing.T) {
spec := map[string]int{
// Omit 1.16.2 (-1) because it does not have the FQDN field
"taildrop": len(TailscaleVersions) - 1,
"taildrop": len(MustTestVersions) - 1,
}
err = scenario.CreateHeadscaleEnv(spec, []tsic.Option{}, hsic.WithTestName("taildrop"))
@ -408,8 +408,8 @@ func TestResolveMagicDNS(t *testing.T) {
spec := map[string]int{
// Omit 1.16.2 (-1) because it does not have the FQDN field
"magicdns1": len(TailscaleVersions) - 1,
"magicdns2": len(TailscaleVersions) - 1,
"magicdns1": len(MustTestVersions) - 1,
"magicdns2": len(MustTestVersions) - 1,
}
err = scenario.CreateHeadscaleEnv(spec, []tsic.Option{}, hsic.WithTestName("magicdns"))
@ -474,7 +474,7 @@ func TestExpireNode(t *testing.T) {
defer scenario.Shutdown()
spec := map[string]int{
"user1": len(TailscaleVersions),
"user1": len(MustTestVersions),
}
err = scenario.CreateHeadscaleEnv(spec, []tsic.Option{}, hsic.WithTestName("expirenode"))
@ -501,7 +501,7 @@ func TestExpireNode(t *testing.T) {
assertNoErr(t, err)
// Assert that we have the original count - self
assert.Len(t, status.Peers(), len(TailscaleVersions)-1)
assert.Len(t, status.Peers(), len(MustTestVersions)-1)
}
headscale, err := scenario.Headscale()
@ -536,7 +536,7 @@ func TestExpireNode(t *testing.T) {
if client.Hostname() != machine.Name {
// Assert that we have the original count - self - expired node
assert.Len(t, status.Peers(), len(TailscaleVersions)-2)
assert.Len(t, status.Peers(), len(MustTestVersions)-2)
}
}
}

View file

@ -49,7 +49,7 @@ var (
tailscaleVersions2019 = []string{
"1.28",
"1.26",
"1.24",
"1.24", // Tailscale SSH
"1.22",
"1.20",
"1.18",
@ -63,7 +63,7 @@ var (
// "1.8.7",
// }.
// TailscaleVersions represents a list of Tailscale versions the suite
// AllVersions represents a list of Tailscale versions the suite
// uses to test compatibility with the ControlServer.
//
// The list contains two special cases, "head" and "unstable" which
@ -72,10 +72,21 @@ var (
//
// The rest of the version represents Tailscale versions that can be
// found in Tailscale's apt repository.
TailscaleVersions = append(
AllVersions = append(
tailscaleVersions2021,
tailscaleVersions2019...,
)
// MustTestVersions is the minimum set of versions we should test.
// At the moment, this is arbitrarily choosen as:
//
// - Two unstable (HEAD and unstable)
// - Two latest versions
// - Two oldest versions
MustTestVersions = append(
tailscaleVersions2021[0:4],
tailscaleVersions2019[len(tailscaleVersions2019)-2:len(tailscaleVersions2019)]...,
)
)
// User represents a User in the ControlServer and a map of TailscaleClient's
@ -277,7 +288,7 @@ func (s *Scenario) CreateTailscaleNodesInUser(
for i := 0; i < count; i++ {
version := requestedVersion
if requestedVersion == "all" {
version = TailscaleVersions[i%len(TailscaleVersions)]
version = MustTestVersions[i%len(MustTestVersions)]
}
headscale, err := s.Headscale()

View file

@ -102,7 +102,7 @@ func TestSSHOneUserAllToAll(t *testing.T) {
},
},
},
len(TailscaleVersions)-5,
len(MustTestVersions)-2,
)
defer scenario.Shutdown()
@ -151,7 +151,7 @@ func TestSSHMultipleUsersAllToAll(t *testing.T) {
},
},
},
len(TailscaleVersions)-5,
len(MustTestVersions)-2,
)
defer scenario.Shutdown()
@ -197,7 +197,7 @@ func TestSSHNoSSHConfigured(t *testing.T) {
},
SSHs: []policy.SSH{},
},
len(TailscaleVersions)-5,
len(MustTestVersions)-2,
)
defer scenario.Shutdown()
@ -246,7 +246,7 @@ func TestSSHIsBlockedInACL(t *testing.T) {
},
},
},
len(TailscaleVersions)-5,
len(MustTestVersions)-2,
)
defer scenario.Shutdown()
@ -302,7 +302,7 @@ func TestSSUserOnlyIsolation(t *testing.T) {
},
},
},
len(TailscaleVersions)-5,
len(MustTestVersions)-2,
)
defer scenario.Shutdown()