Skip to content

Commit 079ffa8

Browse files
authored
[Release-1.32] Fix upgrade test container version (#12000)
* Fix upgrade test container version Signed-off-by: Derek Nola <[email protected]> * Force docker test cleanup in CI Signed-off-by: Derek Nola <[email protected]> * Bump skew test deployment times Signed-off-by: Derek Nola <[email protected]> * Bump skew test timeout Signed-off-by: Derek Nola <[email protected]> --------- Signed-off-by: Derek Nola <[email protected]>
1 parent 60fc6ff commit 079ffa8

File tree

10 files changed

+76
-30
lines changed

10 files changed

+76
-30
lines changed

scripts/test

+10-10
Original file line numberDiff line numberDiff line change
@@ -26,25 +26,25 @@ export K3S_IMAGE="rancher/k3s:${VERSION_TAG}${SUFFIX}"
2626
# Run all tests on tag events, as we want test failures to block the release
2727
if [ "$ARCH" == 'arm' ] || [ "$DRONE_BUILD_EVENT" = 'tag' ]; then
2828

29-
go test ./tests/docker/basics/basics_test.go -k3sImage="$K3S_IMAGE"
29+
go test ./tests/docker/basics/basics_test.go -k3sImage="$K3S_IMAGE" -ci
3030
echo "Did go test basics $?"
3131

3232
# Extract v1.XX minor version for skew and upgrade tests
3333
minor_version=$(echo $VERSION_K8S | cut -d '.' -f1,2)
3434

35-
go test ./tests/docker/cacerts/cacerts_test.go -k3sImage="$K3S_IMAGE"
35+
go test ./tests/docker/cacerts/cacerts_test.go -k3sImage="$K3S_IMAGE" -ci
3636
echo "Did go test cacerts $?"
3737

38-
go test ./tests/docker/skew/skew_test.go -k3sImage="$K3S_IMAGE" -channel="$minor_version"
38+
go test ./tests/docker/skew/skew_test.go -k3sImage="$K3S_IMAGE" -channel="$minor_version" -ci
3939
echo "Did go test skew $?"
4040

41-
go test ./tests/docker/bootstraptoken/bootstraptoken_test.go -k3sImage="$K3S_IMAGE"
41+
go test ./tests/docker/bootstraptoken/bootstraptoken_test.go -k3sImage="$K3S_IMAGE" -ci
4242
echo "Did go test bootstraptoken $?"
4343

44-
go test ./tests/docker/upgrade/upgrade_test.go -k3sImage="$K3S_IMAGE" -channel="$minor_version"
44+
go test ./tests/docker/upgrade/upgrade_test.go -k3sImage="$K3S_IMAGE" -channel="$minor_version" -ci
4545
echo "Did go test upgrade $?"
4646

47-
go test ./tests/docker/lazypull/lazypull_test.go -k3sImage="$K3S_IMAGE"
47+
go test ./tests/docker/lazypull/lazypull_test.go -k3sImage="$K3S_IMAGE" -ci
4848
echo "Did go test lazypull $?"
4949

5050
fi
@@ -67,9 +67,9 @@ fi
6767
# ---
6868

6969
if [ "$DRONE_BUILD_EVENT" = 'cron' ]; then
70-
run-go-test ./tests/docker/conformance/conformance_test.go -k3sImage="$K3S_IMAGE" -db sqlite -serial -ginkgo.v
70+
run-go-test ./tests/docker/conformance/conformance_test.go -k3sImage="$K3S_IMAGE" -db sqlite -serial -ginkgo.v -ci
7171
echo "Did go conformance sqlite serial $?"
72-
run-go-test ./tests/docker/conformance/conformance_test.go -k3sImage="$K3S_IMAGE" -db etcd -serial -ginkgo.v
72+
run-go-test ./tests/docker/conformance/conformance_test.go -k3sImage="$K3S_IMAGE" -db etcd -serial -ginkgo.v -ci
7373
echo "Did go conformance etcd serial $?"
7474
test-run-sonobuoy mysql serial
7575
echo "Did test-run-sonobuoy-mysqk serial $?"
@@ -87,9 +87,9 @@ if [ "$DRONE_BUILD_EVENT" = 'cron' ]; then
8787

8888
E2E_OUTPUT=$artifacts test-run-sonobuoy parallel
8989
echo "Did test-run-sonobuoy parallel $?"
90-
run-go-test ./tests/docker/conformance/conformance_test.go -k3sImage="$K3S_IMAGE" -db sqlite -ginkgo.v
90+
run-go-test ./tests/docker/conformance/conformance_test.go -k3sImage="$K3S_IMAGE" -db sqlite -ginkgo.v -ci
9191
echo "Did go conformance sqlite parallel $?"
92-
run-go-test ./tests/docker/conformance/conformance_test.go -k3sImage="$K3S_IMAGE" -db etcd -ginkgo.v
92+
run-go-test ./tests/docker/conformance/conformance_test.go -k3sImage="$K3S_IMAGE" -db etcd -ginkgo.v -ci
9393
echo "Did go test conformance etcd parallel $?"
9494
test-run-sonobuoy mysql parallel
9595
echo "Did test-run-sonobuoy-mysql parallel $?"

tests/docker/basics/basics_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
)
1515

