mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-06 16:06:51 +00:00
Supports customized system spec in the node conformance test and creates the GKE system spec
This commit is contained in:
@@ -20,6 +20,7 @@ package e2e_node
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
@@ -33,6 +34,7 @@ import (
|
||||
|
||||
"k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
utilyaml "k8s.io/apimachinery/pkg/util/yaml"
|
||||
nodeutil "k8s.io/kubernetes/pkg/api/v1/node"
|
||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
commontest "k8s.io/kubernetes/test/e2e/common"
|
||||
@@ -55,6 +57,7 @@ var e2es *services.E2EServices
|
||||
var runServicesMode = flag.Bool("run-services-mode", false, "If true, only run services (etcd, apiserver) in current process, and not run test.")
|
||||
var runKubeletMode = flag.Bool("run-kubelet-mode", false, "If true, only start kubelet, and not run test.")
|
||||
var systemValidateMode = flag.Bool("system-validate-mode", false, "If true, only run system validation in current process, and not run test.")
|
||||
var systemSpecFile = flag.String("system-spec-file", "", "The name of the system spec file that will be used for node conformance test. If it's unspecified or empty, the default system spec (system.DefaultSysSpec) will be used.")
|
||||
|
||||
func init() {
|
||||
framework.RegisterCommonFlags()
|
||||
@@ -91,6 +94,14 @@ func TestE2eNode(t *testing.T) {
|
||||
}
|
||||
if *systemValidateMode {
|
||||
// If system-validate-mode is specified, only run system validation in current process.
|
||||
spec := &system.DefaultSysSpec
|
||||
if *systemSpecFile != "" {
|
||||
var err error
|
||||
spec, err = loadSystemSpecFromFile(*systemSpecFile)
|
||||
if err != nil {
|
||||
glog.Exitf("Failed to load system spec: %v", err)
|
||||
}
|
||||
}
|
||||
if framework.TestContext.NodeConformance {
|
||||
// Chroot to /rootfs to make system validation can check system
|
||||
// as in the root filesystem.
|
||||
@@ -100,7 +111,7 @@ func TestE2eNode(t *testing.T) {
|
||||
glog.Exitf("chroot %q failed: %v", rootfs, err)
|
||||
}
|
||||
}
|
||||
if _, err := system.ValidateDefault(framework.TestContext.ContainerRuntime); err != nil {
|
||||
if _, err := system.ValidateSpec(*spec, framework.TestContext.ContainerRuntime); err != nil {
|
||||
glog.Exitf("system validation failed: %v", err)
|
||||
}
|
||||
return
|
||||
@@ -278,3 +289,21 @@ func getAPIServerClient() (*clientset.Clientset, error) {
|
||||
}
|
||||
return client, nil
|
||||
}
|
||||
|
||||
// loadSystemSpecFromFile returns the system spec from the file with the
|
||||
// filename.
|
||||
func loadSystemSpecFromFile(filename string) (*system.SysSpec, error) {
|
||||
b, err := ioutil.ReadFile(filename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
data, err := utilyaml.ToJSON(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
spec := new(system.SysSpec)
|
||||
if err := json.Unmarshal(data, spec); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return spec, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user