mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	clean up test code
This commit is contained in:
		@@ -31,7 +31,6 @@ import (
 | 
				
			|||||||
	commonutils "k8s.io/kubernetes/test/e2e/common"
 | 
						commonutils "k8s.io/kubernetes/test/e2e/common"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework/auth"
 | 
						"k8s.io/kubernetes/test/e2e/framework/auth"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework/testfiles"
 | 
						"k8s.io/kubernetes/test/e2e/framework/testfiles"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -83,14 +82,14 @@ var _ = framework.KubeDescribe("[Feature:Example]", func() {
 | 
				
			|||||||
					pod, err := c.CoreV1().Pods(ns).Get(podName, metav1.GetOptions{})
 | 
										pod, err := c.CoreV1().Pods(ns).Get(podName, metav1.GetOptions{})
 | 
				
			||||||
					framework.ExpectNoError(err, fmt.Sprintf("getting pod %s", podName))
 | 
										framework.ExpectNoError(err, fmt.Sprintf("getting pod %s", podName))
 | 
				
			||||||
					stat := podutil.GetExistingContainerStatus(pod.Status.ContainerStatuses, podName)
 | 
										stat := podutil.GetExistingContainerStatus(pod.Status.ContainerStatuses, podName)
 | 
				
			||||||
					e2elog.Logf("Pod: %s, restart count:%d", stat.Name, stat.RestartCount)
 | 
										framework.Logf("Pod: %s, restart count:%d", stat.Name, stat.RestartCount)
 | 
				
			||||||
					if stat.RestartCount > 0 {
 | 
										if stat.RestartCount > 0 {
 | 
				
			||||||
						e2elog.Logf("Saw %v restart, succeeded...", podName)
 | 
											framework.Logf("Saw %v restart, succeeded...", podName)
 | 
				
			||||||
						wg.Done()
 | 
											wg.Done()
 | 
				
			||||||
						return
 | 
											return
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				e2elog.Logf("Failed waiting for %v restart! ", podName)
 | 
									framework.Logf("Failed waiting for %v restart! ", podName)
 | 
				
			||||||
				passed = false
 | 
									passed = false
 | 
				
			||||||
				wg.Done()
 | 
									wg.Done()
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -106,7 +105,7 @@ var _ = framework.KubeDescribe("[Feature:Example]", func() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			wg.Wait()
 | 
								wg.Wait()
 | 
				
			||||||
			if !passed {
 | 
								if !passed {
 | 
				
			||||||
				e2elog.Failf("At least one liveness example failed.  See the logs above.")
 | 
									framework.Failf("At least one liveness example failed.  See the logs above.")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,6 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/uuid"
 | 
						"k8s.io/apimachinery/pkg/util/uuid"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -38,23 +37,23 @@ var _ = framework.KubeDescribe("GKE local SSD [Feature:GKELocalSSD]", func() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ginkgo.It("should write and read from node local SSD [Feature:GKELocalSSD]", func() {
 | 
						ginkgo.It("should write and read from node local SSD [Feature:GKELocalSSD]", func() {
 | 
				
			||||||
		e2elog.Logf("Start local SSD test")
 | 
							framework.Logf("Start local SSD test")
 | 
				
			||||||
		createNodePoolWithLocalSsds("np-ssd")
 | 
							createNodePoolWithLocalSsds("np-ssd")
 | 
				
			||||||
		doTestWriteAndReadToLocalSsd(f)
 | 
							doTestWriteAndReadToLocalSsd(f)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func createNodePoolWithLocalSsds(nodePoolName string) {
 | 
					func createNodePoolWithLocalSsds(nodePoolName string) {
 | 
				
			||||||
	e2elog.Logf("Create node pool: %s with local SSDs in cluster: %s ",
 | 
						framework.Logf("Create node pool: %s with local SSDs in cluster: %s ",
 | 
				
			||||||
		nodePoolName, framework.TestContext.CloudConfig.Cluster)
 | 
							nodePoolName, framework.TestContext.CloudConfig.Cluster)
 | 
				
			||||||
	out, err := exec.Command("gcloud", "alpha", "container", "node-pools", "create",
 | 
						out, err := exec.Command("gcloud", "alpha", "container", "node-pools", "create",
 | 
				
			||||||
		nodePoolName,
 | 
							nodePoolName,
 | 
				
			||||||
		fmt.Sprintf("--cluster=%s", framework.TestContext.CloudConfig.Cluster),
 | 
							fmt.Sprintf("--cluster=%s", framework.TestContext.CloudConfig.Cluster),
 | 
				
			||||||
		"--local-ssd-count=1").CombinedOutput()
 | 
							"--local-ssd-count=1").CombinedOutput()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Failf("Failed to create node pool %s: Err: %v\n%v", nodePoolName, err, string(out))
 | 
							framework.Failf("Failed to create node pool %s: Err: %v\n%v", nodePoolName, err, string(out))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	e2elog.Logf("Successfully created node pool %s:\n%v", nodePoolName, string(out))
 | 
						framework.Logf("Successfully created node pool %s:\n%v", nodePoolName, string(out))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func doTestWriteAndReadToLocalSsd(f *framework.Framework) {
 | 
					func doTestWriteAndReadToLocalSsd(f *framework.Framework) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,7 +42,6 @@ go_library(
 | 
				
			|||||||
        "//test/e2e/framework:go_default_library",
 | 
					        "//test/e2e/framework:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/job:go_default_library",
 | 
					        "//test/e2e/framework/job:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/kubelet:go_default_library",
 | 
					        "//test/e2e/framework/kubelet:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/log:go_default_library",
 | 
					 | 
				
			||||||
        "//test/e2e/framework/metrics:go_default_library",
 | 
					        "//test/e2e/framework/metrics:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/node:go_default_library",
 | 
					        "//test/e2e/framework/node:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/perf:go_default_library",
 | 
					        "//test/e2e/framework/perf:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,6 @@ package node
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/common"
 | 
						"k8s.io/kubernetes/test/e2e/common"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -36,7 +35,7 @@ var _ = SIGDescribe("AppArmor", func() {
 | 
				
			|||||||
			if !ginkgo.CurrentGinkgoTestDescription().Failed {
 | 
								if !ginkgo.CurrentGinkgoTestDescription().Failed {
 | 
				
			||||||
				return
 | 
									return
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			framework.LogFailedContainers(f.ClientSet, f.Namespace.Name, e2elog.Logf)
 | 
								framework.LogFailedContainers(f.ClientSet, f.Namespace.Name, framework.Logf)
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ginkgo.It("should enforce an AppArmor profile", func() {
 | 
							ginkgo.It("should enforce an AppArmor profile", func() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,6 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
 | 
						e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
@@ -42,7 +41,7 @@ var _ = SIGDescribe("crictl", func() {
 | 
				
			|||||||
		ginkgo.By("Getting all nodes' SSH-able IP addresses")
 | 
							ginkgo.By("Getting all nodes' SSH-able IP addresses")
 | 
				
			||||||
		hosts, err := e2essh.NodeSSHHosts(f.ClientSet)
 | 
							hosts, err := e2essh.NodeSSHHosts(f.ClientSet)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			e2elog.Failf("Error getting node hostnames: %v", err)
 | 
								framework.Failf("Error getting node hostnames: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		testCases := []struct {
 | 
							testCases := []struct {
 | 
				
			||||||
@@ -60,15 +59,15 @@ var _ = SIGDescribe("crictl", func() {
 | 
				
			|||||||
			result, err := e2essh.SSH(testCase.cmd, host, framework.TestContext.Provider)
 | 
								result, err := e2essh.SSH(testCase.cmd, host, framework.TestContext.Provider)
 | 
				
			||||||
			stdout, stderr := strings.TrimSpace(result.Stdout), strings.TrimSpace(result.Stderr)
 | 
								stdout, stderr := strings.TrimSpace(result.Stdout), strings.TrimSpace(result.Stderr)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("Ran %q on %q, got error %v", testCase.cmd, host, err)
 | 
									framework.Failf("Ran %q on %q, got error %v", testCase.cmd, host, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			// Log the stdout/stderr output.
 | 
								// Log the stdout/stderr output.
 | 
				
			||||||
			// TODO: Verify the output.
 | 
								// TODO: Verify the output.
 | 
				
			||||||
			if len(stdout) > 0 {
 | 
								if len(stdout) > 0 {
 | 
				
			||||||
				e2elog.Logf("Got stdout from %q:\n %s\n", host, strings.TrimSpace(stdout))
 | 
									framework.Logf("Got stdout from %q:\n %s\n", host, strings.TrimSpace(stdout))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if len(stderr) > 0 {
 | 
								if len(stderr) > 0 {
 | 
				
			||||||
				e2elog.Logf("Got stderr from %q:\n %s\n", host, strings.TrimSpace(stderr))
 | 
									framework.Logf("Got stderr from %q:\n %s\n", host, strings.TrimSpace(stderr))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,6 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/util/uuid"
 | 
						"k8s.io/apimachinery/pkg/util/uuid"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -73,7 +72,7 @@ var _ = SIGDescribe("Events", func() {
 | 
				
			|||||||
			podClient.Delete(pod.Name, nil)
 | 
								podClient.Delete(pod.Name, nil)
 | 
				
			||||||
		}()
 | 
							}()
 | 
				
			||||||
		if _, err := podClient.Create(pod); err != nil {
 | 
							if _, err := podClient.Create(pod); err != nil {
 | 
				
			||||||
			e2elog.Failf("Failed to create pod: %v", err)
 | 
								framework.Failf("Failed to create pod: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		framework.ExpectNoError(f.WaitForPodRunning(pod.Name))
 | 
							framework.ExpectNoError(f.WaitForPodRunning(pod.Name))
 | 
				
			||||||
@@ -87,9 +86,9 @@ var _ = SIGDescribe("Events", func() {
 | 
				
			|||||||
		ginkgo.By("retrieving the pod")
 | 
							ginkgo.By("retrieving the pod")
 | 
				
			||||||
		podWithUID, err := podClient.Get(pod.Name, metav1.GetOptions{})
 | 
							podWithUID, err := podClient.Get(pod.Name, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			e2elog.Failf("Failed to get pod: %v", err)
 | 
								framework.Failf("Failed to get pod: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		e2elog.Logf("%+v\n", podWithUID)
 | 
							framework.Logf("%+v\n", podWithUID)
 | 
				
			||||||
		var events *v1.EventList
 | 
							var events *v1.EventList
 | 
				
			||||||
		// Check for scheduler event about the pod.
 | 
							// Check for scheduler event about the pod.
 | 
				
			||||||
		ginkgo.By("checking for scheduler event about the pod")
 | 
							ginkgo.By("checking for scheduler event about the pod")
 | 
				
			||||||
@@ -106,7 +105,7 @@ var _ = SIGDescribe("Events", func() {
 | 
				
			|||||||
				return false, err
 | 
									return false, err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if len(events.Items) > 0 {
 | 
								if len(events.Items) > 0 {
 | 
				
			||||||
				e2elog.Logf("Saw scheduler event for our pod.")
 | 
									framework.Logf("Saw scheduler event for our pod.")
 | 
				
			||||||
				return true, nil
 | 
									return true, nil
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return false, nil
 | 
								return false, nil
 | 
				
			||||||
@@ -126,7 +125,7 @@ var _ = SIGDescribe("Events", func() {
 | 
				
			|||||||
				return false, err
 | 
									return false, err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if len(events.Items) > 0 {
 | 
								if len(events.Items) > 0 {
 | 
				
			||||||
				e2elog.Logf("Saw kubelet event for our pod.")
 | 
									framework.Logf("Saw kubelet event for our pod.")
 | 
				
			||||||
				return true, nil
 | 
									return true, nil
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return false, nil
 | 
								return false, nil
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,7 +30,6 @@ import (
 | 
				
			|||||||
	clientset "k8s.io/client-go/kubernetes"
 | 
						clientset "k8s.io/client-go/kubernetes"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
						e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
	e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
 | 
						e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework/volume"
 | 
						"k8s.io/kubernetes/test/e2e/framework/volume"
 | 
				
			||||||
@@ -53,10 +52,10 @@ const (
 | 
				
			|||||||
// podNamePrefix and namespace.
 | 
					// podNamePrefix and namespace.
 | 
				
			||||||
func getPodMatches(c clientset.Interface, nodeName string, podNamePrefix string, namespace string) sets.String {
 | 
					func getPodMatches(c clientset.Interface, nodeName string, podNamePrefix string, namespace string) sets.String {
 | 
				
			||||||
	matches := sets.NewString()
 | 
						matches := sets.NewString()
 | 
				
			||||||
	e2elog.Logf("Checking pods on node %v via /runningpods endpoint", nodeName)
 | 
						framework.Logf("Checking pods on node %v via /runningpods endpoint", nodeName)
 | 
				
			||||||
	runningPods, err := e2ekubelet.GetKubeletPods(c, nodeName)
 | 
						runningPods, err := e2ekubelet.GetKubeletPods(c, nodeName)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("Error checking running pods on %v: %v", nodeName, err)
 | 
							framework.Logf("Error checking running pods on %v: %v", nodeName, err)
 | 
				
			||||||
		return matches
 | 
							return matches
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for _, pod := range runningPods.Items {
 | 
						for _, pod := range runningPods.Items {
 | 
				
			||||||
@@ -93,7 +92,7 @@ func waitTillNPodsRunningOnNodes(c clientset.Interface, nodeNames sets.String, p
 | 
				
			|||||||
		if seen.Len() == targetNumPods {
 | 
							if seen.Len() == targetNumPods {
 | 
				
			||||||
			return true, nil
 | 
								return true, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		e2elog.Logf("Waiting for %d pods to be running on the node; %d are currently running;", targetNumPods, seen.Len())
 | 
							framework.Logf("Waiting for %d pods to be running on the node; %d are currently running;", targetNumPods, seen.Len())
 | 
				
			||||||
		return false, nil
 | 
							return false, nil
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -214,7 +213,7 @@ func checkPodCleanup(c clientset.Interface, pod *v1.Pod, expectClean bool) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, test := range tests {
 | 
						for _, test := range tests {
 | 
				
			||||||
		e2elog.Logf("Wait up to %v for host's (%v) %q to be %v", timeout, nodeIP, test.feature, condMsg)
 | 
							framework.Logf("Wait up to %v for host's (%v) %q to be %v", timeout, nodeIP, test.feature, condMsg)
 | 
				
			||||||
		err = wait.Poll(poll, timeout, func() (bool, error) {
 | 
							err = wait.Poll(poll, timeout, func() (bool, error) {
 | 
				
			||||||
			result, err := e2essh.NodeExec(nodeIP, test.cmd, framework.TestContext.Provider)
 | 
								result, err := e2essh.NodeExec(nodeIP, test.cmd, framework.TestContext.Provider)
 | 
				
			||||||
			framework.ExpectNoError(err)
 | 
								framework.ExpectNoError(err)
 | 
				
			||||||
@@ -232,9 +231,9 @@ func checkPodCleanup(c clientset.Interface, pod *v1.Pod, expectClean bool) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if expectClean {
 | 
						if expectClean {
 | 
				
			||||||
		e2elog.Logf("Pod's host has been cleaned up")
 | 
							framework.Logf("Pod's host has been cleaned up")
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		e2elog.Logf("Pod's host has not been cleaned up (per expectation)")
 | 
							framework.Logf("Pod's host has not been cleaned up (per expectation)")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -349,7 +348,7 @@ var _ = SIGDescribe("kubelet", func() {
 | 
				
			|||||||
				start := time.Now()
 | 
									start := time.Now()
 | 
				
			||||||
				err = waitTillNPodsRunningOnNodes(f.ClientSet, nodeNames, rcName, ns, 0, itArg.timeout)
 | 
									err = waitTillNPodsRunningOnNodes(f.ClientSet, nodeNames, rcName, ns, 0, itArg.timeout)
 | 
				
			||||||
				framework.ExpectNoError(err)
 | 
									framework.ExpectNoError(err)
 | 
				
			||||||
				e2elog.Logf("Deleting %d pods on %d nodes completed in %v after the RC was deleted", totalPods, len(nodeNames),
 | 
									framework.Logf("Deleting %d pods on %d nodes completed in %v after the RC was deleted", totalPods, len(nodeNames),
 | 
				
			||||||
					time.Since(start))
 | 
										time.Since(start))
 | 
				
			||||||
				if resourceMonitor != nil {
 | 
									if resourceMonitor != nil {
 | 
				
			||||||
					resourceMonitor.LogCPUSummary()
 | 
										resourceMonitor.LogCPUSummary()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,6 @@ import (
 | 
				
			|||||||
	kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
 | 
						kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
						e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2emetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
						e2emetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
				
			||||||
	e2eperf "k8s.io/kubernetes/test/e2e/framework/perf"
 | 
						e2eperf "k8s.io/kubernetes/test/e2e/framework/perf"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/perftype"
 | 
						"k8s.io/kubernetes/test/e2e/perftype"
 | 
				
			||||||
@@ -58,10 +57,10 @@ func logPodsOnNodes(c clientset.Interface, nodeNames []string) {
 | 
				
			|||||||
	for _, n := range nodeNames {
 | 
						for _, n := range nodeNames {
 | 
				
			||||||
		podList, err := e2ekubelet.GetKubeletRunningPods(c, n)
 | 
							podList, err := e2ekubelet.GetKubeletRunningPods(c, n)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			e2elog.Logf("Unable to retrieve kubelet pods for node %v", n)
 | 
								framework.Logf("Unable to retrieve kubelet pods for node %v", n)
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		e2elog.Logf("%d pods are running on node %v", len(podList.Items), n)
 | 
							framework.Logf("%d pods are running on node %v", len(podList.Items), n)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -95,7 +94,7 @@ func runResourceTrackingTest(f *framework.Framework, podsPerNode int, nodeNames
 | 
				
			|||||||
	deadline := time.Now().Add(monitoringTime)
 | 
						deadline := time.Now().Add(monitoringTime)
 | 
				
			||||||
	for time.Now().Before(deadline) {
 | 
						for time.Now().Before(deadline) {
 | 
				
			||||||
		timeLeft := deadline.Sub(time.Now())
 | 
							timeLeft := deadline.Sub(time.Now())
 | 
				
			||||||
		e2elog.Logf("Still running...%v left", timeLeft)
 | 
							framework.Logf("Still running...%v left", timeLeft)
 | 
				
			||||||
		if timeLeft < reportingPeriod {
 | 
							if timeLeft < reportingPeriod {
 | 
				
			||||||
			time.Sleep(timeLeft)
 | 
								time.Sleep(timeLeft)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
@@ -109,13 +108,13 @@ func runResourceTrackingTest(f *framework.Framework, podsPerNode int, nodeNames
 | 
				
			|||||||
	usageSummary, err := rm.GetLatest()
 | 
						usageSummary, err := rm.GetLatest()
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
	// TODO(random-liu): Remove the original log when we migrate to new perfdash
 | 
						// TODO(random-liu): Remove the original log when we migrate to new perfdash
 | 
				
			||||||
	e2elog.Logf("%s", rm.FormatResourceUsage(usageSummary))
 | 
						framework.Logf("%s", rm.FormatResourceUsage(usageSummary))
 | 
				
			||||||
	// Log perf result
 | 
						// Log perf result
 | 
				
			||||||
	printPerfData(e2eperf.ResourceUsageToPerfData(rm.GetMasterNodeLatest(usageSummary)))
 | 
						printPerfData(e2eperf.ResourceUsageToPerfData(rm.GetMasterNodeLatest(usageSummary)))
 | 
				
			||||||
	verifyMemoryLimits(f.ClientSet, expectedMemory, usageSummary)
 | 
						verifyMemoryLimits(f.ClientSet, expectedMemory, usageSummary)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cpuSummary := rm.GetCPUSummary()
 | 
						cpuSummary := rm.GetCPUSummary()
 | 
				
			||||||
	e2elog.Logf("%s", rm.FormatCPUSummary(cpuSummary))
 | 
						framework.Logf("%s", rm.FormatCPUSummary(cpuSummary))
 | 
				
			||||||
	// Log perf result
 | 
						// Log perf result
 | 
				
			||||||
	printPerfData(e2eperf.CPUUsageToPerfData(rm.GetMasterNodeCPUSummary(cpuSummary)))
 | 
						printPerfData(e2eperf.CPUUsageToPerfData(rm.GetMasterNodeCPUSummary(cpuSummary)))
 | 
				
			||||||
	verifyCPULimits(expectedCPU, cpuSummary)
 | 
						verifyCPULimits(expectedCPU, cpuSummary)
 | 
				
			||||||
@@ -149,14 +148,14 @@ func verifyMemoryLimits(c clientset.Interface, expected e2ekubelet.ResourceUsage
 | 
				
			|||||||
			errList = append(errList, fmt.Sprintf("node %v:\n %s", nodeName, strings.Join(nodeErrs, ", ")))
 | 
								errList = append(errList, fmt.Sprintf("node %v:\n %s", nodeName, strings.Join(nodeErrs, ", ")))
 | 
				
			||||||
			heapStats, err := e2ekubelet.GetKubeletHeapStats(c, nodeName)
 | 
								heapStats, err := e2ekubelet.GetKubeletHeapStats(c, nodeName)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Logf("Unable to get heap stats from %q", nodeName)
 | 
									framework.Logf("Unable to get heap stats from %q", nodeName)
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				e2elog.Logf("Heap stats on %q\n:%v", nodeName, heapStats)
 | 
									framework.Logf("Heap stats on %q\n:%v", nodeName, heapStats)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(errList) > 0 {
 | 
						if len(errList) > 0 {
 | 
				
			||||||
		e2elog.Failf("Memory usage exceeding limits:\n %s", strings.Join(errList, "\n"))
 | 
							framework.Failf("Memory usage exceeding limits:\n %s", strings.Join(errList, "\n"))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -190,7 +189,7 @@ func verifyCPULimits(expected e2ekubelet.ContainersCPUSummary, actual e2ekubelet
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(errList) > 0 {
 | 
						if len(errList) > 0 {
 | 
				
			||||||
		e2elog.Failf("CPU usage exceeding limits:\n %s", strings.Join(errList, "\n"))
 | 
							framework.Failf("CPU usage exceeding limits:\n %s", strings.Join(errList, "\n"))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -215,7 +214,7 @@ var _ = SIGDescribe("Kubelet [Serial] [Slow]", func() {
 | 
				
			|||||||
	ginkgo.AfterEach(func() {
 | 
						ginkgo.AfterEach(func() {
 | 
				
			||||||
		rm.Stop()
 | 
							rm.Stop()
 | 
				
			||||||
		result := om.GetLatestRuntimeOperationErrorRate()
 | 
							result := om.GetLatestRuntimeOperationErrorRate()
 | 
				
			||||||
		e2elog.Logf("runtime operation error metrics:\n%s", e2ekubelet.FormatRuntimeOperationErrorRate(result))
 | 
							framework.Logf("runtime operation error metrics:\n%s", e2ekubelet.FormatRuntimeOperationErrorRate(result))
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	SIGDescribe("regular resource usage tracking [Feature:RegularResourceUsageTracking]", func() {
 | 
						SIGDescribe("regular resource usage tracking [Feature:RegularResourceUsageTracking]", func() {
 | 
				
			||||||
		// We assume that the scheduler will make reasonable scheduling choices
 | 
							// We assume that the scheduler will make reasonable scheduling choices
 | 
				
			||||||
@@ -287,6 +286,6 @@ var _ = SIGDescribe("Kubelet [Serial] [Slow]", func() {
 | 
				
			|||||||
func printPerfData(p *perftype.PerfData) {
 | 
					func printPerfData(p *perftype.PerfData) {
 | 
				
			||||||
	// Notice that we must make sure the perftype.PerfResultEnd is in a new line.
 | 
						// Notice that we must make sure the perftype.PerfResultEnd is in a new line.
 | 
				
			||||||
	if str := e2emetrics.PrettyPrintJSON(p); str != "" {
 | 
						if str := e2emetrics.PrettyPrintJSON(p); str != "" {
 | 
				
			||||||
		e2elog.Logf("%s %s\n%s", perftype.PerfResultTag, str, perftype.PerfResultEnd)
 | 
							framework.Logf("%s %s\n%s", perftype.PerfResultTag, str, perftype.PerfResultEnd)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,6 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
						"k8s.io/apimachinery/pkg/util/sets"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
 | 
						e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -166,7 +165,7 @@ var _ = SIGDescribe("Mount propagation", func() {
 | 
				
			|||||||
			for _, mountName := range dirNames {
 | 
								for _, mountName := range dirNames {
 | 
				
			||||||
				cmd := fmt.Sprintf("cat /mnt/test/%s/file", mountName)
 | 
									cmd := fmt.Sprintf("cat /mnt/test/%s/file", mountName)
 | 
				
			||||||
				stdout, stderr, err := f.ExecShellInPodWithFullOutput(podName, cmd)
 | 
									stdout, stderr, err := f.ExecShellInPodWithFullOutput(podName, cmd)
 | 
				
			||||||
				e2elog.Logf("pod %s mount %s: stdout: %q, stderr: %q error: %v", podName, mountName, stdout, stderr, err)
 | 
									framework.Logf("pod %s mount %s: stdout: %q, stderr: %q error: %v", podName, mountName, stdout, stderr, err)
 | 
				
			||||||
				msg := fmt.Sprintf("When checking pod %s and directory %s", podName, mountName)
 | 
									msg := fmt.Sprintf("When checking pod %s and directory %s", podName, mountName)
 | 
				
			||||||
				shouldBeVisible := mounts.Has(mountName)
 | 
									shouldBeVisible := mounts.Has(mountName)
 | 
				
			||||||
				if shouldBeVisible {
 | 
									if shouldBeVisible {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,6 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/fields"
 | 
						"k8s.io/apimachinery/pkg/fields"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
						e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2enode "k8s.io/kubernetes/test/e2e/framework/node"
 | 
						e2enode "k8s.io/kubernetes/test/e2e/framework/node"
 | 
				
			||||||
	e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
 | 
						e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
 | 
				
			||||||
	testutils "k8s.io/kubernetes/test/utils"
 | 
						testutils "k8s.io/kubernetes/test/utils"
 | 
				
			||||||
@@ -188,7 +187,7 @@ var _ = SIGDescribe("NodeProblemDetector [DisabledForLargeClusters]", func() {
 | 
				
			|||||||
			workingSetStatsMsg += fmt.Sprintf(" %s[%.1f|%.1f|%.1f];", nodes.Items[i].Name,
 | 
								workingSetStatsMsg += fmt.Sprintf(" %s[%.1f|%.1f|%.1f];", nodes.Items[i].Name,
 | 
				
			||||||
				workingSetStats[host][0], workingSetStats[host][len(workingSetStats[host])/2], workingSetStats[host][len(workingSetStats[host])-1])
 | 
									workingSetStats[host][0], workingSetStats[host][len(workingSetStats[host])/2], workingSetStats[host][len(workingSetStats[host])-1])
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		e2elog.Logf("Node-Problem-Detector CPU and Memory Stats:\n\t%s\n\t%s\n\t%s", cpuStatsMsg, rssStatsMsg, workingSetStatsMsg)
 | 
							framework.Logf("Node-Problem-Detector CPU and Memory Stats:\n\t%s\n\t%s\n\t%s", cpuStatsMsg, rssStatsMsg, workingSetStatsMsg)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,6 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/util/uuid"
 | 
						"k8s.io/apimachinery/pkg/util/uuid"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -44,16 +43,16 @@ var _ = SIGDescribe("Pod garbage collector [Feature:PodGarbageCollector] [Slow]"
 | 
				
			|||||||
			pod.Status.Phase = v1.PodFailed
 | 
								pod.Status.Phase = v1.PodFailed
 | 
				
			||||||
			pod, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).UpdateStatus(pod)
 | 
								pod, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).UpdateStatus(pod)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("err failing pod: %v", err)
 | 
									framework.Failf("err failing pod: %v", err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			count++
 | 
								count++
 | 
				
			||||||
			if count%50 == 0 {
 | 
								if count%50 == 0 {
 | 
				
			||||||
				e2elog.Logf("count: %v", count)
 | 
									framework.Logf("count: %v", count)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		e2elog.Logf("created: %v", count)
 | 
							framework.Logf("created: %v", count)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// The gc controller polls every 30s and fires off a goroutine per
 | 
							// The gc controller polls every 30s and fires off a goroutine per
 | 
				
			||||||
		// pod to terminate.
 | 
							// pod to terminate.
 | 
				
			||||||
@@ -66,17 +65,17 @@ var _ = SIGDescribe("Pod garbage collector [Feature:PodGarbageCollector] [Slow]"
 | 
				
			|||||||
		pollErr := wait.Poll(1*time.Minute, timeout, func() (bool, error) {
 | 
							pollErr := wait.Poll(1*time.Minute, timeout, func() (bool, error) {
 | 
				
			||||||
			pods, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).List(metav1.ListOptions{})
 | 
								pods, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).List(metav1.ListOptions{})
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Logf("Failed to list pod %v", err)
 | 
									framework.Logf("Failed to list pod %v", err)
 | 
				
			||||||
				return false, nil
 | 
									return false, nil
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if len(pods.Items) != gcThreshold {
 | 
								if len(pods.Items) != gcThreshold {
 | 
				
			||||||
				e2elog.Logf("Number of observed pods %v, waiting for %v", len(pods.Items), gcThreshold)
 | 
									framework.Logf("Number of observed pods %v, waiting for %v", len(pods.Items), gcThreshold)
 | 
				
			||||||
				return false, nil
 | 
									return false, nil
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return true, nil
 | 
								return true, nil
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
		if pollErr != nil {
 | 
							if pollErr != nil {
 | 
				
			||||||
			e2elog.Failf("Failed to GC pods within %v, %v pods remaining, error: %v", timeout, len(pods.Items), err)
 | 
								framework.Failf("Failed to GC pods within %v, %v pods remaining, error: %v", timeout, len(pods.Items), err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,10 +33,9 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
						e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _ = SIGDescribe("Pods Extended", func() {
 | 
					var _ = SIGDescribe("Pods Extended", func() {
 | 
				
			||||||
@@ -144,7 +143,7 @@ var _ = SIGDescribe("Pods Extended", func() {
 | 
				
			|||||||
			err = wait.Poll(time.Second*5, time.Second*30, func() (bool, error) {
 | 
								err = wait.Poll(time.Second*5, time.Second*30, func() (bool, error) {
 | 
				
			||||||
				podList, err := e2ekubelet.GetKubeletPods(f.ClientSet, pod.Spec.NodeName)
 | 
									podList, err := e2ekubelet.GetKubeletPods(f.ClientSet, pod.Spec.NodeName)
 | 
				
			||||||
				if err != nil {
 | 
									if err != nil {
 | 
				
			||||||
					e2elog.Logf("Unable to retrieve kubelet pods for node %v: %v", pod.Spec.NodeName, err)
 | 
										framework.Logf("Unable to retrieve kubelet pods for node %v: %v", pod.Spec.NodeName, err)
 | 
				
			||||||
					return false, nil
 | 
										return false, nil
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				for _, kubeletPod := range podList.Items {
 | 
									for _, kubeletPod := range podList.Items {
 | 
				
			||||||
@@ -152,12 +151,12 @@ var _ = SIGDescribe("Pods Extended", func() {
 | 
				
			|||||||
						continue
 | 
											continue
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					if kubeletPod.ObjectMeta.DeletionTimestamp == nil {
 | 
										if kubeletPod.ObjectMeta.DeletionTimestamp == nil {
 | 
				
			||||||
						e2elog.Logf("deletion has not yet been observed")
 | 
											framework.Logf("deletion has not yet been observed")
 | 
				
			||||||
						return false, nil
 | 
											return false, nil
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					return false, nil
 | 
										return false, nil
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				e2elog.Logf("no pod exists with the name we were looking for, assuming the termination request was observed and completed")
 | 
									framework.Logf("no pod exists with the name we were looking for, assuming the termination request was observed and completed")
 | 
				
			||||||
				return true, nil
 | 
									return true, nil
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
			framework.ExpectNoError(err, "kubelet never observed the termination notice")
 | 
								framework.ExpectNoError(err, "kubelet never observed the termination notice")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/master/ports"
 | 
						"k8s.io/kubernetes/pkg/master/ports"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
						e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -146,16 +145,16 @@ func testPreStop(c clientset.Interface, ns string) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			if ctx.Err() != nil {
 | 
								if ctx.Err() != nil {
 | 
				
			||||||
				e2elog.Failf("Error validating prestop: %v", err)
 | 
									framework.Failf("Error validating prestop: %v", err)
 | 
				
			||||||
				return true, err
 | 
									return true, err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			ginkgo.By(fmt.Sprintf("Error validating prestop: %v", err))
 | 
								ginkgo.By(fmt.Sprintf("Error validating prestop: %v", err))
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			e2elog.Logf("Saw: %s", string(body))
 | 
								framework.Logf("Saw: %s", string(body))
 | 
				
			||||||
			state := State{}
 | 
								state := State{}
 | 
				
			||||||
			err := json.Unmarshal(body, &state)
 | 
								err := json.Unmarshal(body, &state)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Logf("Error parsing: %v", err)
 | 
									framework.Logf("Error parsing: %v", err)
 | 
				
			||||||
				return false, nil
 | 
									return false, nil
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if state.Received["prestop"] != 0 {
 | 
								if state.Received["prestop"] != 0 {
 | 
				
			||||||
@@ -218,7 +217,7 @@ var _ = SIGDescribe("PreStop", func() {
 | 
				
			|||||||
				if pod.Name != kubeletPod.Name {
 | 
									if pod.Name != kubeletPod.Name {
 | 
				
			||||||
					continue
 | 
										continue
 | 
				
			||||||
				} else if kubeletPod.Status.Phase == v1.PodRunning {
 | 
									} else if kubeletPod.Status.Phase == v1.PodRunning {
 | 
				
			||||||
					e2elog.Logf("pod is running")
 | 
										framework.Logf("pod is running")
 | 
				
			||||||
					return true, err
 | 
										return true, err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,6 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
 | 
						e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
@@ -47,7 +46,7 @@ var _ = SIGDescribe("SSH", func() {
 | 
				
			|||||||
		ginkgo.By("Getting all nodes' SSH-able IP addresses")
 | 
							ginkgo.By("Getting all nodes' SSH-able IP addresses")
 | 
				
			||||||
		hosts, err := e2essh.NodeSSHHosts(f.ClientSet)
 | 
							hosts, err := e2essh.NodeSSHHosts(f.ClientSet)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			e2elog.Failf("Error getting node hostnames: %v", err)
 | 
								framework.Failf("Error getting node hostnames: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		testCases := []struct {
 | 
							testCases := []struct {
 | 
				
			||||||
@@ -82,23 +81,23 @@ var _ = SIGDescribe("SSH", func() {
 | 
				
			|||||||
				result, err := e2essh.SSH(testCase.cmd, host, framework.TestContext.Provider)
 | 
									result, err := e2essh.SSH(testCase.cmd, host, framework.TestContext.Provider)
 | 
				
			||||||
				stdout, stderr := strings.TrimSpace(result.Stdout), strings.TrimSpace(result.Stderr)
 | 
									stdout, stderr := strings.TrimSpace(result.Stdout), strings.TrimSpace(result.Stderr)
 | 
				
			||||||
				if err != testCase.expectedError {
 | 
									if err != testCase.expectedError {
 | 
				
			||||||
					e2elog.Failf("Ran %s on %s, got error %v, expected %v", testCase.cmd, host, err, testCase.expectedError)
 | 
										framework.Failf("Ran %s on %s, got error %v, expected %v", testCase.cmd, host, err, testCase.expectedError)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				if testCase.checkStdout && stdout != testCase.expectedStdout {
 | 
									if testCase.checkStdout && stdout != testCase.expectedStdout {
 | 
				
			||||||
					e2elog.Failf("Ran %s on %s, got stdout '%s', expected '%s'", testCase.cmd, host, stdout, testCase.expectedStdout)
 | 
										framework.Failf("Ran %s on %s, got stdout '%s', expected '%s'", testCase.cmd, host, stdout, testCase.expectedStdout)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				if stderr != testCase.expectedStderr {
 | 
									if stderr != testCase.expectedStderr {
 | 
				
			||||||
					e2elog.Failf("Ran %s on %s, got stderr '%s', expected '%s'", testCase.cmd, host, stderr, testCase.expectedStderr)
 | 
										framework.Failf("Ran %s on %s, got stderr '%s', expected '%s'", testCase.cmd, host, stderr, testCase.expectedStderr)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				if result.Code != testCase.expectedCode {
 | 
									if result.Code != testCase.expectedCode {
 | 
				
			||||||
					e2elog.Failf("Ran %s on %s, got exit code %d, expected %d", testCase.cmd, host, result.Code, testCase.expectedCode)
 | 
										framework.Failf("Ran %s on %s, got exit code %d, expected %d", testCase.cmd, host, result.Code, testCase.expectedCode)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				// Show stdout, stderr for logging purposes.
 | 
									// Show stdout, stderr for logging purposes.
 | 
				
			||||||
				if len(stdout) > 0 {
 | 
									if len(stdout) > 0 {
 | 
				
			||||||
					e2elog.Logf("Got stdout from %s: %s", host, strings.TrimSpace(stdout))
 | 
										framework.Logf("Got stdout from %s: %s", host, strings.TrimSpace(stdout))
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				if len(stderr) > 0 {
 | 
									if len(stderr) > 0 {
 | 
				
			||||||
					e2elog.Logf("Got stderr from %s: %s", host, strings.TrimSpace(stderr))
 | 
										framework.Logf("Got stderr from %s: %s", host, strings.TrimSpace(stderr))
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -106,7 +105,7 @@ var _ = SIGDescribe("SSH", func() {
 | 
				
			|||||||
		// Quickly test that SSH itself errors correctly.
 | 
							// Quickly test that SSH itself errors correctly.
 | 
				
			||||||
		ginkgo.By("SSH'ing to a nonexistent host")
 | 
							ginkgo.By("SSH'ing to a nonexistent host")
 | 
				
			||||||
		if _, err = e2essh.SSH(`echo "hello"`, "i.do.not.exist", framework.TestContext.Provider); err == nil {
 | 
							if _, err = e2essh.SSH(`echo "hello"`, "i.do.not.exist", framework.TestContext.Provider); err == nil {
 | 
				
			||||||
			e2elog.Failf("Expected error trying to SSH to nonexistent host.")
 | 
								framework.Failf("Expected error trying to SSH to nonexistent host.")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/util/slice"
 | 
						"k8s.io/kubernetes/pkg/util/slice"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	jobutil "k8s.io/kubernetes/test/e2e/framework/job"
 | 
						jobutil "k8s.io/kubernetes/test/e2e/framework/job"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -44,7 +43,7 @@ func cleanupJob(f *framework.Framework, job *batchv1.Job) {
 | 
				
			|||||||
	ns := f.Namespace.Name
 | 
						ns := f.Namespace.Name
 | 
				
			||||||
	c := f.ClientSet
 | 
						c := f.ClientSet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	e2elog.Logf("Remove the Job's dummy finalizer; the Job should be deleted cascadingly")
 | 
						framework.Logf("Remove the Job's dummy finalizer; the Job should be deleted cascadingly")
 | 
				
			||||||
	removeFinalizerFunc := func(j *batchv1.Job) {
 | 
						removeFinalizerFunc := func(j *batchv1.Job) {
 | 
				
			||||||
		j.ObjectMeta.Finalizers = slice.RemoveString(j.ObjectMeta.Finalizers, dummyFinalizer, nil)
 | 
							j.ObjectMeta.Finalizers = slice.RemoveString(j.ObjectMeta.Finalizers, dummyFinalizer, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -70,19 +69,19 @@ func testFinishedJob(f *framework.Framework) {
 | 
				
			|||||||
	job.ObjectMeta.Finalizers = []string{dummyFinalizer}
 | 
						job.ObjectMeta.Finalizers = []string{dummyFinalizer}
 | 
				
			||||||
	defer cleanupJob(f, job)
 | 
						defer cleanupJob(f, job)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	e2elog.Logf("Create a Job %s/%s with TTL", ns, job.Name)
 | 
						framework.Logf("Create a Job %s/%s with TTL", ns, job.Name)
 | 
				
			||||||
	job, err := jobutil.CreateJob(c, ns, job)
 | 
						job, err := jobutil.CreateJob(c, ns, job)
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	e2elog.Logf("Wait for the Job to finish")
 | 
						framework.Logf("Wait for the Job to finish")
 | 
				
			||||||
	err = jobutil.WaitForJobFinish(c, ns, job.Name)
 | 
						err = jobutil.WaitForJobFinish(c, ns, job.Name)
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	e2elog.Logf("Wait for TTL after finished controller to delete the Job")
 | 
						framework.Logf("Wait for TTL after finished controller to delete the Job")
 | 
				
			||||||
	err = jobutil.WaitForJobDeleting(c, ns, job.Name)
 | 
						err = jobutil.WaitForJobDeleting(c, ns, job.Name)
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	e2elog.Logf("Check Job's deletionTimestamp and compare with the time when the Job finished")
 | 
						framework.Logf("Check Job's deletionTimestamp and compare with the time when the Job finished")
 | 
				
			||||||
	job, err = jobutil.GetJob(c, ns, job.Name)
 | 
						job, err = jobutil.GetJob(c, ns, job.Name)
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
	finishTime := jobutil.FinishTime(job)
 | 
						finishTime := jobutil.FinishTime(job)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,7 +46,6 @@ go_library(
 | 
				
			|||||||
        "//test/e2e/common:go_default_library",
 | 
					        "//test/e2e/common:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework:go_default_library",
 | 
					        "//test/e2e/framework:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/gpu:go_default_library",
 | 
					        "//test/e2e/framework/gpu:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/log:go_default_library",
 | 
					 | 
				
			||||||
        "//test/e2e/framework/metrics:go_default_library",
 | 
					        "//test/e2e/framework/metrics:go_default_library",
 | 
				
			||||||
        "//test/utils/image:go_default_library",
 | 
					        "//test/utils/image:go_default_library",
 | 
				
			||||||
        "//vendor/github.com/blang/semver:go_default_library",
 | 
					        "//vendor/github.com/blang/semver:go_default_library",
 | 
				
			||||||
@@ -170,7 +169,6 @@ go_test(
 | 
				
			|||||||
        "//test/e2e/framework:go_default_library",
 | 
					        "//test/e2e/framework:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/deviceplugin:go_default_library",
 | 
					        "//test/e2e/framework/deviceplugin:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/gpu:go_default_library",
 | 
					        "//test/e2e/framework/gpu:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/log:go_default_library",
 | 
					 | 
				
			||||||
        "//test/e2e/framework/metrics:go_default_library",
 | 
					        "//test/e2e/framework/metrics:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/node:go_default_library",
 | 
					        "//test/e2e/framework/node:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/pod:go_default_library",
 | 
					        "//test/e2e/framework/pod:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,6 @@ import (
 | 
				
			|||||||
	watchtools "k8s.io/client-go/tools/watch"
 | 
						watchtools "k8s.io/client-go/tools/watch"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/security/apparmor"
 | 
						"k8s.io/kubernetes/pkg/security/apparmor"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/davecgh/go-spew/spew"
 | 
						"github.com/davecgh/go-spew/spew"
 | 
				
			||||||
@@ -60,7 +59,7 @@ var _ = framework.KubeDescribe("AppArmor [Feature:AppArmor][NodeFeature:AppArmor
 | 
				
			|||||||
			ginkgo.It("should enforce a profile blocking writes", func() {
 | 
								ginkgo.It("should enforce a profile blocking writes", func() {
 | 
				
			||||||
				status := runAppArmorTest(f, true, apparmor.ProfileNamePrefix+apparmorProfilePrefix+"deny-write")
 | 
									status := runAppArmorTest(f, true, apparmor.ProfileNamePrefix+apparmorProfilePrefix+"deny-write")
 | 
				
			||||||
				if len(status.ContainerStatuses) == 0 {
 | 
									if len(status.ContainerStatuses) == 0 {
 | 
				
			||||||
					e2elog.Failf("Unexpected pod status: %s", spew.Sdump(status))
 | 
										framework.Failf("Unexpected pod status: %s", spew.Sdump(status))
 | 
				
			||||||
					return
 | 
										return
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				state := status.ContainerStatuses[0].State.Terminated
 | 
									state := status.ContainerStatuses[0].State.Terminated
 | 
				
			||||||
@@ -71,7 +70,7 @@ var _ = framework.KubeDescribe("AppArmor [Feature:AppArmor][NodeFeature:AppArmor
 | 
				
			|||||||
			ginkgo.It("should enforce a permissive profile", func() {
 | 
								ginkgo.It("should enforce a permissive profile", func() {
 | 
				
			||||||
				status := runAppArmorTest(f, true, apparmor.ProfileNamePrefix+apparmorProfilePrefix+"audit-write")
 | 
									status := runAppArmorTest(f, true, apparmor.ProfileNamePrefix+apparmorProfilePrefix+"audit-write")
 | 
				
			||||||
				if len(status.ContainerStatuses) == 0 {
 | 
									if len(status.ContainerStatuses) == 0 {
 | 
				
			||||||
					e2elog.Failf("Unexpected pod status: %s", spew.Sdump(status))
 | 
										framework.Failf("Unexpected pod status: %s", spew.Sdump(status))
 | 
				
			||||||
					return
 | 
										return
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				state := status.ContainerStatuses[0].State.Terminated
 | 
									state := status.ContainerStatuses[0].State.Terminated
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,6 @@ import (
 | 
				
			|||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2emetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
						e2emetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
				
			||||||
	e2eperf "k8s.io/kubernetes/test/e2e/framework/perf"
 | 
						e2eperf "k8s.io/kubernetes/test/e2e/framework/perf"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/perftype"
 | 
						"k8s.io/kubernetes/test/e2e/perftype"
 | 
				
			||||||
@@ -47,9 +46,9 @@ func dumpDataToFile(data interface{}, labels map[string]string, prefix string) {
 | 
				
			|||||||
	testName := labels["test"]
 | 
						testName := labels["test"]
 | 
				
			||||||
	fileName := path.Join(framework.TestContext.ReportDir, fmt.Sprintf("%s-%s-%s.json", prefix, framework.TestContext.ReportPrefix, testName))
 | 
						fileName := path.Join(framework.TestContext.ReportDir, fmt.Sprintf("%s-%s-%s.json", prefix, framework.TestContext.ReportPrefix, testName))
 | 
				
			||||||
	labels["timestamp"] = strconv.FormatInt(time.Now().UTC().Unix(), 10)
 | 
						labels["timestamp"] = strconv.FormatInt(time.Now().UTC().Unix(), 10)
 | 
				
			||||||
	e2elog.Logf("Dumping perf data for test %q to %q.", testName, fileName)
 | 
						framework.Logf("Dumping perf data for test %q to %q.", testName, fileName)
 | 
				
			||||||
	if err := ioutil.WriteFile(fileName, []byte(e2emetrics.PrettyPrintJSON(data)), 0644); err != nil {
 | 
						if err := ioutil.WriteFile(fileName, []byte(e2emetrics.PrettyPrintJSON(data)), 0644); err != nil {
 | 
				
			||||||
		e2elog.Logf("Failed to write perf data for test %q to %q: %v", testName, fileName, err)
 | 
							framework.Logf("Failed to write perf data for test %q to %q: %v", testName, fileName, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -83,7 +82,7 @@ func logDensityTimeSeries(rc *ResourceCollector, create, watch map[string]metav1
 | 
				
			|||||||
	timeSeries.ResourceData = rc.GetResourceTimeSeries()
 | 
						timeSeries.ResourceData = rc.GetResourceTimeSeries()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if framework.TestContext.ReportDir == "" {
 | 
						if framework.TestContext.ReportDir == "" {
 | 
				
			||||||
		e2elog.Logf("%s %s\n%s", TimeSeriesTag, e2emetrics.PrettyPrintJSON(timeSeries), TimeSeriesEnd)
 | 
							framework.Logf("%s %s\n%s", TimeSeriesTag, e2emetrics.PrettyPrintJSON(timeSeries), TimeSeriesEnd)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	dumpDataToFile(timeSeries, timeSeries.Labels, "time_series")
 | 
						dumpDataToFile(timeSeries, timeSeries.Labels, "time_series")
 | 
				
			||||||
@@ -160,22 +159,22 @@ func getTestNodeInfo(f *framework.Framework, testName, testDesc string) map[stri
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	cpu, ok := node.Status.Capacity[v1.ResourceCPU]
 | 
						cpu, ok := node.Status.Capacity[v1.ResourceCPU]
 | 
				
			||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
		e2elog.Failf("Fail to fetch CPU capacity value of test node.")
 | 
							framework.Failf("Fail to fetch CPU capacity value of test node.")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memory, ok := node.Status.Capacity[v1.ResourceMemory]
 | 
						memory, ok := node.Status.Capacity[v1.ResourceMemory]
 | 
				
			||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
		e2elog.Failf("Fail to fetch Memory capacity value of test node.")
 | 
							framework.Failf("Fail to fetch Memory capacity value of test node.")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cpuValue, ok := cpu.AsInt64()
 | 
						cpuValue, ok := cpu.AsInt64()
 | 
				
			||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
		e2elog.Failf("Fail to fetch CPU capacity value as Int64.")
 | 
							framework.Failf("Fail to fetch CPU capacity value as Int64.")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memoryValue, ok := memory.AsInt64()
 | 
						memoryValue, ok := memory.AsInt64()
 | 
				
			||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
		e2elog.Failf("Fail to fetch Memory capacity value as Int64.")
 | 
							framework.Failf("Fail to fetch Memory capacity value as Int64.")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	image := node.Status.NodeInfo.OSImage
 | 
						image := node.Status.NodeInfo.OSImage
 | 
				
			||||||
@@ -196,6 +195,6 @@ func getTestNodeInfo(f *framework.Framework, testName, testDesc string) map[stri
 | 
				
			|||||||
func printPerfData(p *perftype.PerfData) {
 | 
					func printPerfData(p *perftype.PerfData) {
 | 
				
			||||||
	// Notice that we must make sure the perftype.PerfResultEnd is in a new line.
 | 
						// Notice that we must make sure the perftype.PerfResultEnd is in a new line.
 | 
				
			||||||
	if str := e2emetrics.PrettyPrintJSON(p); str != "" {
 | 
						if str := e2emetrics.PrettyPrintJSON(p); str != "" {
 | 
				
			||||||
		e2elog.Logf("%s %s\n%s", perftype.PerfResultTag, str, perftype.PerfResultEnd)
 | 
							framework.Logf("%s %s\n%s", perftype.PerfResultTag, str, perftype.PerfResultEnd)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,11 +33,10 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/util/uuid"
 | 
						"k8s.io/apimachinery/pkg/util/uuid"
 | 
				
			||||||
	runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
 | 
						runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
	"github.com/onsi/gomega"
 | 
						"github.com/onsi/gomega"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getOOMScoreForPid(pid int) (int, error) {
 | 
					func getOOMScoreForPid(pid int) (int, error) {
 | 
				
			||||||
@@ -162,9 +161,9 @@ var _ = framework.KubeDescribe("Container Manager Misc [Serial]", func() {
 | 
				
			|||||||
							},
 | 
												},
 | 
				
			||||||
						})
 | 
											})
 | 
				
			||||||
						framework.ExpectNoError(err)
 | 
											framework.ExpectNoError(err)
 | 
				
			||||||
						e2elog.Logf("Running containers:")
 | 
											framework.Logf("Running containers:")
 | 
				
			||||||
						for _, c := range containers {
 | 
											for _, c := range containers {
 | 
				
			||||||
							e2elog.Logf("%+v", c)
 | 
												framework.Logf("%+v", c)
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				})
 | 
									})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,6 @@ import (
 | 
				
			|||||||
	kubemetrics "k8s.io/kubernetes/pkg/kubelet/metrics"
 | 
						kubemetrics "k8s.io/kubernetes/pkg/kubelet/metrics"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
						e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2emetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
						e2emetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -200,7 +199,7 @@ var _ = framework.KubeDescribe("Density [Serial] [Slow]", func() {
 | 
				
			|||||||
				// Here we set API QPS limit from default 5 to 60 in order to test real Kubelet performance.
 | 
									// Here we set API QPS limit from default 5 to 60 in order to test real Kubelet performance.
 | 
				
			||||||
				// Note that it will cause higher resource usage.
 | 
									// Note that it will cause higher resource usage.
 | 
				
			||||||
				tempSetCurrentKubeletConfig(f, func(cfg *kubeletconfig.KubeletConfiguration) {
 | 
									tempSetCurrentKubeletConfig(f, func(cfg *kubeletconfig.KubeletConfiguration) {
 | 
				
			||||||
					e2elog.Logf("Old QPS limit is: %d", cfg.KubeAPIQPS)
 | 
										framework.Logf("Old QPS limit is: %d", cfg.KubeAPIQPS)
 | 
				
			||||||
					// Set new API QPS limit
 | 
										// Set new API QPS limit
 | 
				
			||||||
					cfg.KubeAPIQPS = int32(itArg.APIQPSLimit)
 | 
										cfg.KubeAPIQPS = int32(itArg.APIQPSLimit)
 | 
				
			||||||
				})
 | 
									})
 | 
				
			||||||
@@ -360,7 +359,7 @@ func runDensityBatchTest(f *framework.Framework, rc *ResourceCollector, testArg
 | 
				
			|||||||
	}, 10*time.Minute, 10*time.Second).Should(gomega.BeTrue())
 | 
						}, 10*time.Minute, 10*time.Second).Should(gomega.BeTrue())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(watchTimes) < testArg.podsNr {
 | 
						if len(watchTimes) < testArg.podsNr {
 | 
				
			||||||
		e2elog.Failf("Timeout reached waiting for all Pods to be observed by the watch.")
 | 
							framework.Failf("Timeout reached waiting for all Pods to be observed by the watch.")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Analyze results
 | 
						// Analyze results
 | 
				
			||||||
@@ -541,7 +540,7 @@ func logAndVerifyLatency(batchLag time.Duration, e2eLags []e2emetrics.PodLatency
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// TODO(coufon): do not trust 'kubelet' metrics since they are not reset!
 | 
						// TODO(coufon): do not trust 'kubelet' metrics since they are not reset!
 | 
				
			||||||
	latencyMetrics, _ := getPodStartLatency(kubeletAddr)
 | 
						latencyMetrics, _ := getPodStartLatency(kubeletAddr)
 | 
				
			||||||
	e2elog.Logf("Kubelet Prometheus metrics (not reset):\n%s", e2emetrics.PrettyPrintJSON(latencyMetrics))
 | 
						framework.Logf("Kubelet Prometheus metrics (not reset):\n%s", e2emetrics.PrettyPrintJSON(latencyMetrics))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	podStartupLatency := e2emetrics.ExtractLatencyMetrics(e2eLags)
 | 
						podStartupLatency := e2emetrics.ExtractLatencyMetrics(e2eLags)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,14 +28,12 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/util/uuid"
 | 
						"k8s.io/apimachinery/pkg/util/uuid"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/features"
 | 
						"k8s.io/kubernetes/pkg/features"
 | 
				
			||||||
	kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
						kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
				
			||||||
 | 
						kubeletpodresourcesv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/podresources/v1alpha1"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	dputil "k8s.io/kubernetes/test/e2e/framework/deviceplugin"
 | 
						dputil "k8s.io/kubernetes/test/e2e/framework/deviceplugin"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2enode "k8s.io/kubernetes/test/e2e/framework/node"
 | 
						e2enode "k8s.io/kubernetes/test/e2e/framework/node"
 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kubeletpodresourcesv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/podresources/v1alpha1"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
	"github.com/onsi/gomega"
 | 
						"github.com/onsi/gomega"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -71,7 +69,7 @@ func testDevicePlugin(f *framework.Framework, pluginSockDir string) {
 | 
				
			|||||||
					dp.Spec.Containers[0].Env[i].Value = pluginSockDir
 | 
										dp.Spec.Containers[0].Env[i].Value = pluginSockDir
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			e2elog.Logf("env %v", dp.Spec.Containers[0].Env)
 | 
								framework.Logf("env %v", dp.Spec.Containers[0].Env)
 | 
				
			||||||
			dp.Spec.NodeName = framework.TestContext.NodeName
 | 
								dp.Spec.NodeName = framework.TestContext.NodeName
 | 
				
			||||||
			ginkgo.By("Create sample device plugin pod")
 | 
								ginkgo.By("Create sample device plugin pod")
 | 
				
			||||||
			devicePluginPod, err := f.ClientSet.CoreV1().Pods(metav1.NamespaceSystem).Create(dp)
 | 
								devicePluginPod, err := f.ClientSet.CoreV1().Pods(metav1.NamespaceSystem).Create(dp)
 | 
				
			||||||
@@ -81,7 +79,7 @@ func testDevicePlugin(f *framework.Framework, pluginSockDir string) {
 | 
				
			|||||||
			gomega.Eventually(func() bool {
 | 
								gomega.Eventually(func() bool {
 | 
				
			||||||
				return dputil.NumberOfSampleResources(getLocalNode(f)) > 0
 | 
									return dputil.NumberOfSampleResources(getLocalNode(f)) > 0
 | 
				
			||||||
			}, 5*time.Minute, framework.Poll).Should(gomega.BeTrue())
 | 
								}, 5*time.Minute, framework.Poll).Should(gomega.BeTrue())
 | 
				
			||||||
			e2elog.Logf("Successfully created device plugin pod")
 | 
								framework.Logf("Successfully created device plugin pod")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			ginkgo.By("Waiting for the resource exported by the sample device plugin to become available on the local node")
 | 
								ginkgo.By("Waiting for the resource exported by the sample device plugin to become available on the local node")
 | 
				
			||||||
			// TODO(vikasc): Instead of hard-coding number of devices, provide number of devices in the sample-device-plugin using configmap
 | 
								// TODO(vikasc): Instead of hard-coding number of devices, provide number of devices in the sample-device-plugin using configmap
 | 
				
			||||||
@@ -103,7 +101,7 @@ func testDevicePlugin(f *framework.Framework, pluginSockDir string) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			podResources, err := getNodeDevices()
 | 
								podResources, err := getNodeDevices()
 | 
				
			||||||
			var resourcesForOurPod *kubeletpodresourcesv1alpha1.PodResources
 | 
								var resourcesForOurPod *kubeletpodresourcesv1alpha1.PodResources
 | 
				
			||||||
			e2elog.Logf("pod resources %v", podResources)
 | 
								framework.Logf("pod resources %v", podResources)
 | 
				
			||||||
			gomega.Expect(err).To(gomega.BeNil())
 | 
								gomega.Expect(err).To(gomega.BeNil())
 | 
				
			||||||
			framework.ExpectEqual(len(podResources.PodResources), 2)
 | 
								framework.ExpectEqual(len(podResources.PodResources), 2)
 | 
				
			||||||
			for _, res := range podResources.GetPodResources() {
 | 
								for _, res := range podResources.GetPodResources() {
 | 
				
			||||||
@@ -111,7 +109,7 @@ func testDevicePlugin(f *framework.Framework, pluginSockDir string) {
 | 
				
			|||||||
					resourcesForOurPod = res
 | 
										resourcesForOurPod = res
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			e2elog.Logf("resourcesForOurPod %v", resourcesForOurPod)
 | 
								framework.Logf("resourcesForOurPod %v", resourcesForOurPod)
 | 
				
			||||||
			gomega.Expect(resourcesForOurPod).NotTo(gomega.BeNil())
 | 
								gomega.Expect(resourcesForOurPod).NotTo(gomega.BeNil())
 | 
				
			||||||
			framework.ExpectEqual(resourcesForOurPod.Name, pod1.Name)
 | 
								framework.ExpectEqual(resourcesForOurPod.Name, pod1.Name)
 | 
				
			||||||
			framework.ExpectEqual(resourcesForOurPod.Namespace, pod1.Namespace)
 | 
								framework.ExpectEqual(resourcesForOurPod.Namespace, pod1.Namespace)
 | 
				
			||||||
@@ -158,7 +156,7 @@ func testDevicePlugin(f *framework.Framework, pluginSockDir string) {
 | 
				
			|||||||
			framework.ExpectNoError(err)
 | 
								framework.ExpectNoError(err)
 | 
				
			||||||
			waitForContainerRemoval(devicePluginPod.Spec.Containers[0].Name, devicePluginPod.Name, devicePluginPod.Namespace)
 | 
								waitForContainerRemoval(devicePluginPod.Spec.Containers[0].Name, devicePluginPod.Name, devicePluginPod.Namespace)
 | 
				
			||||||
			_, err = f.ClientSet.CoreV1().Pods(metav1.NamespaceSystem).Get(dp.Name, getOptions)
 | 
								_, err = f.ClientSet.CoreV1().Pods(metav1.NamespaceSystem).Get(dp.Name, getOptions)
 | 
				
			||||||
			e2elog.Logf("Trying to get dp pod after deletion. err must be non-nil. err: %v", err)
 | 
								framework.Logf("Trying to get dp pod after deletion. err must be non-nil. err: %v", err)
 | 
				
			||||||
			framework.ExpectError(err)
 | 
								framework.ExpectError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			devicePluginPod, err = f.ClientSet.CoreV1().Pods(metav1.NamespaceSystem).Create(dp)
 | 
								devicePluginPod, err = f.ClientSet.CoreV1().Pods(metav1.NamespaceSystem).Create(dp)
 | 
				
			||||||
@@ -266,7 +264,7 @@ func ensurePodContainerRestart(f *framework.Framework, podName string, contName
 | 
				
			|||||||
	var currentCount int32
 | 
						var currentCount int32
 | 
				
			||||||
	p, err := f.PodClient().Get(podName, metav1.GetOptions{})
 | 
						p, err := f.PodClient().Get(podName, metav1.GetOptions{})
 | 
				
			||||||
	if err != nil || len(p.Status.ContainerStatuses) < 1 {
 | 
						if err != nil || len(p.Status.ContainerStatuses) < 1 {
 | 
				
			||||||
		e2elog.Failf("ensurePodContainerRestart failed for pod %q: %v", podName, err)
 | 
							framework.Failf("ensurePodContainerRestart failed for pod %q: %v", podName, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	initialCount = p.Status.ContainerStatuses[0].RestartCount
 | 
						initialCount = p.Status.ContainerStatuses[0].RestartCount
 | 
				
			||||||
	gomega.Eventually(func() bool {
 | 
						gomega.Eventually(func() bool {
 | 
				
			||||||
@@ -275,7 +273,7 @@ func ensurePodContainerRestart(f *framework.Framework, podName string, contName
 | 
				
			|||||||
			return false
 | 
								return false
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		currentCount = p.Status.ContainerStatuses[0].RestartCount
 | 
							currentCount = p.Status.ContainerStatuses[0].RestartCount
 | 
				
			||||||
		e2elog.Logf("initial %v, current %v", initialCount, currentCount)
 | 
							framework.Logf("initial %v, current %v", initialCount, currentCount)
 | 
				
			||||||
		return currentCount > initialCount
 | 
							return currentCount > initialCount
 | 
				
			||||||
	}, 5*time.Minute, framework.Poll).Should(gomega.BeTrue())
 | 
						}, 5*time.Minute, framework.Poll).Should(gomega.BeTrue())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -284,10 +282,10 @@ func ensurePodContainerRestart(f *framework.Framework, podName string, contName
 | 
				
			|||||||
func parseLog(f *framework.Framework, podName string, contName string, re string) string {
 | 
					func parseLog(f *framework.Framework, podName string, contName string, re string) string {
 | 
				
			||||||
	logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, podName, contName)
 | 
						logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, podName, contName)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Failf("GetPodLogs for pod %q failed: %v", podName, err)
 | 
							framework.Failf("GetPodLogs for pod %q failed: %v", podName, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	e2elog.Logf("got pod logs: %v", logs)
 | 
						framework.Logf("got pod logs: %v", logs)
 | 
				
			||||||
	regex := regexp.MustCompile(re)
 | 
						regex := regexp.MustCompile(re)
 | 
				
			||||||
	matches := regex.FindStringSubmatch(logs)
 | 
						matches := regex.FindStringSubmatch(logs)
 | 
				
			||||||
	if len(matches) < 2 {
 | 
						if len(matches) < 2 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,7 +33,6 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/util/uuid"
 | 
						"k8s.io/apimachinery/pkg/util/uuid"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -56,7 +55,7 @@ var _ = SIGDescribe("Dockershim [Serial] [Disruptive] [Feature:Docker][Legacy:Do
 | 
				
			|||||||
		runPodCheckpointTest(f, podName, func() {
 | 
							runPodCheckpointTest(f, podName, func() {
 | 
				
			||||||
			checkpoints := findCheckpoints(podName)
 | 
								checkpoints := findCheckpoints(podName)
 | 
				
			||||||
			if len(checkpoints) == 0 {
 | 
								if len(checkpoints) == 0 {
 | 
				
			||||||
				e2elog.Failf("No checkpoint for the pod was found")
 | 
									framework.Failf("No checkpoint for the pod was found")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
@@ -85,14 +84,14 @@ var _ = SIGDescribe("Dockershim [Serial] [Disruptive] [Feature:Docker][Legacy:Do
 | 
				
			|||||||
			runPodCheckpointTest(f, podName, func() {
 | 
								runPodCheckpointTest(f, podName, func() {
 | 
				
			||||||
				checkpoints := findCheckpoints(podName)
 | 
									checkpoints := findCheckpoints(podName)
 | 
				
			||||||
				if len(checkpoints) == 0 {
 | 
									if len(checkpoints) == 0 {
 | 
				
			||||||
					e2elog.Failf("No checkpoint for the pod was found")
 | 
										framework.Failf("No checkpoint for the pod was found")
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				ginkgo.By("Removing checkpoint of test pod")
 | 
									ginkgo.By("Removing checkpoint of test pod")
 | 
				
			||||||
				for _, filename := range checkpoints {
 | 
									for _, filename := range checkpoints {
 | 
				
			||||||
					if len(filename) == 0 {
 | 
										if len(filename) == 0 {
 | 
				
			||||||
						continue
 | 
											continue
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					e2elog.Logf("Removing checkpoint %q", filename)
 | 
										framework.Logf("Removing checkpoint %q", filename)
 | 
				
			||||||
					_, err := exec.Command("sudo", "rm", filename).CombinedOutput()
 | 
										_, err := exec.Command("sudo", "rm", filename).CombinedOutput()
 | 
				
			||||||
					framework.ExpectNoError(err, "Failed to remove checkpoint file %q: %v", string(filename), err)
 | 
										framework.ExpectNoError(err, "Failed to remove checkpoint file %q: %v", string(filename), err)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
@@ -134,7 +133,7 @@ var _ = SIGDescribe("Dockershim [Serial] [Disruptive] [Feature:Docker][Legacy:Do
 | 
				
			|||||||
				ginkgo.By("Corrupt checkpoint file")
 | 
									ginkgo.By("Corrupt checkpoint file")
 | 
				
			||||||
				checkpoints := findCheckpoints(podName)
 | 
									checkpoints := findCheckpoints(podName)
 | 
				
			||||||
				if len(checkpoints) == 0 {
 | 
									if len(checkpoints) == 0 {
 | 
				
			||||||
					e2elog.Failf("No checkpoint for the pod was found")
 | 
										framework.Failf("No checkpoint for the pod was found")
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				for _, file := range checkpoints {
 | 
									for _, file := range checkpoints {
 | 
				
			||||||
					f, err := os.OpenFile(file, os.O_WRONLY|os.O_APPEND, 0644)
 | 
										f, err := os.OpenFile(file, os.O_WRONLY|os.O_APPEND, 0644)
 | 
				
			||||||
@@ -176,10 +175,10 @@ func runPodCheckpointTest(f *framework.Framework, podName string, twist func())
 | 
				
			|||||||
		if len(checkpoints) == 0 {
 | 
							if len(checkpoints) == 0 {
 | 
				
			||||||
			return true, nil
 | 
								return true, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		e2elog.Logf("Checkpoint of %q still exists: %v", podName, checkpoints)
 | 
							framework.Logf("Checkpoint of %q still exists: %v", podName, checkpoints)
 | 
				
			||||||
		return false, nil
 | 
							return false, nil
 | 
				
			||||||
	}); err != nil {
 | 
						}); err != nil {
 | 
				
			||||||
		e2elog.Failf("Failed to observe checkpoint being removed within timeout: %v", err)
 | 
							framework.Failf("Failed to observe checkpoint being removed within timeout: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -213,7 +212,7 @@ func findCheckpoints(match string) []string {
 | 
				
			|||||||
	checkpoints := []string{}
 | 
						checkpoints := []string{}
 | 
				
			||||||
	stdout, err := exec.Command("sudo", "grep", "-rl", match, framework.TestContext.DockershimCheckpointDir).CombinedOutput()
 | 
						stdout, err := exec.Command("sudo", "grep", "-rl", match, framework.TestContext.DockershimCheckpointDir).CombinedOutput()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("grep from dockershim checkpoint directory returns error: %v", err)
 | 
							framework.Logf("grep from dockershim checkpoint directory returns error: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if stdout == nil {
 | 
						if stdout == nil {
 | 
				
			||||||
		return checkpoints
 | 
							return checkpoints
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,6 @@ import (
 | 
				
			|||||||
	kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics"
 | 
						kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics"
 | 
				
			||||||
	kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
 | 
						kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	testutils "k8s.io/kubernetes/test/utils"
 | 
						testutils "k8s.io/kubernetes/test/utils"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -480,9 +479,9 @@ func runEvictionTest(f *framework.Framework, pressureTimeout time.Duration, expe
 | 
				
			|||||||
			gomega.Eventually(func() error {
 | 
								gomega.Eventually(func() error {
 | 
				
			||||||
				if expectedNodeCondition != noPressure {
 | 
									if expectedNodeCondition != noPressure {
 | 
				
			||||||
					if hasNodeCondition(f, expectedNodeCondition) {
 | 
										if hasNodeCondition(f, expectedNodeCondition) {
 | 
				
			||||||
						e2elog.Logf("Node has %s", expectedNodeCondition)
 | 
											framework.Logf("Node has %s", expectedNodeCondition)
 | 
				
			||||||
					} else {
 | 
										} else {
 | 
				
			||||||
						e2elog.Logf("Node does NOT have %s", expectedNodeCondition)
 | 
											framework.Logf("Node does NOT have %s", expectedNodeCondition)
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				logKubeletLatencyMetrics(kubeletmetrics.EvictionStatsAgeKey)
 | 
									logKubeletLatencyMetrics(kubeletmetrics.EvictionStatsAgeKey)
 | 
				
			||||||
@@ -569,7 +568,7 @@ func verifyEvictionOrdering(f *framework.Framework, testSpecs []podEvictSpec) er
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	updatedPods := updatedPodList.Items
 | 
						updatedPods := updatedPodList.Items
 | 
				
			||||||
	for _, p := range updatedPods {
 | 
						for _, p := range updatedPods {
 | 
				
			||||||
		e2elog.Logf("fetching pod %s; phase= %v", p.Name, p.Status.Phase)
 | 
							framework.Logf("fetching pod %s; phase= %v", p.Name, p.Status.Phase)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ginkgo.By("checking eviction ordering and ensuring important pods dont fail")
 | 
						ginkgo.By("checking eviction ordering and ensuring important pods dont fail")
 | 
				
			||||||
@@ -690,25 +689,25 @@ func hasNodeCondition(f *framework.Framework, expectedNodeCondition v1.NodeCondi
 | 
				
			|||||||
func logInodeMetrics() {
 | 
					func logInodeMetrics() {
 | 
				
			||||||
	summary, err := getNodeSummary()
 | 
						summary, err := getNodeSummary()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("Error getting summary: %v", err)
 | 
							framework.Logf("Error getting summary: %v", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if summary.Node.Runtime != nil && summary.Node.Runtime.ImageFs != nil && summary.Node.Runtime.ImageFs.Inodes != nil && summary.Node.Runtime.ImageFs.InodesFree != nil {
 | 
						if summary.Node.Runtime != nil && summary.Node.Runtime.ImageFs != nil && summary.Node.Runtime.ImageFs.Inodes != nil && summary.Node.Runtime.ImageFs.InodesFree != nil {
 | 
				
			||||||
		e2elog.Logf("imageFsInfo.Inodes: %d, imageFsInfo.InodesFree: %d", *summary.Node.Runtime.ImageFs.Inodes, *summary.Node.Runtime.ImageFs.InodesFree)
 | 
							framework.Logf("imageFsInfo.Inodes: %d, imageFsInfo.InodesFree: %d", *summary.Node.Runtime.ImageFs.Inodes, *summary.Node.Runtime.ImageFs.InodesFree)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if summary.Node.Fs != nil && summary.Node.Fs.Inodes != nil && summary.Node.Fs.InodesFree != nil {
 | 
						if summary.Node.Fs != nil && summary.Node.Fs.Inodes != nil && summary.Node.Fs.InodesFree != nil {
 | 
				
			||||||
		e2elog.Logf("rootFsInfo.Inodes: %d, rootFsInfo.InodesFree: %d", *summary.Node.Fs.Inodes, *summary.Node.Fs.InodesFree)
 | 
							framework.Logf("rootFsInfo.Inodes: %d, rootFsInfo.InodesFree: %d", *summary.Node.Fs.Inodes, *summary.Node.Fs.InodesFree)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for _, pod := range summary.Pods {
 | 
						for _, pod := range summary.Pods {
 | 
				
			||||||
		e2elog.Logf("Pod: %s", pod.PodRef.Name)
 | 
							framework.Logf("Pod: %s", pod.PodRef.Name)
 | 
				
			||||||
		for _, container := range pod.Containers {
 | 
							for _, container := range pod.Containers {
 | 
				
			||||||
			if container.Rootfs != nil && container.Rootfs.InodesUsed != nil {
 | 
								if container.Rootfs != nil && container.Rootfs.InodesUsed != nil {
 | 
				
			||||||
				e2elog.Logf("--- summary Container: %s inodeUsage: %d", container.Name, *container.Rootfs.InodesUsed)
 | 
									framework.Logf("--- summary Container: %s inodeUsage: %d", container.Name, *container.Rootfs.InodesUsed)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for _, volume := range pod.VolumeStats {
 | 
							for _, volume := range pod.VolumeStats {
 | 
				
			||||||
			if volume.FsStats.InodesUsed != nil {
 | 
								if volume.FsStats.InodesUsed != nil {
 | 
				
			||||||
				e2elog.Logf("--- summary Volume: %s inodeUsage: %d", volume.Name, *volume.FsStats.InodesUsed)
 | 
									framework.Logf("--- summary Volume: %s inodeUsage: %d", volume.Name, *volume.FsStats.InodesUsed)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -717,25 +716,25 @@ func logInodeMetrics() {
 | 
				
			|||||||
func logDiskMetrics() {
 | 
					func logDiskMetrics() {
 | 
				
			||||||
	summary, err := getNodeSummary()
 | 
						summary, err := getNodeSummary()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("Error getting summary: %v", err)
 | 
							framework.Logf("Error getting summary: %v", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if summary.Node.Runtime != nil && summary.Node.Runtime.ImageFs != nil && summary.Node.Runtime.ImageFs.CapacityBytes != nil && summary.Node.Runtime.ImageFs.AvailableBytes != nil {
 | 
						if summary.Node.Runtime != nil && summary.Node.Runtime.ImageFs != nil && summary.Node.Runtime.ImageFs.CapacityBytes != nil && summary.Node.Runtime.ImageFs.AvailableBytes != nil {
 | 
				
			||||||
		e2elog.Logf("imageFsInfo.CapacityBytes: %d, imageFsInfo.AvailableBytes: %d", *summary.Node.Runtime.ImageFs.CapacityBytes, *summary.Node.Runtime.ImageFs.AvailableBytes)
 | 
							framework.Logf("imageFsInfo.CapacityBytes: %d, imageFsInfo.AvailableBytes: %d", *summary.Node.Runtime.ImageFs.CapacityBytes, *summary.Node.Runtime.ImageFs.AvailableBytes)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if summary.Node.Fs != nil && summary.Node.Fs.CapacityBytes != nil && summary.Node.Fs.AvailableBytes != nil {
 | 
						if summary.Node.Fs != nil && summary.Node.Fs.CapacityBytes != nil && summary.Node.Fs.AvailableBytes != nil {
 | 
				
			||||||
		e2elog.Logf("rootFsInfo.CapacityBytes: %d, rootFsInfo.AvailableBytes: %d", *summary.Node.Fs.CapacityBytes, *summary.Node.Fs.AvailableBytes)
 | 
							framework.Logf("rootFsInfo.CapacityBytes: %d, rootFsInfo.AvailableBytes: %d", *summary.Node.Fs.CapacityBytes, *summary.Node.Fs.AvailableBytes)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for _, pod := range summary.Pods {
 | 
						for _, pod := range summary.Pods {
 | 
				
			||||||
		e2elog.Logf("Pod: %s", pod.PodRef.Name)
 | 
							framework.Logf("Pod: %s", pod.PodRef.Name)
 | 
				
			||||||
		for _, container := range pod.Containers {
 | 
							for _, container := range pod.Containers {
 | 
				
			||||||
			if container.Rootfs != nil && container.Rootfs.UsedBytes != nil {
 | 
								if container.Rootfs != nil && container.Rootfs.UsedBytes != nil {
 | 
				
			||||||
				e2elog.Logf("--- summary Container: %s UsedBytes: %d", container.Name, *container.Rootfs.UsedBytes)
 | 
									framework.Logf("--- summary Container: %s UsedBytes: %d", container.Name, *container.Rootfs.UsedBytes)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for _, volume := range pod.VolumeStats {
 | 
							for _, volume := range pod.VolumeStats {
 | 
				
			||||||
			if volume.FsStats.InodesUsed != nil {
 | 
								if volume.FsStats.InodesUsed != nil {
 | 
				
			||||||
				e2elog.Logf("--- summary Volume: %s UsedBytes: %d", volume.Name, *volume.FsStats.UsedBytes)
 | 
									framework.Logf("--- summary Volume: %s UsedBytes: %d", volume.Name, *volume.FsStats.UsedBytes)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -744,22 +743,22 @@ func logDiskMetrics() {
 | 
				
			|||||||
func logMemoryMetrics() {
 | 
					func logMemoryMetrics() {
 | 
				
			||||||
	summary, err := getNodeSummary()
 | 
						summary, err := getNodeSummary()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("Error getting summary: %v", err)
 | 
							framework.Logf("Error getting summary: %v", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if summary.Node.Memory != nil && summary.Node.Memory.WorkingSetBytes != nil && summary.Node.Memory.AvailableBytes != nil {
 | 
						if summary.Node.Memory != nil && summary.Node.Memory.WorkingSetBytes != nil && summary.Node.Memory.AvailableBytes != nil {
 | 
				
			||||||
		e2elog.Logf("Node.Memory.WorkingSetBytes: %d, Node.Memory.AvailableBytes: %d", *summary.Node.Memory.WorkingSetBytes, *summary.Node.Memory.AvailableBytes)
 | 
							framework.Logf("Node.Memory.WorkingSetBytes: %d, Node.Memory.AvailableBytes: %d", *summary.Node.Memory.WorkingSetBytes, *summary.Node.Memory.AvailableBytes)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for _, sysContainer := range summary.Node.SystemContainers {
 | 
						for _, sysContainer := range summary.Node.SystemContainers {
 | 
				
			||||||
		if sysContainer.Name == kubeletstatsv1alpha1.SystemContainerPods && sysContainer.Memory != nil && sysContainer.Memory.WorkingSetBytes != nil && sysContainer.Memory.AvailableBytes != nil {
 | 
							if sysContainer.Name == kubeletstatsv1alpha1.SystemContainerPods && sysContainer.Memory != nil && sysContainer.Memory.WorkingSetBytes != nil && sysContainer.Memory.AvailableBytes != nil {
 | 
				
			||||||
			e2elog.Logf("Allocatable.Memory.WorkingSetBytes: %d, Allocatable.Memory.AvailableBytes: %d", *sysContainer.Memory.WorkingSetBytes, *sysContainer.Memory.AvailableBytes)
 | 
								framework.Logf("Allocatable.Memory.WorkingSetBytes: %d, Allocatable.Memory.AvailableBytes: %d", *sysContainer.Memory.WorkingSetBytes, *sysContainer.Memory.AvailableBytes)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for _, pod := range summary.Pods {
 | 
						for _, pod := range summary.Pods {
 | 
				
			||||||
		e2elog.Logf("Pod: %s", pod.PodRef.Name)
 | 
							framework.Logf("Pod: %s", pod.PodRef.Name)
 | 
				
			||||||
		for _, container := range pod.Containers {
 | 
							for _, container := range pod.Containers {
 | 
				
			||||||
			if container.Memory != nil && container.Memory.WorkingSetBytes != nil {
 | 
								if container.Memory != nil && container.Memory.WorkingSetBytes != nil {
 | 
				
			||||||
				e2elog.Logf("--- summary Container: %s WorkingSetBytes: %d", container.Name, *container.Memory.WorkingSetBytes)
 | 
									framework.Logf("--- summary Container: %s WorkingSetBytes: %d", container.Name, *container.Memory.WorkingSetBytes)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -768,11 +767,11 @@ func logMemoryMetrics() {
 | 
				
			|||||||
func logPidMetrics() {
 | 
					func logPidMetrics() {
 | 
				
			||||||
	summary, err := getNodeSummary()
 | 
						summary, err := getNodeSummary()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("Error getting summary: %v", err)
 | 
							framework.Logf("Error getting summary: %v", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if summary.Node.Rlimit != nil && summary.Node.Rlimit.MaxPID != nil && summary.Node.Rlimit.NumOfRunningProcesses != nil {
 | 
						if summary.Node.Rlimit != nil && summary.Node.Rlimit.MaxPID != nil && summary.Node.Rlimit.NumOfRunningProcesses != nil {
 | 
				
			||||||
		e2elog.Logf("Node.Rlimit.MaxPID: %d, Node.Rlimit.RunningProcesses: %d", *summary.Node.Rlimit.MaxPID, *summary.Node.Rlimit.NumOfRunningProcesses)
 | 
							framework.Logf("Node.Rlimit.MaxPID: %d, Node.Rlimit.RunningProcesses: %d", *summary.Node.Rlimit.MaxPID, *summary.Node.Rlimit.NumOfRunningProcesses)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,6 @@ import (
 | 
				
			|||||||
	kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics"
 | 
						kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework/gpu"
 | 
						"k8s.io/kubernetes/test/e2e/framework/gpu"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
						"k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
@@ -143,7 +142,7 @@ func checkIfNvidiaGPUsExistOnNode() bool {
 | 
				
			|||||||
	// Cannot use `lspci` because it is not installed on all distros by default.
 | 
						// Cannot use `lspci` because it is not installed on all distros by default.
 | 
				
			||||||
	err := exec.Command("/bin/sh", "-c", "find /sys/devices/pci* -type f | grep vendor | xargs cat | grep 0x10de").Run()
 | 
						err := exec.Command("/bin/sh", "-c", "find /sys/devices/pci* -type f | grep vendor | xargs cat | grep 0x10de").Run()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("check for nvidia GPUs failed. Got Error: %v", err)
 | 
							framework.Logf("check for nvidia GPUs failed. Got Error: %v", err)
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return true
 | 
						return true
 | 
				
			||||||
@@ -164,14 +163,14 @@ func logDevicePluginMetrics() {
 | 
				
			|||||||
					if quantile, err = strconv.ParseFloat(string(val), 64); err != nil {
 | 
										if quantile, err = strconv.ParseFloat(string(val), 64); err != nil {
 | 
				
			||||||
						continue
 | 
											continue
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					e2elog.Logf("Metric: %v ResourceName: %v Quantile: %v Latency: %v", msKey, resource, quantile, latency)
 | 
										framework.Logf("Metric: %v ResourceName: %v Quantile: %v Latency: %v", msKey, resource, quantile, latency)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		case kubeletmetrics.KubeletSubsystem + "_" + kubeletmetrics.DevicePluginRegistrationCountKey:
 | 
							case kubeletmetrics.KubeletSubsystem + "_" + kubeletmetrics.DevicePluginRegistrationCountKey:
 | 
				
			||||||
			for _, sample := range samples {
 | 
								for _, sample := range samples {
 | 
				
			||||||
				resource := string(sample.Metric["resource_name"])
 | 
									resource := string(sample.Metric["resource_name"])
 | 
				
			||||||
				count := sample.Value
 | 
									count := sample.Value
 | 
				
			||||||
				e2elog.Logf("Metric: %v ResourceName: %v Count: %v", msKey, resource, count)
 | 
									framework.Logf("Metric: %v ResourceName: %v Count: %v", msKey, resource, count)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,7 +30,6 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/cm"
 | 
						"k8s.io/kubernetes/pkg/kubelet/cm"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -51,7 +50,7 @@ func makePodToVerifyHugePages(baseName string, hugePagesLimit resource.Quantity)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// this command takes the expected value and compares it against the actual value for the pod cgroup hugetlb.2MB.limit_in_bytes
 | 
						// this command takes the expected value and compares it against the actual value for the pod cgroup hugetlb.2MB.limit_in_bytes
 | 
				
			||||||
	command := fmt.Sprintf("expected=%v; actual=$(cat /tmp/hugetlb/%v/hugetlb.2MB.limit_in_bytes); if [ \"$expected\" -ne \"$actual\" ]; then exit 1; fi; ", hugePagesLimit.Value(), cgroupFsName)
 | 
						command := fmt.Sprintf("expected=%v; actual=$(cat /tmp/hugetlb/%v/hugetlb.2MB.limit_in_bytes); if [ \"$expected\" -ne \"$actual\" ]; then exit 1; fi; ", hugePagesLimit.Value(), cgroupFsName)
 | 
				
			||||||
	e2elog.Logf("Pod to run command: %v", command)
 | 
						framework.Logf("Pod to run command: %v", command)
 | 
				
			||||||
	pod := &v1.Pod{
 | 
						pod := &v1.Pod{
 | 
				
			||||||
		ObjectMeta: metav1.ObjectMeta{
 | 
							ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
			Name: "pod" + string(uuid.NewUUID()),
 | 
								Name: "pod" + string(uuid.NewUUID()),
 | 
				
			||||||
@@ -98,7 +97,7 @@ func configureHugePages() error {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	e2elog.Logf("HugePages_Total is set to %v", numHugePages)
 | 
						framework.Logf("HugePages_Total is set to %v", numHugePages)
 | 
				
			||||||
	if numHugePages == 5 {
 | 
						if numHugePages == 5 {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -124,7 +123,7 @@ func pollResourceAsString(f *framework.Framework, resourceName string) string {
 | 
				
			|||||||
	node, err := f.ClientSet.CoreV1().Nodes().Get(framework.TestContext.NodeName, metav1.GetOptions{})
 | 
						node, err := f.ClientSet.CoreV1().Nodes().Get(framework.TestContext.NodeName, metav1.GetOptions{})
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
	amount := amountOfResourceAsString(node, resourceName)
 | 
						amount := amountOfResourceAsString(node, resourceName)
 | 
				
			||||||
	e2elog.Logf("amount of %v: %v", resourceName, amount)
 | 
						framework.Logf("amount of %v: %v", resourceName, amount)
 | 
				
			||||||
	return amount
 | 
						return amount
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,6 @@ import (
 | 
				
			|||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/davecgh/go-spew/spew"
 | 
						"github.com/davecgh/go-spew/spew"
 | 
				
			||||||
@@ -59,7 +58,7 @@ var _ = framework.KubeDescribe("ImageID [NodeFeature: ImageID]", func() {
 | 
				
			|||||||
		status := runningPod.Status
 | 
							status := runningPod.Status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if len(status.ContainerStatuses) == 0 {
 | 
							if len(status.ContainerStatuses) == 0 {
 | 
				
			||||||
			e2elog.Failf("Unexpected pod status; %s", spew.Sdump(status))
 | 
								framework.Failf("Unexpected pod status; %s", spew.Sdump(status))
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,6 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
						kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e_node/perf/workloads"
 | 
						"k8s.io/kubernetes/test/e2e_node/perf/workloads"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -98,7 +97,7 @@ var _ = SIGDescribe("Node Performance Testing [Serial] [Slow] [Flaky]", func() {
 | 
				
			|||||||
		framework.ExpectNoError(err)
 | 
							framework.ExpectNoError(err)
 | 
				
			||||||
		perf, err := wl.ExtractPerformanceFromLogs(podLogs)
 | 
							perf, err := wl.ExtractPerformanceFromLogs(podLogs)
 | 
				
			||||||
		framework.ExpectNoError(err)
 | 
							framework.ExpectNoError(err)
 | 
				
			||||||
		e2elog.Logf("Time to complete workload %s: %v", wl.Name(), perf)
 | 
							framework.Logf("Time to complete workload %s: %v", wl.Name(), perf)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ginkgo.Context("Run node performance testing with pre-defined workloads", func() {
 | 
						ginkgo.Context("Run node performance testing with pre-defined workloads", func() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,6 @@ import (
 | 
				
			|||||||
	coreclientset "k8s.io/client-go/kubernetes/typed/core/v1"
 | 
						coreclientset "k8s.io/client-go/kubernetes/typed/core/v1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/util"
 | 
						"k8s.io/kubernetes/pkg/kubelet/util"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
	testutils "k8s.io/kubernetes/test/utils"
 | 
						testutils "k8s.io/kubernetes/test/utils"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -372,7 +371,7 @@ var _ = framework.KubeDescribe("NodeProblemDetector [NodeFeature:NodeProblemDete
 | 
				
			|||||||
				ginkgo.By("Get node problem detector log")
 | 
									ginkgo.By("Get node problem detector log")
 | 
				
			||||||
				log, err := e2epod.GetPodLogs(c, ns, name, name)
 | 
									log, err := e2epod.GetPodLogs(c, ns, name, name)
 | 
				
			||||||
				gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
 | 
									gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
 | 
				
			||||||
				e2elog.Logf("Node Problem Detector logs:\n %s", log)
 | 
									framework.Logf("Node Problem Detector logs:\n %s", log)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			ginkgo.By("Delete the node problem detector")
 | 
								ginkgo.By("Delete the node problem detector")
 | 
				
			||||||
			f.PodClient().Delete(name, metav1.NewDeleteOptions(0))
 | 
								f.PodClient().Delete(name, metav1.NewDeleteOptions(0))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,6 @@ import (
 | 
				
			|||||||
	kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
						kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/cm"
 | 
						"k8s.io/kubernetes/pkg/kubelet/cm"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -49,7 +48,7 @@ func makePodToVerifyPids(baseName string, pidsLimit resource.Quantity) *v1.Pod {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// this command takes the expected value and compares it against the actual value for the pod cgroup pids.max
 | 
						// this command takes the expected value and compares it against the actual value for the pod cgroup pids.max
 | 
				
			||||||
	command := fmt.Sprintf("expected=%v; actual=$(cat /tmp/pids/%v/pids.max); if [ \"$expected\" -ne \"$actual\" ]; then exit 1; fi; ", pidsLimit.Value(), cgroupFsName)
 | 
						command := fmt.Sprintf("expected=%v; actual=$(cat /tmp/pids/%v/pids.max); if [ \"$expected\" -ne \"$actual\" ]; then exit 1; fi; ", pidsLimit.Value(), cgroupFsName)
 | 
				
			||||||
	e2elog.Logf("Pod to run command: %v", command)
 | 
						framework.Logf("Pod to run command: %v", command)
 | 
				
			||||||
	pod := &v1.Pod{
 | 
						pod := &v1.Pod{
 | 
				
			||||||
		ObjectMeta: metav1.ObjectMeta{
 | 
							ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
			Name: "pod" + string(uuid.NewUUID()),
 | 
								Name: "pod" + string(uuid.NewUUID()),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,7 +44,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/util/procfs"
 | 
						"k8s.io/kubernetes/pkg/util/procfs"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
						e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e_node/perftype"
 | 
						"k8s.io/kubernetes/test/e2e_node/perftype"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -97,7 +96,7 @@ func (r *ResourceCollector) Start() {
 | 
				
			|||||||
			kubeletstatsv1alpha1.SystemContainerRuntime: runtimeContainer,
 | 
								kubeletstatsv1alpha1.SystemContainerRuntime: runtimeContainer,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		e2elog.Failf("Failed to get runtime container name in test-e2e-node resource collector.")
 | 
							framework.Failf("Failed to get runtime container name in test-e2e-node resource collector.")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wait.Poll(1*time.Second, 1*time.Minute, func() (bool, error) {
 | 
						wait.Poll(1*time.Second, 1*time.Minute, func() (bool, error) {
 | 
				
			||||||
@@ -146,9 +145,9 @@ func (r *ResourceCollector) GetCPUSummary() e2ekubelet.ContainersCPUSummary {
 | 
				
			|||||||
func (r *ResourceCollector) LogLatest() {
 | 
					func (r *ResourceCollector) LogLatest() {
 | 
				
			||||||
	summary, err := r.GetLatest()
 | 
						summary, err := r.GetLatest()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("%v", err)
 | 
							framework.Logf("%v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	e2elog.Logf("%s", formatResourceUsageStats(summary))
 | 
						framework.Logf("%s", formatResourceUsageStats(summary))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// collectStats collects resource usage from Cadvisor.
 | 
					// collectStats collects resource usage from Cadvisor.
 | 
				
			||||||
@@ -156,12 +155,12 @@ func (r *ResourceCollector) collectStats(oldStatsMap map[string]*cadvisorapiv2.C
 | 
				
			|||||||
	for _, name := range systemContainers {
 | 
						for _, name := range systemContainers {
 | 
				
			||||||
		ret, err := r.client.Stats(name, r.request)
 | 
							ret, err := r.client.Stats(name, r.request)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			e2elog.Logf("Error getting container stats, err: %v", err)
 | 
								framework.Logf("Error getting container stats, err: %v", err)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		cStats, ok := ret[name]
 | 
							cStats, ok := ret[name]
 | 
				
			||||||
		if !ok {
 | 
							if !ok {
 | 
				
			||||||
			e2elog.Logf("Missing info/stats for container %q", name)
 | 
								framework.Logf("Missing info/stats for container %q", name)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,6 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	kubeletresourcemetricsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/resourcemetrics/v1alpha1"
 | 
						kubeletresourcemetricsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/resourcemetrics/v1alpha1"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
						"k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework/volume"
 | 
						"k8s.io/kubernetes/test/e2e/framework/volume"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -102,7 +101,7 @@ var _ = framework.KubeDescribe("ResourceMetricsAPI", func() {
 | 
				
			|||||||
				return
 | 
									return
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if framework.TestContext.DumpLogsOnFailure {
 | 
								if framework.TestContext.DumpLogsOnFailure {
 | 
				
			||||||
				framework.LogFailedContainers(f.ClientSet, f.Namespace.Name, e2elog.Logf)
 | 
									framework.LogFailedContainers(f.ClientSet, f.Namespace.Name, framework.Logf)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			ginkgo.By("Recording processes in system cgroups")
 | 
								ginkgo.By("Recording processes in system cgroups")
 | 
				
			||||||
			recordSystemCgroupProcesses()
 | 
								recordSystemCgroupProcesses()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,6 @@ import (
 | 
				
			|||||||
	kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
 | 
						kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
						e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2eperf "k8s.io/kubernetes/test/e2e/framework/perf"
 | 
						e2eperf "k8s.io/kubernetes/test/e2e/framework/perf"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -59,7 +58,7 @@ var _ = SIGDescribe("Resource-usage [Serial] [Slow]", func() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	ginkgo.AfterEach(func() {
 | 
						ginkgo.AfterEach(func() {
 | 
				
			||||||
		result := om.GetLatestRuntimeOperationErrorRate()
 | 
							result := om.GetLatestRuntimeOperationErrorRate()
 | 
				
			||||||
		e2elog.Logf("runtime operation error metrics:\n%s", e2ekubelet.FormatRuntimeOperationErrorRate(result))
 | 
							framework.Logf("runtime operation error metrics:\n%s", e2ekubelet.FormatRuntimeOperationErrorRate(result))
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// This test measures and verifies the steady resource usage of node is within limit
 | 
						// This test measures and verifies the steady resource usage of node is within limit
 | 
				
			||||||
@@ -171,7 +170,7 @@ func runResourceUsageTest(f *framework.Framework, rc *ResourceCollector, testArg
 | 
				
			|||||||
	deadline := time.Now().Add(monitoringTime)
 | 
						deadline := time.Now().Add(monitoringTime)
 | 
				
			||||||
	for time.Now().Before(deadline) {
 | 
						for time.Now().Before(deadline) {
 | 
				
			||||||
		timeLeft := deadline.Sub(time.Now())
 | 
							timeLeft := deadline.Sub(time.Now())
 | 
				
			||||||
		e2elog.Logf("Still running...%v left", timeLeft)
 | 
							framework.Logf("Still running...%v left", timeLeft)
 | 
				
			||||||
		if timeLeft < reportingPeriod {
 | 
							if timeLeft < reportingPeriod {
 | 
				
			||||||
			time.Sleep(timeLeft)
 | 
								time.Sleep(timeLeft)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
@@ -192,14 +191,14 @@ func logAndVerifyResource(f *framework.Framework, rc *ResourceCollector, cpuLimi
 | 
				
			|||||||
	// Obtain memory PerfData
 | 
						// Obtain memory PerfData
 | 
				
			||||||
	usagePerContainer, err := rc.GetLatest()
 | 
						usagePerContainer, err := rc.GetLatest()
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
	e2elog.Logf("%s", formatResourceUsageStats(usagePerContainer))
 | 
						framework.Logf("%s", formatResourceUsageStats(usagePerContainer))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	usagePerNode := make(e2ekubelet.ResourceUsagePerNode)
 | 
						usagePerNode := make(e2ekubelet.ResourceUsagePerNode)
 | 
				
			||||||
	usagePerNode[nodeName] = usagePerContainer
 | 
						usagePerNode[nodeName] = usagePerContainer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Obtain CPU PerfData
 | 
						// Obtain CPU PerfData
 | 
				
			||||||
	cpuSummary := rc.GetCPUSummary()
 | 
						cpuSummary := rc.GetCPUSummary()
 | 
				
			||||||
	e2elog.Logf("%s", formatCPUSummary(cpuSummary))
 | 
						framework.Logf("%s", formatCPUSummary(cpuSummary))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cpuSummaryPerNode := make(e2ekubelet.NodesCPUSummary)
 | 
						cpuSummaryPerNode := make(e2ekubelet.NodesCPUSummary)
 | 
				
			||||||
	cpuSummaryPerNode[nodeName] = cpuSummary
 | 
						cpuSummaryPerNode[nodeName] = cpuSummary
 | 
				
			||||||
@@ -240,14 +239,14 @@ func verifyMemoryLimits(c clientset.Interface, expected e2ekubelet.ResourceUsage
 | 
				
			|||||||
			errList = append(errList, fmt.Sprintf("node %v:\n %s", nodeName, strings.Join(nodeErrs, ", ")))
 | 
								errList = append(errList, fmt.Sprintf("node %v:\n %s", nodeName, strings.Join(nodeErrs, ", ")))
 | 
				
			||||||
			heapStats, err := e2ekubelet.GetKubeletHeapStats(c, nodeName)
 | 
								heapStats, err := e2ekubelet.GetKubeletHeapStats(c, nodeName)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Logf("Unable to get heap stats from %q", nodeName)
 | 
									framework.Logf("Unable to get heap stats from %q", nodeName)
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				e2elog.Logf("Heap stats on %q\n:%v", nodeName, heapStats)
 | 
									framework.Logf("Heap stats on %q\n:%v", nodeName, heapStats)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(errList) > 0 {
 | 
						if len(errList) > 0 {
 | 
				
			||||||
		e2elog.Failf("Memory usage exceeding limits:\n %s", strings.Join(errList, "\n"))
 | 
							framework.Failf("Memory usage exceeding limits:\n %s", strings.Join(errList, "\n"))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -281,7 +280,7 @@ func verifyCPULimits(expected e2ekubelet.ContainersCPUSummary, actual e2ekubelet
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(errList) > 0 {
 | 
						if len(errList) > 0 {
 | 
				
			||||||
		e2elog.Failf("CPU usage exceeding limits:\n %s", strings.Join(errList, "\n"))
 | 
							framework.Failf("CPU usage exceeding limits:\n %s", strings.Join(errList, "\n"))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -289,7 +288,7 @@ func logPods(c clientset.Interface) {
 | 
				
			|||||||
	nodeName := framework.TestContext.NodeName
 | 
						nodeName := framework.TestContext.NodeName
 | 
				
			||||||
	podList, err := e2ekubelet.GetKubeletRunningPods(c, nodeName)
 | 
						podList, err := e2ekubelet.GetKubeletRunningPods(c, nodeName)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("Unable to retrieve kubelet pods for node %v", nodeName)
 | 
							framework.Logf("Unable to retrieve kubelet pods for node %v", nodeName)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	e2elog.Logf("%d pods are running on node %v", len(podList.Items), nodeName)
 | 
						framework.Logf("%d pods are running on node %v", len(podList.Items), nodeName)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,20 +19,18 @@ limitations under the License.
 | 
				
			|||||||
package e2e_node
 | 
					package e2e_node
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"time"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
					 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"os/exec"
 | 
						"os/exec"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
 | 
						testutils "k8s.io/kubernetes/test/utils"
 | 
				
			||||||
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
	"github.com/onsi/gomega"
 | 
						"github.com/onsi/gomega"
 | 
				
			||||||
	"k8s.io/api/core/v1"
 | 
					 | 
				
			||||||
	testutils "k8s.io/kubernetes/test/utils"
 | 
					 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// waitForPods waits for timeout duration, for pod_count.
 | 
					// waitForPods waits for timeout duration, for pod_count.
 | 
				
			||||||
@@ -41,7 +39,7 @@ func waitForPods(f *framework.Framework, pod_count int, timeout time.Duration) (
 | 
				
			|||||||
	for start := time.Now(); time.Since(start) < timeout; time.Sleep(10 * time.Second) {
 | 
						for start := time.Now(); time.Since(start) < timeout; time.Sleep(10 * time.Second) {
 | 
				
			||||||
		podList, err := f.PodClient().List(metav1.ListOptions{})
 | 
							podList, err := f.PodClient().List(metav1.ListOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			e2elog.Logf("Failed to list pods on node: %v", err)
 | 
								framework.Logf("Failed to list pods on node: %v", err)
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,7 +50,7 @@ func waitForPods(f *framework.Framework, pod_count int, timeout time.Duration) (
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			runningPods = append(runningPods, &pod)
 | 
								runningPods = append(runningPods, &pod)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		e2elog.Logf("Running pod count %d", len(runningPods))
 | 
							framework.Logf("Running pod count %d", len(runningPods))
 | 
				
			||||||
		if len(runningPods) >= pod_count {
 | 
							if len(runningPods) >= pod_count {
 | 
				
			||||||
			break
 | 
								break
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -91,7 +89,7 @@ var _ = framework.KubeDescribe("Restart [Serial] [Slow] [Disruptive] [NodeFeatur
 | 
				
			|||||||
				// startTimeout fit on the node and the node is now saturated.
 | 
									// startTimeout fit on the node and the node is now saturated.
 | 
				
			||||||
				runningPods := waitForPods(f, podCount, startTimeout)
 | 
									runningPods := waitForPods(f, podCount, startTimeout)
 | 
				
			||||||
				if len(runningPods) < minPods {
 | 
									if len(runningPods) < minPods {
 | 
				
			||||||
					e2elog.Failf("Failed to start %d pods, cannot test that restarting container runtime doesn't leak IPs", minPods)
 | 
										framework.Failf("Failed to start %d pods, cannot test that restarting container runtime doesn't leak IPs", minPods)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				for i := 0; i < restartCount; i += 1 {
 | 
									for i := 0; i < restartCount; i += 1 {
 | 
				
			||||||
@@ -114,7 +112,7 @@ var _ = framework.KubeDescribe("Restart [Serial] [Slow] [Disruptive] [NodeFeatur
 | 
				
			|||||||
						return nil
 | 
											return nil
 | 
				
			||||||
					}, 1*time.Minute, 2*time.Second).Should(gomega.BeNil())
 | 
										}, 1*time.Minute, 2*time.Second).Should(gomega.BeNil())
 | 
				
			||||||
					if stdout, err := exec.Command("sudo", "kill", fmt.Sprintf("%d", pid)).CombinedOutput(); err != nil {
 | 
										if stdout, err := exec.Command("sudo", "kill", fmt.Sprintf("%d", pid)).CombinedOutput(); err != nil {
 | 
				
			||||||
						e2elog.Failf("Failed to kill container runtime (pid=%d): %v, stdout: %q", pid, err, string(stdout))
 | 
											framework.Failf("Failed to kill container runtime (pid=%d): %v, stdout: %q", pid, err, string(stdout))
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					// Assume that container runtime will be restarted by systemd/supervisord etc.
 | 
										// Assume that container runtime will be restarted by systemd/supervisord etc.
 | 
				
			||||||
					time.Sleep(20 * time.Second)
 | 
										time.Sleep(20 * time.Second)
 | 
				
			||||||
@@ -123,12 +121,12 @@ var _ = framework.KubeDescribe("Restart [Serial] [Slow] [Disruptive] [NodeFeatur
 | 
				
			|||||||
				ginkgo.By("Checking currently Running/Ready pods")
 | 
									ginkgo.By("Checking currently Running/Ready pods")
 | 
				
			||||||
				postRestartRunningPods := waitForPods(f, len(runningPods), recoverTimeout)
 | 
									postRestartRunningPods := waitForPods(f, len(runningPods), recoverTimeout)
 | 
				
			||||||
				if len(postRestartRunningPods) == 0 {
 | 
									if len(postRestartRunningPods) == 0 {
 | 
				
			||||||
					e2elog.Failf("Failed to start *any* pods after container runtime restart, this might indicate an IP leak")
 | 
										framework.Failf("Failed to start *any* pods after container runtime restart, this might indicate an IP leak")
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				ginkgo.By("Confirm no containers have terminated")
 | 
									ginkgo.By("Confirm no containers have terminated")
 | 
				
			||||||
				for _, pod := range postRestartRunningPods {
 | 
									for _, pod := range postRestartRunningPods {
 | 
				
			||||||
					if c := testutils.TerminatedContainers(pod); len(c) != 0 {
 | 
										if c := testutils.TerminatedContainers(pod); len(c) != 0 {
 | 
				
			||||||
						e2elog.Failf("Pod %q has failed containers %+v after container runtime restart, this might indicate an IP leak", pod.Name, c)
 | 
											framework.Failf("Pod %q has failed containers %+v after container runtime restart, this might indicate an IP leak", pod.Name, c)
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				ginkgo.By(fmt.Sprintf("Container runtime restart test passed with %d pods", len(postRestartRunningPods)))
 | 
									ginkgo.By(fmt.Sprintf("Container runtime restart test passed with %d pods", len(postRestartRunningPods)))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/kubelet/images"
 | 
						"k8s.io/kubernetes/pkg/kubelet/images"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/common"
 | 
						"k8s.io/kubernetes/test/e2e/common"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e_node/services"
 | 
						"k8s.io/kubernetes/test/e2e_node/services"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
@@ -142,9 +141,9 @@ var _ = framework.KubeDescribe("Container Runtime Conformance Test", func() {
 | 
				
			|||||||
							break
 | 
												break
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						if i < flakeRetry {
 | 
											if i < flakeRetry {
 | 
				
			||||||
							e2elog.Logf("No.%d attempt failed: %v, retrying...", i, err)
 | 
												framework.Logf("No.%d attempt failed: %v, retrying...", i, err)
 | 
				
			||||||
						} else {
 | 
											} else {
 | 
				
			||||||
							e2elog.Failf("All %d attempts failed: %v", flakeRetry, err)
 | 
												framework.Failf("All %d attempts failed: %v", flakeRetry, err)
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				})
 | 
									})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,11 +29,10 @@ import (
 | 
				
			|||||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
						utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/features"
 | 
						"k8s.io/kubernetes/pkg/features"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
						e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
 | 
				
			||||||
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _ = framework.KubeDescribe("Security Context", func() {
 | 
					var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			||||||
@@ -69,7 +68,7 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
			pid1 := f.ExecCommandInContainer("isolated-pid-ns-test-pod", "test-container-1", "/bin/pidof", "top")
 | 
								pid1 := f.ExecCommandInContainer("isolated-pid-ns-test-pod", "test-container-1", "/bin/pidof", "top")
 | 
				
			||||||
			pid2 := f.ExecCommandInContainer("isolated-pid-ns-test-pod", "test-container-2", "/bin/pidof", "sleep")
 | 
								pid2 := f.ExecCommandInContainer("isolated-pid-ns-test-pod", "test-container-2", "/bin/pidof", "sleep")
 | 
				
			||||||
			if pid1 != "1" || pid2 != "1" {
 | 
								if pid1 != "1" || pid2 != "1" {
 | 
				
			||||||
				e2elog.Failf("PIDs of different containers are not all 1: test-container-1=%v, test-container-2=%v", pid1, pid2)
 | 
									framework.Failf("PIDs of different containers are not all 1: test-container-1=%v, test-container-2=%v", pid1, pid2)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -110,7 +109,7 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
			pid1 := f.ExecCommandInContainer("shared-pid-ns-test-pod", "test-container-1", "/bin/pidof", "top")
 | 
								pid1 := f.ExecCommandInContainer("shared-pid-ns-test-pod", "test-container-1", "/bin/pidof", "top")
 | 
				
			||||||
			pid2 := f.ExecCommandInContainer("shared-pid-ns-test-pod", "test-container-2", "/bin/pidof", "top")
 | 
								pid2 := f.ExecCommandInContainer("shared-pid-ns-test-pod", "test-container-2", "/bin/pidof", "top")
 | 
				
			||||||
			if pid1 != pid2 {
 | 
								if pid1 != pid2 {
 | 
				
			||||||
				e2elog.Failf("PIDs are not the same in different containers: test-container-1=%v, test-container-2=%v", pid1, pid2)
 | 
									framework.Failf("PIDs are not the same in different containers: test-container-1=%v, test-container-2=%v", pid1, pid2)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
@@ -163,18 +162,18 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
			createAndWaitHostPidPod(busyboxPodName, true)
 | 
								createAndWaitHostPidPod(busyboxPodName, true)
 | 
				
			||||||
			logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, busyboxPodName, busyboxPodName)
 | 
								logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, busyboxPodName, busyboxPodName)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("GetPodLogs for pod %q failed: %v", busyboxPodName, err)
 | 
									framework.Failf("GetPodLogs for pod %q failed: %v", busyboxPodName, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			pids := strings.TrimSpace(logs)
 | 
								pids := strings.TrimSpace(logs)
 | 
				
			||||||
			e2elog.Logf("Got nginx's pid %q from pod %q", pids, busyboxPodName)
 | 
								framework.Logf("Got nginx's pid %q from pod %q", pids, busyboxPodName)
 | 
				
			||||||
			if pids == "" {
 | 
								if pids == "" {
 | 
				
			||||||
				e2elog.Failf("nginx's pid should be seen by hostpid containers")
 | 
									framework.Failf("nginx's pid should be seen by hostpid containers")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			pidSets := sets.NewString(strings.Split(pids, " ")...)
 | 
								pidSets := sets.NewString(strings.Split(pids, " ")...)
 | 
				
			||||||
			if !pidSets.Has(nginxPid) {
 | 
								if !pidSets.Has(nginxPid) {
 | 
				
			||||||
				e2elog.Failf("nginx's pid should be seen by hostpid containers")
 | 
									framework.Failf("nginx's pid should be seen by hostpid containers")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -183,14 +182,14 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
			createAndWaitHostPidPod(busyboxPodName, false)
 | 
								createAndWaitHostPidPod(busyboxPodName, false)
 | 
				
			||||||
			logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, busyboxPodName, busyboxPodName)
 | 
								logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, busyboxPodName, busyboxPodName)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("GetPodLogs for pod %q failed: %v", busyboxPodName, err)
 | 
									framework.Failf("GetPodLogs for pod %q failed: %v", busyboxPodName, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			pids := strings.TrimSpace(logs)
 | 
								pids := strings.TrimSpace(logs)
 | 
				
			||||||
			e2elog.Logf("Got nginx's pid %q from pod %q", pids, busyboxPodName)
 | 
								framework.Logf("Got nginx's pid %q from pod %q", pids, busyboxPodName)
 | 
				
			||||||
			pidSets := sets.NewString(strings.Split(pids, " ")...)
 | 
								pidSets := sets.NewString(strings.Split(pids, " ")...)
 | 
				
			||||||
			if pidSets.Has(nginxPid) {
 | 
								if pidSets.Has(nginxPid) {
 | 
				
			||||||
				e2elog.Failf("nginx's pid should not be seen by non-hostpid containers")
 | 
									framework.Failf("nginx's pid should not be seen by non-hostpid containers")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
@@ -228,10 +227,10 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
		ginkgo.BeforeEach(func() {
 | 
							ginkgo.BeforeEach(func() {
 | 
				
			||||||
			output, err := exec.Command("sh", "-c", "ipcmk -M 1048576 | awk '{print $NF}'").Output()
 | 
								output, err := exec.Command("sh", "-c", "ipcmk -M 1048576 | awk '{print $NF}'").Output()
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("Failed to create the shared memory on the host: %v", err)
 | 
									framework.Failf("Failed to create the shared memory on the host: %v", err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			hostSharedMemoryID = strings.TrimSpace(string(output))
 | 
								hostSharedMemoryID = strings.TrimSpace(string(output))
 | 
				
			||||||
			e2elog.Logf("Got host shared memory ID %q", hostSharedMemoryID)
 | 
								framework.Logf("Got host shared memory ID %q", hostSharedMemoryID)
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ginkgo.It("should show the shared memory ID in the host IPC containers [NodeFeature:HostAccess]", func() {
 | 
							ginkgo.It("should show the shared memory ID in the host IPC containers [NodeFeature:HostAccess]", func() {
 | 
				
			||||||
@@ -239,13 +238,13 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
			createAndWaitHostIPCPod(ipcutilsPodName, true)
 | 
								createAndWaitHostIPCPod(ipcutilsPodName, true)
 | 
				
			||||||
			logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, ipcutilsPodName, ipcutilsPodName)
 | 
								logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, ipcutilsPodName, ipcutilsPodName)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("GetPodLogs for pod %q failed: %v", ipcutilsPodName, err)
 | 
									framework.Failf("GetPodLogs for pod %q failed: %v", ipcutilsPodName, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			podSharedMemoryIDs := strings.TrimSpace(logs)
 | 
								podSharedMemoryIDs := strings.TrimSpace(logs)
 | 
				
			||||||
			e2elog.Logf("Got shared memory IDs %q from pod %q", podSharedMemoryIDs, ipcutilsPodName)
 | 
								framework.Logf("Got shared memory IDs %q from pod %q", podSharedMemoryIDs, ipcutilsPodName)
 | 
				
			||||||
			if !strings.Contains(podSharedMemoryIDs, hostSharedMemoryID) {
 | 
								if !strings.Contains(podSharedMemoryIDs, hostSharedMemoryID) {
 | 
				
			||||||
				e2elog.Failf("hostIPC container should show shared memory IDs on host")
 | 
									framework.Failf("hostIPC container should show shared memory IDs on host")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -254,13 +253,13 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
			createAndWaitHostIPCPod(ipcutilsPodName, false)
 | 
								createAndWaitHostIPCPod(ipcutilsPodName, false)
 | 
				
			||||||
			logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, ipcutilsPodName, ipcutilsPodName)
 | 
								logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, ipcutilsPodName, ipcutilsPodName)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("GetPodLogs for pod %q failed: %v", ipcutilsPodName, err)
 | 
									framework.Failf("GetPodLogs for pod %q failed: %v", ipcutilsPodName, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			podSharedMemoryIDs := strings.TrimSpace(logs)
 | 
								podSharedMemoryIDs := strings.TrimSpace(logs)
 | 
				
			||||||
			e2elog.Logf("Got shared memory IDs %q from pod %q", podSharedMemoryIDs, ipcutilsPodName)
 | 
								framework.Logf("Got shared memory IDs %q from pod %q", podSharedMemoryIDs, ipcutilsPodName)
 | 
				
			||||||
			if strings.Contains(podSharedMemoryIDs, hostSharedMemoryID) {
 | 
								if strings.Contains(podSharedMemoryIDs, hostSharedMemoryID) {
 | 
				
			||||||
				e2elog.Failf("non-hostIPC container should not show shared memory IDs on host")
 | 
									framework.Failf("non-hostIPC container should not show shared memory IDs on host")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -268,7 +267,7 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
			if hostSharedMemoryID != "" {
 | 
								if hostSharedMemoryID != "" {
 | 
				
			||||||
				_, err := exec.Command("sh", "-c", fmt.Sprintf("ipcrm -m %q", hostSharedMemoryID)).Output()
 | 
									_, err := exec.Command("sh", "-c", fmt.Sprintf("ipcrm -m %q", hostSharedMemoryID)).Output()
 | 
				
			||||||
				if err != nil {
 | 
									if err != nil {
 | 
				
			||||||
					e2elog.Failf("Failed to remove shared memory %q on the host: %v", hostSharedMemoryID, err)
 | 
										framework.Failf("Failed to remove shared memory %q on the host: %v", hostSharedMemoryID, err)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
@@ -310,11 +309,11 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
		ginkgo.BeforeEach(func() {
 | 
							ginkgo.BeforeEach(func() {
 | 
				
			||||||
			l, err = net.Listen("tcp", ":0")
 | 
								l, err = net.Listen("tcp", ":0")
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("Failed to open a new tcp port: %v", err)
 | 
									framework.Failf("Failed to open a new tcp port: %v", err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			addr := strings.Split(l.Addr().String(), ":")
 | 
								addr := strings.Split(l.Addr().String(), ":")
 | 
				
			||||||
			listeningPort = addr[len(addr)-1]
 | 
								listeningPort = addr[len(addr)-1]
 | 
				
			||||||
			e2elog.Logf("Opened a new tcp port %q", listeningPort)
 | 
								framework.Logf("Opened a new tcp port %q", listeningPort)
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ginkgo.It("should listen on same port in the host network containers [NodeFeature:HostAccess]", func() {
 | 
							ginkgo.It("should listen on same port in the host network containers [NodeFeature:HostAccess]", func() {
 | 
				
			||||||
@@ -322,12 +321,12 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
			createAndWaitHostNetworkPod(busyboxPodName, true)
 | 
								createAndWaitHostNetworkPod(busyboxPodName, true)
 | 
				
			||||||
			logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, busyboxPodName, busyboxPodName)
 | 
								logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, busyboxPodName, busyboxPodName)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("GetPodLogs for pod %q failed: %v", busyboxPodName, err)
 | 
									framework.Failf("GetPodLogs for pod %q failed: %v", busyboxPodName, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			e2elog.Logf("Got logs for pod %q: %q", busyboxPodName, logs)
 | 
								framework.Logf("Got logs for pod %q: %q", busyboxPodName, logs)
 | 
				
			||||||
			if !strings.Contains(logs, listeningPort) {
 | 
								if !strings.Contains(logs, listeningPort) {
 | 
				
			||||||
				e2elog.Failf("host-networked container should listening on same port as host")
 | 
									framework.Failf("host-networked container should listening on same port as host")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -336,12 +335,12 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
			createAndWaitHostNetworkPod(busyboxPodName, false)
 | 
								createAndWaitHostNetworkPod(busyboxPodName, false)
 | 
				
			||||||
			logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, busyboxPodName, busyboxPodName)
 | 
								logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, busyboxPodName, busyboxPodName)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("GetPodLogs for pod %q failed: %v", busyboxPodName, err)
 | 
									framework.Failf("GetPodLogs for pod %q failed: %v", busyboxPodName, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			e2elog.Logf("Got logs for pod %q: %q", busyboxPodName, logs)
 | 
								framework.Logf("Got logs for pod %q: %q", busyboxPodName, logs)
 | 
				
			||||||
			if strings.Contains(logs, listeningPort) {
 | 
								if strings.Contains(logs, listeningPort) {
 | 
				
			||||||
				e2elog.Failf("non-hostnetworked container shouldn't show the same port as host")
 | 
									framework.Failf("non-hostnetworked container shouldn't show the same port as host")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -388,12 +387,12 @@ var _ = framework.KubeDescribe("Security Context", func() {
 | 
				
			|||||||
			podName := createAndWaitUserPod(true)
 | 
								podName := createAndWaitUserPod(true)
 | 
				
			||||||
			logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, podName, podName)
 | 
								logs, err := e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, podName, podName)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Failf("GetPodLogs for pod %q failed: %v", podName, err)
 | 
									framework.Failf("GetPodLogs for pod %q failed: %v", podName, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			e2elog.Logf("Got logs for pod %q: %q", podName, logs)
 | 
								framework.Logf("Got logs for pod %q: %q", podName, logs)
 | 
				
			||||||
			if strings.Contains(logs, "Operation not permitted") {
 | 
								if strings.Contains(logs, "Operation not permitted") {
 | 
				
			||||||
				e2elog.Failf("privileged container should be able to create dummy device")
 | 
									framework.Failf("privileged container should be able to create dummy device")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,6 @@ import (
 | 
				
			|||||||
	kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
						kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/common"
 | 
						"k8s.io/kubernetes/test/e2e/common"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	testutils "k8s.io/kubernetes/test/utils"
 | 
						testutils "k8s.io/kubernetes/test/utils"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -182,9 +181,9 @@ var _ = framework.KubeDescribe("StartupProbe [Serial] [Disruptive] [NodeFeature:
 | 
				
			|||||||
			startedTime, err := common.GetContainerStartedTime(p, "busybox")
 | 
								startedTime, err := common.GetContainerStartedTime(p, "busybox")
 | 
				
			||||||
			framework.ExpectNoError(err)
 | 
								framework.ExpectNoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			e2elog.Logf("Container started at %v, pod became ready at %v", startedTime, readyTime)
 | 
								framework.Logf("Container started at %v, pod became ready at %v", startedTime, readyTime)
 | 
				
			||||||
			if readyTime.Sub(startedTime) < 40*time.Second {
 | 
								if readyTime.Sub(startedTime) < 40*time.Second {
 | 
				
			||||||
				e2elog.Failf("Pod became ready before startupProbe succeeded")
 | 
									framework.Failf("Pod became ready before startupProbe succeeded")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,6 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
 | 
						kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework/volume"
 | 
						"k8s.io/kubernetes/test/e2e/framework/volume"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	systemdutil "github.com/coreos/go-systemd/util"
 | 
						systemdutil "github.com/coreos/go-systemd/util"
 | 
				
			||||||
@@ -46,7 +45,7 @@ var _ = framework.KubeDescribe("Summary API [NodeConformance]", func() {
 | 
				
			|||||||
				return
 | 
									return
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if framework.TestContext.DumpLogsOnFailure {
 | 
								if framework.TestContext.DumpLogsOnFailure {
 | 
				
			||||||
				framework.LogFailedContainers(f.ClientSet, f.Namespace.Name, e2elog.Logf)
 | 
									framework.LogFailedContainers(f.ClientSet, f.Namespace.Name, framework.Logf)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			ginkgo.By("Recording processes in system cgroups")
 | 
								ginkgo.By("Recording processes in system cgroups")
 | 
				
			||||||
			recordSystemCgroupProcesses()
 | 
								recordSystemCgroupProcesses()
 | 
				
			||||||
@@ -152,7 +151,7 @@ var _ = framework.KubeDescribe("Summary API [NodeConformance]", func() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			// The Kubelet only manages the 'misc' system container if the host is not running systemd.
 | 
								// The Kubelet only manages the 'misc' system container if the host is not running systemd.
 | 
				
			||||||
			if !systemdutil.IsRunningSystemd() {
 | 
								if !systemdutil.IsRunningSystemd() {
 | 
				
			||||||
				e2elog.Logf("Host not running systemd; expecting 'misc' system container.")
 | 
									framework.Logf("Host not running systemd; expecting 'misc' system container.")
 | 
				
			||||||
				miscContExpectations := sysContExpectations().(*gstruct.FieldsMatcher)
 | 
									miscContExpectations := sysContExpectations().(*gstruct.FieldsMatcher)
 | 
				
			||||||
				// Misc processes are system-dependent, so relax the memory constraints.
 | 
									// Misc processes are system-dependent, so relax the memory constraints.
 | 
				
			||||||
				miscContExpectations.Fields["Memory"] = ptrMatchAllFields(gstruct.Fields{
 | 
									miscContExpectations.Fields["Memory"] = ptrMatchAllFields(gstruct.Fields{
 | 
				
			||||||
@@ -391,7 +390,7 @@ func summaryObjectID(element interface{}) string {
 | 
				
			|||||||
	case kubeletstatsv1alpha1.UserDefinedMetric:
 | 
						case kubeletstatsv1alpha1.UserDefinedMetric:
 | 
				
			||||||
		return el.Name
 | 
							return el.Name
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		e2elog.Failf("Unknown type: %T", el)
 | 
							framework.Failf("Unknown type: %T", el)
 | 
				
			||||||
		return "???"
 | 
							return "???"
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -419,7 +418,7 @@ func recent(d time.Duration) types.GomegaMatcher {
 | 
				
			|||||||
func recordSystemCgroupProcesses() {
 | 
					func recordSystemCgroupProcesses() {
 | 
				
			||||||
	cfg, err := getCurrentKubeletConfig()
 | 
						cfg, err := getCurrentKubeletConfig()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("Failed to read kubelet config: %v", err)
 | 
							framework.Logf("Failed to read kubelet config: %v", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	cgroups := map[string]string{
 | 
						cgroups := map[string]string{
 | 
				
			||||||
@@ -428,24 +427,24 @@ func recordSystemCgroupProcesses() {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	for name, cgroup := range cgroups {
 | 
						for name, cgroup := range cgroups {
 | 
				
			||||||
		if cgroup == "" {
 | 
							if cgroup == "" {
 | 
				
			||||||
			e2elog.Logf("Skipping unconfigured cgroup %s", name)
 | 
								framework.Logf("Skipping unconfigured cgroup %s", name)
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		pids, err := ioutil.ReadFile(fmt.Sprintf("/sys/fs/cgroup/cpu/%s/cgroup.procs", cgroup))
 | 
							pids, err := ioutil.ReadFile(fmt.Sprintf("/sys/fs/cgroup/cpu/%s/cgroup.procs", cgroup))
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			e2elog.Logf("Failed to read processes in cgroup %s: %v", name, err)
 | 
								framework.Logf("Failed to read processes in cgroup %s: %v", name, err)
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		e2elog.Logf("Processes in %s cgroup (%s):", name, cgroup)
 | 
							framework.Logf("Processes in %s cgroup (%s):", name, cgroup)
 | 
				
			||||||
		for _, pid := range strings.Fields(string(pids)) {
 | 
							for _, pid := range strings.Fields(string(pids)) {
 | 
				
			||||||
			path := fmt.Sprintf("/proc/%s/cmdline", pid)
 | 
								path := fmt.Sprintf("/proc/%s/cmdline", pid)
 | 
				
			||||||
			cmd, err := ioutil.ReadFile(path)
 | 
								cmd, err := ioutil.ReadFile(path)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				e2elog.Logf("  ginkgo.Failed to read %s: %v", path, err)
 | 
									framework.Logf("  ginkgo.Failed to read %s: %v", path, err)
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				e2elog.Logf("  %s", cmd)
 | 
									framework.Logf("  %s", cmd)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,6 @@ import (
 | 
				
			|||||||
	kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
						kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
				
			||||||
	evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api"
 | 
						evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/onsi/ginkgo"
 | 
						"github.com/onsi/ginkgo"
 | 
				
			||||||
	"github.com/onsi/gomega"
 | 
						"github.com/onsi/gomega"
 | 
				
			||||||
@@ -79,7 +78,7 @@ var _ = framework.KubeDescribe("SystemNodeCriticalPod [Slow] [Serial] [Disruptiv
 | 
				
			|||||||
						return nil
 | 
											return nil
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					msg := fmt.Sprintf("NodeCondition: %s not encountered yet", v1.NodeDiskPressure)
 | 
										msg := fmt.Sprintf("NodeCondition: %s not encountered yet", v1.NodeDiskPressure)
 | 
				
			||||||
					e2elog.Logf(msg)
 | 
										framework.Logf(msg)
 | 
				
			||||||
					return fmt.Errorf(msg)
 | 
										return fmt.Errorf(msg)
 | 
				
			||||||
				}, time.Minute*2, time.Second*4).Should(gomega.BeNil())
 | 
									}, time.Minute*2, time.Second*4).Should(gomega.BeNil())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -87,9 +86,9 @@ var _ = framework.KubeDescribe("SystemNodeCriticalPod [Slow] [Serial] [Disruptiv
 | 
				
			|||||||
				gomega.Consistently(func() error {
 | 
									gomega.Consistently(func() error {
 | 
				
			||||||
					err := checkMirrorPodRunning(f.ClientSet, mirrorPodName, ns)
 | 
										err := checkMirrorPodRunning(f.ClientSet, mirrorPodName, ns)
 | 
				
			||||||
					if err == nil {
 | 
										if err == nil {
 | 
				
			||||||
						e2elog.Logf("mirror pod %q is running", mirrorPodName)
 | 
											framework.Logf("mirror pod %q is running", mirrorPodName)
 | 
				
			||||||
					} else {
 | 
										} else {
 | 
				
			||||||
						e2elog.Logf(err.Error())
 | 
											framework.Logf(err.Error())
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					return err
 | 
										return err
 | 
				
			||||||
				}, time.Minute*8, time.Second*4).ShouldNot(gomega.HaveOccurred())
 | 
									}, time.Minute*8, time.Second*4).ShouldNot(gomega.HaveOccurred())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,6 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"golang.org/x/net/context"
 | 
						"golang.org/x/net/context"
 | 
				
			||||||
	"k8s.io/klog"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	v1 "k8s.io/api/core/v1"
 | 
						v1 "k8s.io/api/core/v1"
 | 
				
			||||||
	apiequality "k8s.io/apimachinery/pkg/api/equality"
 | 
						apiequality "k8s.io/apimachinery/pkg/api/equality"
 | 
				
			||||||
@@ -38,6 +37,7 @@ import (
 | 
				
			|||||||
	"k8s.io/client-go/kubernetes/scheme"
 | 
						"k8s.io/client-go/kubernetes/scheme"
 | 
				
			||||||
	"k8s.io/component-base/featuregate"
 | 
						"k8s.io/component-base/featuregate"
 | 
				
			||||||
	internalapi "k8s.io/cri-api/pkg/apis"
 | 
						internalapi "k8s.io/cri-api/pkg/apis"
 | 
				
			||||||
 | 
						"k8s.io/klog"
 | 
				
			||||||
	kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1"
 | 
						kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/features"
 | 
						"k8s.io/kubernetes/pkg/features"
 | 
				
			||||||
	kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
						kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
 | 
				
			||||||
@@ -50,7 +50,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/kubelet/remote"
 | 
						"k8s.io/kubernetes/pkg/kubelet/remote"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/util"
 | 
						"k8s.io/kubernetes/pkg/kubelet/util"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
	e2emetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
						e2emetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
				
			||||||
	frameworkmetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
						frameworkmetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
 | 
				
			||||||
	imageutils "k8s.io/kubernetes/test/utils/image"
 | 
						imageutils "k8s.io/kubernetes/test/utils/image"
 | 
				
			||||||
@@ -335,13 +334,13 @@ func newKubeletConfigMap(name string, internalKC *kubeletconfig.KubeletConfigura
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func logPodEvents(f *framework.Framework) {
 | 
					func logPodEvents(f *framework.Framework) {
 | 
				
			||||||
	e2elog.Logf("Summary of pod events during the test:")
 | 
						framework.Logf("Summary of pod events during the test:")
 | 
				
			||||||
	err := framework.ListNamespaceEvents(f.ClientSet, f.Namespace.Name)
 | 
						err := framework.ListNamespaceEvents(f.ClientSet, f.Namespace.Name)
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func logNodeEvents(f *framework.Framework) {
 | 
					func logNodeEvents(f *framework.Framework) {
 | 
				
			||||||
	e2elog.Logf("Summary of node events during the test:")
 | 
						framework.Logf("Summary of node events during the test:")
 | 
				
			||||||
	err := framework.ListNamespaceEvents(f.ClientSet, "")
 | 
						err := framework.ListNamespaceEvents(f.ClientSet, "")
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -362,9 +361,9 @@ func logKubeletLatencyMetrics(metricNames ...string) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	metric, err := frameworkmetrics.GrabKubeletMetricsWithoutProxy(framework.TestContext.NodeName+":10255", "/metrics")
 | 
						metric, err := frameworkmetrics.GrabKubeletMetricsWithoutProxy(framework.TestContext.NodeName+":10255", "/metrics")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Logf("Error getting kubelet metrics: %v", err)
 | 
							framework.Logf("Error getting kubelet metrics: %v", err)
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		e2elog.Logf("Kubelet Metrics: %+v", e2emetrics.GetKubeletLatencyMetrics(metric, metricSet))
 | 
							framework.Logf("Kubelet Metrics: %+v", e2emetrics.GetKubeletLatencyMetrics(metric, metricSet))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -426,7 +425,7 @@ func restartKubelet() {
 | 
				
			|||||||
	matches := regex.FindStringSubmatch(string(stdout))
 | 
						matches := regex.FindStringSubmatch(string(stdout))
 | 
				
			||||||
	framework.ExpectNotEqual(len(matches), 0)
 | 
						framework.ExpectNotEqual(len(matches), 0)
 | 
				
			||||||
	kube := matches[0]
 | 
						kube := matches[0]
 | 
				
			||||||
	e2elog.Logf("Get running kubelet with systemctl: %v, %v", string(stdout), kube)
 | 
						framework.Logf("Get running kubelet with systemctl: %v, %v", string(stdout), kube)
 | 
				
			||||||
	stdout, err = exec.Command("sudo", "systemctl", "restart", kube).CombinedOutput()
 | 
						stdout, err = exec.Command("sudo", "systemctl", "restart", kube).CombinedOutput()
 | 
				
			||||||
	framework.ExpectNoError(err, "Failed to restart kubelet with systemctl: %v, %v", err, stdout)
 | 
						framework.ExpectNoError(err, "Failed to restart kubelet with systemctl: %v, %v", err, stdout)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,6 @@ go_library(
 | 
				
			|||||||
        "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/client-go/dynamic:go_default_library",
 | 
					        "//staging/src/k8s.io/client-go/dynamic:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework:go_default_library",
 | 
					        "//test/e2e/framework:go_default_library",
 | 
				
			||||||
        "//test/e2e/framework/log:go_default_library",
 | 
					 | 
				
			||||||
        "//vendor/k8s.io/utils/pointer:go_default_library",
 | 
					        "//vendor/k8s.io/utils/pointer:go_default_library",
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,6 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
						"k8s.io/apimachinery/pkg/runtime/schema"
 | 
				
			||||||
	"k8s.io/client-go/dynamic"
 | 
						"k8s.io/client-go/dynamic"
 | 
				
			||||||
	"k8s.io/kubernetes/test/e2e/framework"
 | 
						"k8s.io/kubernetes/test/e2e/framework"
 | 
				
			||||||
	e2elog "k8s.io/kubernetes/test/e2e/framework/log"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CleanCrdFn declares the clean up function needed to remove the CRD
 | 
					// CleanCrdFn declares the clean up function needed to remove the CRD
 | 
				
			||||||
@@ -55,17 +54,17 @@ func CreateMultiVersionTestCRD(f *framework.Framework, group string, opts ...Opt
 | 
				
			|||||||
	// Creating a custom resource definition for use by assorted tests.
 | 
						// Creating a custom resource definition for use by assorted tests.
 | 
				
			||||||
	config, err := framework.LoadConfig()
 | 
						config, err := framework.LoadConfig()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Failf("failed to load config: %v", err)
 | 
							framework.Failf("failed to load config: %v", err)
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	apiExtensionClient, err := crdclientset.NewForConfig(config)
 | 
						apiExtensionClient, err := crdclientset.NewForConfig(config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Failf("failed to initialize apiExtensionClient: %v", err)
 | 
							framework.Failf("failed to initialize apiExtensionClient: %v", err)
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	dynamicClient, err := dynamic.NewForConfig(config)
 | 
						dynamicClient, err := dynamic.NewForConfig(config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Failf("failed to initialize dynamic client: %v", err)
 | 
							framework.Failf("failed to initialize dynamic client: %v", err)
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -102,7 +101,7 @@ func CreateMultiVersionTestCRD(f *framework.Framework, group string, opts ...Opt
 | 
				
			|||||||
	//create CRD and waits for the resource to be recognized and available.
 | 
						//create CRD and waits for the resource to be recognized and available.
 | 
				
			||||||
	crd, err = fixtures.CreateNewV1CustomResourceDefinitionWatchUnsafe(crd, apiExtensionClient)
 | 
						crd, err = fixtures.CreateNewV1CustomResourceDefinitionWatchUnsafe(crd, apiExtensionClient)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		e2elog.Failf("failed to create CustomResourceDefinition: %v", err)
 | 
							framework.Failf("failed to create CustomResourceDefinition: %v", err)
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -120,7 +119,7 @@ func CreateMultiVersionTestCRD(f *framework.Framework, group string, opts ...Opt
 | 
				
			|||||||
	testcrd.CleanUp = func() error {
 | 
						testcrd.CleanUp = func() error {
 | 
				
			||||||
		err := fixtures.DeleteV1CustomResourceDefinition(crd, apiExtensionClient)
 | 
							err := fixtures.DeleteV1CustomResourceDefinition(crd, apiExtensionClient)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			e2elog.Failf("failed to delete CustomResourceDefinition(%s): %v", name, err)
 | 
								framework.Failf("failed to delete CustomResourceDefinition(%s): %v", name, err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user