1616
var k3sImage = flag.String("k3sImage", "", "The image used to provision containers")
17+
var ci = flag.Bool("ci", false, "running on CI, forced cleanup")
1718
var config *tester.TestConfig
1819

1920
func Test_DockerBasic(t *testing.T) {
@@ -74,8 +75,8 @@ var _ = AfterEach(func() {
7475
})
7576

7677
var _ = AfterSuite(func() {
77-
if config != nil && !failed {
78-
config.Cleanup()
78+
if config != nil && (*ci || !failed) {
79+
Expect(config.Cleanup()).To(Succeed())
7980
}
8081
})
8182

tests/docker/bootstraptoken/bootstraptoken_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
)
1313

1414
var k3sImage = flag.String("k3sImage", "", "The k3s image used to provision containers")
15+
var ci = flag.Bool("ci", false, "running on CI, forced cleanup")
1516
var config *tester.TestConfig
1617

1718
func Test_DockerBootstrapToken(t *testing.T) {
@@ -62,7 +63,7 @@ var _ = AfterEach(func() {
6263
})
6364

6465
var _ = AfterSuite(func() {
65-
if config != nil && !failed {
66-
config.Cleanup()
66+
if config != nil && (*ci || !failed) {
67+
Expect(config.Cleanup()).To(Succeed())
6768
}
6869
})

tests/docker/cacerts/cacerts_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
)
1616

1717
var k3sImage = flag.String("k3sImage", "", "The k3s image used to provision containers")
18+
var ci = flag.Bool("ci", false, "running on CI, forced cleanup")
1819
var config *tester.TestConfig
1920
var testID string
2021

tests/docker/conformance/conformance_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
var k3sImage = flag.String("k3sImage", "", "The k3s image used to provision containers")
2121
var db = flag.String("db", "", "The database to use for the tests (sqlite, etcd, mysql, postgres)")
2222
var serial = flag.Bool("serial", false, "Run the Serial Conformance Tests")
23+
var ci = flag.Bool("ci", false, "running on CI, forced cleanup")
2324
var config *tester.TestConfig
2425

2526
func Test_DockerConformance(t *testing.T) {
@@ -123,8 +124,8 @@ var _ = AfterEach(func() {
123124
})
124125

125126
var _ = AfterSuite(func() {
126-
if config != nil && !failed {
127-
config.Cleanup()
127+
if config != nil && (*ci || !failed) {
128+
Expect(config.Cleanup()).To(Succeed())
128129
}
129130
})
130131

tests/docker/etcd/etcd_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
)
1313

1414
var k3sImage = flag.String("k3sImage", "", "The k3s image used to provision containers")
15+
var ci = flag.Bool("ci", false, "running on CI, forced cleanup")
1516
var config *tester.TestConfig
1617

1718
func Test_DockerEtcd(t *testing.T) {
@@ -72,7 +73,7 @@ var _ = AfterEach(func() {
7273
})
7374

7475
var _ = AfterSuite(func() {
75-
if config != nil && !failed {
76-
config.Cleanup()
76+
if config != nil && (*ci || !failed) {
77+
Expect(config.Cleanup()).To(Succeed())
7778
}
7879
})

tests/docker/lazypull/lazypull_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
)
1414

1515
var k3sImage = flag.String("k3sImage", "", "The k3s image used to provision containers")
16+
var ci = flag.Bool("ci", false, "running on CI, forced cleanup")
1617
var config *tester.TestConfig
1718

1819
func Test_DockerLazyPull(t *testing.T) {
@@ -71,8 +72,8 @@ var _ = AfterEach(func() {
7172
})
7273

7374
var _ = AfterSuite(func() {
74-
if config != nil && !failed {
75-
config.Cleanup()
75+
if config != nil && (*ci || !failed) {
76+
Expect(config.Cleanup()).To(Succeed())
7677
}
7778
})
7879

tests/docker/skew/skew_test.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
// the current commit build of K3s defined by <k3sImage>
1818
var k3sImage = flag.String("k3sImage", "", "The current commit build of K3s")
1919
var channel = flag.String("channel", "latest", "The release channel to test")
20+
var ci = flag.Bool("ci", false, "running on CI, forced cleanup")
2021
var config *tester.TestConfig
2122

2223
func Test_DockerSkew(t *testing.T) {
@@ -55,7 +56,7 @@ var _ = Describe("Skew Tests", Ordered, func() {
5556
Expect(config.ProvisionAgents(1)).To(Succeed())
5657
Eventually(func() error {
5758
return tests.CheckDeployments([]string{"coredns", "local-path-provisioner", "metrics-server", "traefik"}, config.KubeconfigFile)
58-
}, "120s", "5s").Should(Succeed())
59+
}, "180s", "5s").Should(Succeed())
5960
})
6061
It("should match respective versions", func() {
6162
for _, server := range config.Servers {
@@ -100,7 +101,7 @@ var _ = Describe("Skew Tests", Ordered, func() {
100101
Expect(config.ProvisionServers(3)).To(Succeed())
101102
Eventually(func() error {
102103
return tests.CheckDeployments([]string{"coredns", "local-path-provisioner", "metrics-server", "traefik"}, config.KubeconfigFile)
103-
}, "120s", "5s").Should(Succeed())
104+
}, "180s", "5s").Should(Succeed())
104105
Eventually(func(g Gomega) {
105106
g.Expect(tests.ParseNodes(config.KubeconfigFile)).To(HaveLen(3))
106107
g.Expect(tests.NodesReady(config.KubeconfigFile, config.GetNodeNames())).To(Succeed())
@@ -134,7 +135,7 @@ var _ = AfterEach(func() {
134135
})
135136

136137
var _ = AfterSuite(func() {
137-
if config != nil && !failed {
138-
config.Cleanup()
138+
if config != nil && (*ci || !failed) {
139+
Expect(config.Cleanup()).To(Succeed())
139140
}
140141
})

tests/docker/test-helpers.go

+41-3
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,7 @@ func (config *TestConfig) RemoveNode(nodeName string) error {
390390
if _, err := RunCommand(cmd); err != nil {
391391
return fmt.Errorf("failed to remove node %s: %v", nodeName, err)
392392
}
393+
fmt.Println("Stopped and removed ", nodeName)
393394
return nil
394395
}
395396

@@ -428,13 +429,15 @@ func (config *TestConfig) Cleanup() error {
428429
errs = append(errs, err)
429430
}
430431
}
432+
config.Servers = nil
431433

432434
// Stop and remove all agents
433435
for _, agent := range config.Agents {
434436
if err := config.RemoveNode(agent.Name); err != nil {
435437
errs = append(errs, err)
436438
}
437439
}
440+
config.Agents = nil
438441

439442
// Stop DB if it was started
440443
if config.DBType == "mysql" || config.DBType == "postgres" {
@@ -456,8 +459,6 @@ func (config *TestConfig) Cleanup() error {
456459
if config.TestDir != "" {
457460
return os.RemoveAll(config.TestDir)
458461
}
459-
config.Agents = nil
460-
config.Servers = nil
461462
return nil
462463
}
463464

@@ -640,10 +641,47 @@ func FetchExternalIPs(kubeconfig string, servicename string) ([]string, error) {
640641
// RestartCluster restarts the k3s service on each node given
641642
func RestartCluster(nodes []DockerNode) error {
642643
for _, node := range nodes {
643-
cmd := "systemctl restart k3s* --all"
644+
// Wait 60 seconds for the restart to succeed.
645+
// If k3s doesn't report started to systemd within 60 seconds something is wrong.
646+
cmd := "timeout -v 60 systemctl restart k3s* --all"
644647
if _, err := node.RunCmdOnNode(cmd); err != nil {
645648
return err
646649
}
647650
}
648651
return nil
649652
}
653+
654+
func DescribeNodesAndPods(config *TestConfig) string {
655+
cmd := "kubectl describe node,pod -A --kubeconfig=" + config.KubeconfigFile
656+
out, err := RunCommand(cmd)
657+
if err != nil {
658+
return fmt.Sprintf("** %v **\n%s", err, out)
659+
}
660+
return out
661+
}
662+
663+
func TailDockerLogs(lines int, nodes []DockerNode) string {
664+
logs := &strings.Builder{}
665+
for _, node := range nodes {
666+
cmd := fmt.Sprintf("docker logs %s --tail=%d", node.Name, lines)
667+
if l, err := RunCommand(cmd); err != nil {
668+
fmt.Fprintf(logs, "** failed to read docker logs for node %s ***\n%v\n", node.Name, err)
669+
} else {
670+
fmt.Fprintf(logs, "** docker logs for node %s ***\n%s\n", node.Name, l)
671+
}
672+
}
673+
return logs.String()
674+
}
675+
676+
func TailJournalLogs(lines int, nodes []DockerNode) string {
677+
logs := &strings.Builder{}
678+
for _, node := range nodes {
679+
cmd := fmt.Sprintf("journalctl -u k3s* --no-pager --lines=%d", lines)
680+
if l, err := node.RunCmdOnNode(cmd); err != nil {
681+
fmt.Fprintf(logs, "** failed to read journald log for node %s ***\n%v\n", node.Name, err)
682+
} else {
683+
fmt.Fprintf(logs, "** journald log for node %s ***\n%s\n", node.Name, l)
684+
}
685+
}
686+
return logs.String()
687+
}

tests/docker/upgrade/upgrade_test.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
// the current commit build of K3s defined by <k3sImage>
2020
var k3sImage = flag.String("k3sImage", "", "The current commit build of K3s")
2121
var channel = flag.String("channel", "latest", "The release channel to test")
22+
var ci = flag.Bool("ci", false, "running on CI, forced cleanup")
2223
var config *tester.TestConfig
2324

2425
var numServers = 1
@@ -127,7 +128,7 @@ var _ = Describe("Upgrade Tests", Ordered, func() {
127128
cVersion = strings.Replace(cVersion, "-amd64", "", 1)
128129
cVersion = strings.Replace(cVersion, "-arm64", "", 1)
129130
cVersion = strings.Replace(cVersion, "-arm", "", 1)
130-
cVersion = strings.Replace(cVersion, "-", "+", 1)
131+
cVersion = strings.Replace(cVersion, "-k3s", "+k3s", 1)
131132
Expect(out).To(ContainSubstring(cVersion))
132133
}
133134
})
@@ -146,7 +147,7 @@ var _ = AfterEach(func() {
146147
})
147148

148149
var _ = AfterSuite(func() {
149-
if config != nil && !failed {
150-
config.Cleanup()
150+
if config != nil && (*ci || !failed) {
151+
Expect(config.Cleanup()).To(Succeed())
151152
}
152153
})

0 commit comments

Comments
 (0)