talos/internal/integration/k8s/version.go
Andrey Smirnov 773912833e test: clean up integration test code, fix flakes
This enables golangci-lint via build tags for integration tests (this
should have been done long ago!), and fixes the linting errors.

Two tests were updated to reduce flakiness:

* apply config: wait for nodes to issue "boot done" sequence event
before proceeding
* recover: kill pods even if they appear after the initial set gets
killed (potential race condition with previous test).

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
2020-10-19 15:44:14 -07:00

64 lines
2.1 KiB
Go

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// +build integration_k8s
package k8s
import (
"context"
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/talos-systems/talos/internal/integration/base"
"github.com/talos-systems/talos/pkg/machinery/constants"
)
// VersionSuite verifies Talos version.
type VersionSuite struct {
base.K8sSuite
}
// SuiteName ...
func (suite *VersionSuite) SuiteName() string {
return "k8s.VersionSuite"
}
// TestExpectedVersion verifies that node versions matches expected.
func (suite *VersionSuite) TestExpectedVersion() {
// verify k8s version (api server)
apiServerVersion, err := suite.DiscoveryClient.ServerVersion()
suite.Require().NoError(err)
expectedAPIServerVersion := fmt.Sprintf("v%s", constants.DefaultKubernetesVersion)
suite.Assert().Equal(expectedAPIServerVersion, apiServerVersion.GitVersion)
checkKernelVersion := suite.Capabilities().RunsTalosKernel
// verify each node (kubelet version, Talos version, etc.)
nodes, err := suite.Clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
suite.Require().NoError(err)
expectedTalosVersion := fmt.Sprintf("Talos (%s)", suite.Version)
expectedContainerRuntimeVersion := fmt.Sprintf("containerd://%s", constants.DefaultContainerdVersion)
expectedKubeletVersion := fmt.Sprintf("v%s", constants.DefaultKubernetesVersion)
expectedKernelVersion := constants.DefaultKernelVersion
for _, node := range nodes.Items {
suite.Assert().Equal(expectedTalosVersion, node.Status.NodeInfo.OSImage)
suite.Assert().Equal("linux", node.Status.NodeInfo.OperatingSystem)
suite.Assert().Equal(expectedContainerRuntimeVersion, node.Status.NodeInfo.ContainerRuntimeVersion)
suite.Assert().Equal(expectedKubeletVersion, node.Status.NodeInfo.KubeletVersion)
if checkKernelVersion {
suite.Assert().Equal(expectedKernelVersion, node.Status.NodeInfo.KernelVersion)
}
}
}
func init() {
allSuites = append(allSuites, new(VersionSuite))
}