Merge pull request #79238 from bclau/tests/reduce-to-agnhost-part-3

tests: Replaces images used with agnhost (part 3)
This commit is contained in:
Kubernetes Prow Robot 2019-06-28 12:43:19 -07:00 committed by GitHub
commit d1d111496a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 74 additions and 75 deletions

View File

@ -134,7 +134,7 @@ var _ = SIGDescribe("CustomResourceConversionWebhook", func() {
context = setupServerCert(f.Namespace.Name, serviceCRDName) context = setupServerCert(f.Namespace.Name, serviceCRDName)
createAuthReaderRoleBindingForCRDConversion(f, f.Namespace.Name) createAuthReaderRoleBindingForCRDConversion(f, f.Namespace.Name)
deployCustomResourceWebhookAndService(f, imageutils.GetE2EImage(imageutils.CRDConversionWebhook), context) deployCustomResourceWebhookAndService(f, imageutils.GetE2EImage(imageutils.Agnhost), context)
}) })
ginkgo.AfterEach(func() { ginkgo.AfterEach(func() {
@ -269,11 +269,11 @@ func deployCustomResourceWebhookAndService(f *framework.Framework, image string,
Name: "sample-crd-conversion-webhook", Name: "sample-crd-conversion-webhook",
VolumeMounts: mounts, VolumeMounts: mounts,
Args: []string{ Args: []string{
"crd-conversion-webhook",
"--tls-cert-file=/webhook.local.config/certificates/tls.crt", "--tls-cert-file=/webhook.local.config/certificates/tls.crt",
"--tls-private-key-file=/webhook.local.config/certificates/tls.key", "--tls-private-key-file=/webhook.local.config/certificates/tls.key",
"--alsologtostderr", "--alsologtostderr",
"-v=4", "-v=4",
"2>&1",
}, },
Image: image, Image: image,
}, },

View File

@ -184,7 +184,8 @@ func newTablePod(podName string) *v1.Pod {
Containers: []v1.Container{ Containers: []v1.Container{
{ {
Name: containerName, Name: containerName,
Image: imageutils.GetE2EImage(imageutils.Porter), Image: imageutils.GetE2EImage(imageutils.Agnhost),
Args: []string{"porter"},
Env: []v1.EnvVar{{Name: fmt.Sprintf("SERVE_PORT_%d", port), Value: "foo"}}, Env: []v1.EnvVar{{Name: fmt.Sprintf("SERVE_PORT_%d", port), Value: "foo"}},
Ports: []v1.ContainerPort{{ContainerPort: int32(port)}}, Ports: []v1.ContainerPort{{ContainerPort: int32(port)}},
}, },

View File

@ -266,7 +266,7 @@ func testRollingUpdateDeployment(f *framework.Framework) {
rsRevision := "3546343826724305832" rsRevision := "3546343826724305832"
annotations := make(map[string]string) annotations := make(map[string]string)
annotations[deploymentutil.RevisionAnnotation] = rsRevision annotations[deploymentutil.RevisionAnnotation] = rsRevision
rs := newRS(rsName, replicas, rsPodLabels, WebserverImageName, WebserverImage) rs := newRS(rsName, replicas, rsPodLabels, WebserverImageName, WebserverImage, nil)
rs.Annotations = annotations rs.Annotations = annotations
e2elog.Logf("Creating replica set %q (going to be adopted)", rs.Name) e2elog.Logf("Creating replica set %q (going to be adopted)", rs.Name)
_, err := c.AppsV1().ReplicaSets(ns).Create(rs) _, err := c.AppsV1().ReplicaSets(ns).Create(rs)
@ -346,7 +346,7 @@ func testDeploymentCleanUpPolicy(f *framework.Framework) {
rsName := "test-cleanup-controller" rsName := "test-cleanup-controller"
replicas := int32(1) replicas := int32(1)
revisionHistoryLimit := utilpointer.Int32Ptr(0) revisionHistoryLimit := utilpointer.Int32Ptr(0)
_, err := c.AppsV1().ReplicaSets(ns).Create(newRS(rsName, replicas, rsPodLabels, WebserverImageName, WebserverImage)) _, err := c.AppsV1().ReplicaSets(ns).Create(newRS(rsName, replicas, rsPodLabels, WebserverImageName, WebserverImage, nil))
framework.ExpectNoError(err) framework.ExpectNoError(err)
// Verify that the required pods have come up. // Verify that the required pods have come up.
@ -417,7 +417,7 @@ func testRolloverDeployment(f *framework.Framework) {
rsName := "test-rollover-controller" rsName := "test-rollover-controller"
rsReplicas := int32(1) rsReplicas := int32(1)
_, err := c.AppsV1().ReplicaSets(ns).Create(newRS(rsName, rsReplicas, rsPodLabels, WebserverImageName, WebserverImage)) _, err := c.AppsV1().ReplicaSets(ns).Create(newRS(rsName, rsReplicas, rsPodLabels, WebserverImageName, WebserverImage, nil))
framework.ExpectNoError(err) framework.ExpectNoError(err)
// Verify that the required pods have come up. // Verify that the required pods have come up.
err = e2epod.VerifyPodsRunning(c, ns, podName, false, rsReplicas) err = e2epod.VerifyPodsRunning(c, ns, podName, false, rsReplicas)

View File

@ -88,6 +88,7 @@ func podOnNode(podName, nodeName string, image string) *v1.Pod {
{ {
Name: podName, Name: podName,
Image: image, Image: image,
Args: []string{"serve-hostname"},
Ports: []v1.ContainerPort{{ContainerPort: 9376}}, Ports: []v1.ContainerPort{{ContainerPort: 9376}},
}, },
}, },

View File

@ -52,7 +52,7 @@ var _ = SIGDescribe("ReplicationController", func() {
ginkgo.It("should serve a basic image on each replica with a private image", func() { ginkgo.It("should serve a basic image on each replica with a private image", func() {
// requires private images // requires private images
framework.SkipUnlessProviderIs("gce", "gke") framework.SkipUnlessProviderIs("gce", "gke")
privateimage := imageutils.GetConfig(imageutils.ServeHostname) privateimage := imageutils.GetConfig(imageutils.Agnhost)
privateimage.SetRegistry(imageutils.PrivateRegistry) privateimage.SetRegistry(imageutils.PrivateRegistry)
TestReplicationControllerServeImageOrFail(f, "private", privateimage.GetE2EImage()) TestReplicationControllerServeImageOrFail(f, "private", privateimage.GetE2EImage())
}) })
@ -85,7 +85,7 @@ var _ = SIGDescribe("ReplicationController", func() {
}) })
}) })
func newRC(rsName string, replicas int32, rcPodLabels map[string]string, imageName string, image string) *v1.ReplicationController { func newRC(rsName string, replicas int32, rcPodLabels map[string]string, imageName string, image string, args []string) *v1.ReplicationController {
zero := int64(0) zero := int64(0)
return &v1.ReplicationController{ return &v1.ReplicationController{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -103,6 +103,7 @@ func newRC(rsName string, replicas int32, rcPodLabels map[string]string, imageNa
{ {
Name: imageName, Name: imageName,
Image: image, Image: image,
Args: args,
}, },
}, },
}, },
@ -123,7 +124,7 @@ func TestReplicationControllerServeImageOrFail(f *framework.Framework, test stri
// The source for the Docker container kubernetes/serve_hostname is // The source for the Docker container kubernetes/serve_hostname is
// in contrib/for-demos/serve_hostname // in contrib/for-demos/serve_hostname
ginkgo.By(fmt.Sprintf("Creating replication controller %s", name)) ginkgo.By(fmt.Sprintf("Creating replication controller %s", name))
newRC := newRC(name, replicas, map[string]string{"name": name}, name, image) newRC := newRC(name, replicas, map[string]string{"name": name}, name, image, []string{"serve-hostname"})
newRC.Spec.Template.Spec.Containers[0].Ports = []v1.ContainerPort{{ContainerPort: 9376}} newRC.Spec.Template.Spec.Containers[0].Ports = []v1.ContainerPort{{ContainerPort: 9376}}
_, err := f.ClientSet.CoreV1().ReplicationControllers(f.Namespace.Name).Create(newRC) _, err := f.ClientSet.CoreV1().ReplicationControllers(f.Namespace.Name).Create(newRC)
framework.ExpectNoError(err) framework.ExpectNoError(err)
@ -200,7 +201,7 @@ func testReplicationControllerConditionCheck(f *framework.Framework) {
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By(fmt.Sprintf("Creating rc %q that asks for more than the allowed pod quota", name)) ginkgo.By(fmt.Sprintf("Creating rc %q that asks for more than the allowed pod quota", name))
rc := newRC(name, 3, map[string]string{"name": name}, WebserverImageName, WebserverImage) rc := newRC(name, 3, map[string]string{"name": name}, WebserverImageName, WebserverImage, nil)
rc, err = c.CoreV1().ReplicationControllers(namespace).Create(rc) rc, err = c.CoreV1().ReplicationControllers(namespace).Create(rc)
framework.ExpectNoError(err) framework.ExpectNoError(err)
@ -278,7 +279,7 @@ func testRCAdoptMatchingOrphans(f *framework.Framework) {
ginkgo.By("When a replication controller with a matching selector is created") ginkgo.By("When a replication controller with a matching selector is created")
replicas := int32(1) replicas := int32(1)
rcSt := newRC(name, replicas, map[string]string{"name": name}, name, WebserverImage) rcSt := newRC(name, replicas, map[string]string{"name": name}, name, WebserverImage, nil)
rcSt.Spec.Selector = map[string]string{"name": name} rcSt.Spec.Selector = map[string]string{"name": name}
rc, err := f.ClientSet.CoreV1().ReplicationControllers(f.Namespace.Name).Create(rcSt) rc, err := f.ClientSet.CoreV1().ReplicationControllers(f.Namespace.Name).Create(rcSt)
framework.ExpectNoError(err) framework.ExpectNoError(err)
@ -307,7 +308,7 @@ func testRCReleaseControlledNotMatching(f *framework.Framework) {
name := "pod-release" name := "pod-release"
ginkgo.By("Given a ReplicationController is created") ginkgo.By("Given a ReplicationController is created")
replicas := int32(1) replicas := int32(1)
rcSt := newRC(name, replicas, map[string]string{"name": name}, name, WebserverImage) rcSt := newRC(name, replicas, map[string]string{"name": name}, name, WebserverImage, nil)
rcSt.Spec.Selector = map[string]string{"name": name} rcSt.Spec.Selector = map[string]string{"name": name}
rc, err := f.ClientSet.CoreV1().ReplicationControllers(f.Namespace.Name).Create(rcSt) rc, err := f.ClientSet.CoreV1().ReplicationControllers(f.Namespace.Name).Create(rcSt)
framework.ExpectNoError(err) framework.ExpectNoError(err)

View File

@ -38,7 +38,7 @@ import (
imageutils "k8s.io/kubernetes/test/utils/image" imageutils "k8s.io/kubernetes/test/utils/image"
) )
func newRS(rsName string, replicas int32, rsPodLabels map[string]string, imageName string, image string) *appsv1.ReplicaSet { func newRS(rsName string, replicas int32, rsPodLabels map[string]string, imageName string, image string, args []string) *appsv1.ReplicaSet {
zero := int64(0) zero := int64(0)
return &appsv1.ReplicaSet{ return &appsv1.ReplicaSet{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -60,6 +60,7 @@ func newRS(rsName string, replicas int32, rsPodLabels map[string]string, imageNa
{ {
Name: imageName, Name: imageName,
Image: image, Image: image,
Args: args,
}, },
}, },
}, },
@ -96,7 +97,7 @@ var _ = SIGDescribe("ReplicaSet", func() {
ginkgo.It("should serve a basic image on each replica with a private image", func() { ginkgo.It("should serve a basic image on each replica with a private image", func() {
// requires private images // requires private images
framework.SkipUnlessProviderIs("gce", "gke") framework.SkipUnlessProviderIs("gce", "gke")
privateimage := imageutils.GetConfig(imageutils.ServeHostname) privateimage := imageutils.GetConfig(imageutils.Agnhost)
privateimage.SetRegistry(imageutils.PrivateRegistry) privateimage.SetRegistry(imageutils.PrivateRegistry)
testReplicaSetServeImageOrFail(f, "private", privateimage.GetE2EImage()) testReplicaSetServeImageOrFail(f, "private", privateimage.GetE2EImage())
}) })
@ -125,7 +126,7 @@ func testReplicaSetServeImageOrFail(f *framework.Framework, test string, image s
// The source for the Docker containter kubernetes/serve_hostname is // The source for the Docker containter kubernetes/serve_hostname is
// in contrib/for-demos/serve_hostname // in contrib/for-demos/serve_hostname
e2elog.Logf("Creating ReplicaSet %s", name) e2elog.Logf("Creating ReplicaSet %s", name)
newRS := newRS(name, replicas, map[string]string{"name": name}, name, image) newRS := newRS(name, replicas, map[string]string{"name": name}, name, image, []string{"serve-hostname"})
newRS.Spec.Template.Spec.Containers[0].Ports = []v1.ContainerPort{{ContainerPort: 9376}} newRS.Spec.Template.Spec.Containers[0].Ports = []v1.ContainerPort{{ContainerPort: 9376}}
_, err := f.ClientSet.AppsV1().ReplicaSets(f.Namespace.Name).Create(newRS) _, err := f.ClientSet.AppsV1().ReplicaSets(f.Namespace.Name).Create(newRS)
framework.ExpectNoError(err) framework.ExpectNoError(err)
@ -202,7 +203,7 @@ func testReplicaSetConditionCheck(f *framework.Framework) {
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By(fmt.Sprintf("Creating replica set %q that asks for more than the allowed pod quota", name)) ginkgo.By(fmt.Sprintf("Creating replica set %q that asks for more than the allowed pod quota", name))
rs := newRS(name, 3, map[string]string{"name": name}, WebserverImageName, WebserverImage) rs := newRS(name, 3, map[string]string{"name": name}, WebserverImageName, WebserverImage, nil)
rs, err = c.AppsV1().ReplicaSets(namespace).Create(rs) rs, err = c.AppsV1().ReplicaSets(namespace).Create(rs)
framework.ExpectNoError(err) framework.ExpectNoError(err)
@ -281,7 +282,7 @@ func testRSAdoptMatchingAndReleaseNotMatching(f *framework.Framework) {
ginkgo.By("When a replicaset with a matching selector is created") ginkgo.By("When a replicaset with a matching selector is created")
replicas := int32(1) replicas := int32(1)
rsSt := newRS(name, replicas, map[string]string{"name": name}, name, WebserverImage) rsSt := newRS(name, replicas, map[string]string{"name": name}, name, WebserverImage, nil)
rsSt.Spec.Selector = &metav1.LabelSelector{MatchLabels: map[string]string{"name": name}} rsSt.Spec.Selector = &metav1.LabelSelector{MatchLabels: map[string]string{"name": name}}
rs, err := f.ClientSet.AppsV1().ReplicaSets(f.Namespace.Name).Create(rsSt) rs, err := f.ClientSet.AppsV1().ReplicaSets(f.Namespace.Name).Create(rsSt)
framework.ExpectNoError(err) framework.ExpectNoError(err)

View File

@ -77,7 +77,8 @@ var _ = SIGDescribe("[Feature:DynamicAudit]", func() {
Containers: []v1.Container{ Containers: []v1.Container{
{ {
Name: "proxy", Name: "proxy",
Image: imageutils.GetE2EImage(imageutils.AuditProxy), Image: imageutils.GetE2EImage(imageutils.Agnhost),
Args: []string{"audit-proxy"},
Ports: []v1.ContainerPort{ Ports: []v1.ContainerPort{
{ {
ContainerPort: 8080, ContainerPort: 8080,

View File

@ -41,7 +41,6 @@ import (
) )
var mountImage = imageutils.GetE2EImage(imageutils.Mounttest) var mountImage = imageutils.GetE2EImage(imageutils.Mounttest)
var inClusterClientImage = imageutils.GetE2EImage(imageutils.InClusterClient)
var _ = SIGDescribe("ServiceAccounts", func() { var _ = SIGDescribe("ServiceAccounts", func() {
f := framework.NewDefaultFramework("svcaccounts") f := framework.NewDefaultFramework("svcaccounts")
@ -436,7 +435,8 @@ var _ = SIGDescribe("ServiceAccounts", func() {
Spec: v1.PodSpec{ Spec: v1.PodSpec{
Containers: []v1.Container{{ Containers: []v1.Container{{
Name: "inclusterclient", Name: "inclusterclient",
Image: inClusterClientImage, Image: imageutils.GetE2EImage(imageutils.Agnhost),
Args: []string{"inclusterclient"},
VolumeMounts: []v1.VolumeMount{{ VolumeMounts: []v1.VolumeMount{{
MountPath: "/var/run/secrets/kubernetes.io/serviceaccount", MountPath: "/var/run/secrets/kubernetes.io/serviceaccount",
Name: "kube-api-access-e2e", Name: "kube-api-access-e2e",

View File

@ -17,10 +17,13 @@ limitations under the License.
package common package common
import ( import (
"github.com/onsi/gomega"
"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/apimachinery/pkg/util/uuid" "k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
imageutils "k8s.io/kubernetes/test/utils/image" imageutils "k8s.io/kubernetes/test/utils/image"
) )
@ -33,9 +36,17 @@ var _ = framework.KubeDescribe("Docker Containers", func() {
Description: Default command and arguments from the docker image entrypoint MUST be used when Pod does not specify the container command Description: Default command and arguments from the docker image entrypoint MUST be used when Pod does not specify the container command
*/ */
framework.ConformanceIt("should use the image defaults if command and args are blank [NodeConformance]", func() { framework.ConformanceIt("should use the image defaults if command and args are blank [NodeConformance]", func() {
f.TestContainerOutput("use defaults", entrypointTestPod(), 0, []string{ pod := f.PodClient().Create(entrypointTestPod())
"[/ep default arguments]", err := e2epod.WaitForPodNameRunningInNamespace(f.ClientSet, pod.Name, f.Namespace.Name)
}) framework.ExpectNoError(err, "Expected pod %q to be running, got error: %v", pod.Name, err)
pollLogs := func() (string, error) {
return e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, pod.Name, containerName)
}
// The agnhost's image default entrypoint / args are: "/agnhost pause"
// which will print out "Paused".
gomega.Eventually(pollLogs, 3, framework.Poll).Should(gomega.ContainSubstring("Paused"))
}) })
/* /*
@ -45,10 +56,10 @@ var _ = framework.KubeDescribe("Docker Containers", func() {
*/ */
framework.ConformanceIt("should be able to override the image's default arguments (docker cmd) [NodeConformance]", func() { framework.ConformanceIt("should be able to override the image's default arguments (docker cmd) [NodeConformance]", func() {
pod := entrypointTestPod() pod := entrypointTestPod()
pod.Spec.Containers[0].Args = []string{"override", "arguments"} pod.Spec.Containers[0].Args = []string{"entrypoint-tester", "override", "arguments"}
f.TestContainerOutput("override arguments", pod, 0, []string{ f.TestContainerOutput("override arguments", pod, 0, []string{
"[/ep override arguments]", "[/agnhost entrypoint-tester override arguments]",
}) })
}) })
@ -61,10 +72,10 @@ var _ = framework.KubeDescribe("Docker Containers", func() {
*/ */
framework.ConformanceIt("should be able to override the image's default command (docker entrypoint) [NodeConformance]", func() { framework.ConformanceIt("should be able to override the image's default command (docker entrypoint) [NodeConformance]", func() {
pod := entrypointTestPod() pod := entrypointTestPod()
pod.Spec.Containers[0].Command = []string{"/ep-2"} pod.Spec.Containers[0].Command = []string{"/agnhost-2", "entrypoint-tester"}
f.TestContainerOutput("override command", pod, 0, []string{ f.TestContainerOutput("override command", pod, 0, []string{
"[/ep-2]", "[/agnhost-2 entrypoint-tester]",
}) })
}) })
@ -75,11 +86,11 @@ var _ = framework.KubeDescribe("Docker Containers", func() {
*/ */
framework.ConformanceIt("should be able to override the image's default command and arguments [NodeConformance]", func() { framework.ConformanceIt("should be able to override the image's default command and arguments [NodeConformance]", func() {
pod := entrypointTestPod() pod := entrypointTestPod()
pod.Spec.Containers[0].Command = []string{"/ep-2"} pod.Spec.Containers[0].Command = []string{"/agnhost-2"}
pod.Spec.Containers[0].Args = []string{"override", "arguments"} pod.Spec.Containers[0].Args = []string{"entrypoint-tester", "override", "arguments"}
f.TestContainerOutput("override all", pod, 0, []string{ f.TestContainerOutput("override all", pod, 0, []string{
"[/ep-2 override arguments]", "[/agnhost-2 entrypoint-tester override arguments]",
}) })
}) })
}) })
@ -99,7 +110,7 @@ func entrypointTestPod() *v1.Pod {
Containers: []v1.Container{ Containers: []v1.Container{
{ {
Name: testContainerName, Name: testContainerName,
Image: imageutils.GetE2EImage(imageutils.EntrypointTester), Image: imageutils.GetE2EImage(imageutils.Agnhost),
}, },
}, },
RestartPolicy: v1.RestartPolicyNever, RestartPolicy: v1.RestartPolicyNever,

View File

@ -54,14 +54,11 @@ var CurrentSuite Suite
// TODO(random-liu): Change the image puller pod to use similar mechanism. // TODO(random-liu): Change the image puller pod to use similar mechanism.
var CommonImageWhiteList = sets.NewString( var CommonImageWhiteList = sets.NewString(
imageutils.GetE2EImage(imageutils.Agnhost), imageutils.GetE2EImage(imageutils.Agnhost),
imageutils.GetE2EImage(imageutils.AuditProxy),
imageutils.GetE2EImage(imageutils.BusyBox), imageutils.GetE2EImage(imageutils.BusyBox),
imageutils.GetE2EImage(imageutils.EntrypointTester),
imageutils.GetE2EImage(imageutils.IpcUtils), imageutils.GetE2EImage(imageutils.IpcUtils),
imageutils.GetE2EImage(imageutils.Mounttest), imageutils.GetE2EImage(imageutils.Mounttest),
imageutils.GetE2EImage(imageutils.MounttestUser), imageutils.GetE2EImage(imageutils.MounttestUser),
imageutils.GetE2EImage(imageutils.Nginx), imageutils.GetE2EImage(imageutils.Nginx),
imageutils.GetE2EImage(imageutils.ServeHostname),
imageutils.GetE2EImage(imageutils.TestWebserver), imageutils.GetE2EImage(imageutils.TestWebserver),
imageutils.GetE2EImage(imageutils.VolumeNFSServer), imageutils.GetE2EImage(imageutils.VolumeNFSServer),
imageutils.GetE2EImage(imageutils.VolumeGlusterServer), imageutils.GetE2EImage(imageutils.VolumeGlusterServer),

View File

@ -1236,6 +1236,7 @@ func StartServeHostnameService(c clientset.Interface, svc *v1.Service, ns string
config := testutils.RCConfig{ config := testutils.RCConfig{
Client: c, Client: c,
Image: ServeHostnameImage, Image: ServeHostnameImage,
Command: []string{"/agnhost", "serve-hostname"},
Name: name, Name: name,
Namespace: ns, Namespace: ns,
PollInterval: 3 * time.Second, PollInterval: 3 * time.Second,

View File

@ -219,7 +219,7 @@ var (
} }
// ServeHostnameImage is a serve hostname image name. // ServeHostnameImage is a serve hostname image name.
ServeHostnameImage = imageutils.GetE2EImage(imageutils.ServeHostname) ServeHostnameImage = imageutils.GetE2EImage(imageutils.Agnhost)
) )
// GetServicesProxyRequest returns a request for a service proxy. // GetServicesProxyRequest returns a request for a service proxy.

View File

@ -204,7 +204,7 @@ const (
addonNsName = metav1.NamespaceSystem addonNsName = metav1.NamespaceSystem
) )
var serveHostnameImage = imageutils.GetE2EImage(imageutils.ServeHostname) var serveHostnameImage = imageutils.GetE2EImage(imageutils.Agnhost)
type stringPair struct { type stringPair struct {
data, fileName string data, fileName string

View File

@ -640,7 +640,8 @@ func createServerPodAndService(f *framework.Framework, namespace *v1.Namespace,
// Build the containers for the server pod. // Build the containers for the server pod.
containers = append(containers, v1.Container{ containers = append(containers, v1.Container{
Name: fmt.Sprintf("%s-container-%d", podName, port), Name: fmt.Sprintf("%s-container-%d", podName, port),
Image: imageutils.GetE2EImage(imageutils.Porter), Image: imageutils.GetE2EImage(imageutils.Agnhost),
Args: []string{"porter"},
Env: []v1.EnvVar{ Env: []v1.EnvVar{
{ {
Name: fmt.Sprintf("SERVE_PORT_%d", port), Name: fmt.Sprintf("SERVE_PORT_%d", port),

View File

@ -69,7 +69,7 @@ func networkingIPerfTest(isIPv6 bool) {
return v1.PodSpec{ return v1.PodSpec{
Containers: []v1.Container{{ Containers: []v1.Container{{
Name: "iperf-server", Name: "iperf-server",
Image: imageutils.GetE2EImage(imageutils.Iperf), Image: imageutils.GetE2EImage(imageutils.Agnhost),
Args: []string{ Args: []string{
"/bin/sh", "/bin/sh",
"-c", "-c",
@ -97,7 +97,7 @@ func networkingIPerfTest(isIPv6 bool) {
Containers: []v1.Container{ Containers: []v1.Container{
{ {
Name: "iperf-client", Name: "iperf-client",
Image: imageutils.GetE2EImage(imageutils.Iperf), Image: imageutils.GetE2EImage(imageutils.Agnhost),
Args: []string{ Args: []string{
"/bin/sh", "/bin/sh",
"-c", "-c",

View File

@ -125,7 +125,8 @@ var _ = SIGDescribe("Proxy", func() {
pods := []*v1.Pod{} pods := []*v1.Pod{}
cfg := testutils.RCConfig{ cfg := testutils.RCConfig{
Client: f.ClientSet, Client: f.ClientSet,
Image: imageutils.GetE2EImage(imageutils.Porter), Image: imageutils.GetE2EImage(imageutils.Agnhost),
Command: []string{"/agnhost", "porter"},
Name: service.Name, Name: service.Name,
Namespace: f.Namespace.Name, Namespace: f.Namespace.Name,
Replicas: 1, Replicas: 1,

View File

@ -61,6 +61,7 @@ var _ = SIGDescribe("Events", func() {
{ {
Name: "p", Name: "p",
Image: framework.ServeHostnameImage, Image: framework.ServeHostnameImage,
Args: []string{"serve-hostname"},
Ports: []v1.ContainerPort{{ContainerPort: 80}}, Ports: []v1.ContainerPort{{ContainerPort: 80}},
}, },
}, },

View File

@ -176,24 +176,25 @@ var _ = SIGDescribe("Load capacity", func() {
quotas bool quotas bool
} }
serveHostnameCmd := []string{"/agnhost", "serve-hostname"}
loadTests := []Load{ loadTests := []Load{
// The container will consume 1 cpu and 512mb of memory. // The container will consume 1 cpu and 512mb of memory.
{podsPerNode: 3, image: "jess/stress", command: []string{"stress", "-c", "1", "-m", "2"}, kind: api.Kind("ReplicationController")}, {podsPerNode: 3, image: "jess/stress", command: []string{"stress", "-c", "1", "-m", "2"}, kind: api.Kind("ReplicationController")},
{podsPerNode: 30, image: framework.ServeHostnameImage, kind: api.Kind("ReplicationController")}, {podsPerNode: 30, image: framework.ServeHostnameImage, command: serveHostnameCmd, kind: api.Kind("ReplicationController")},
// Tests for other resource types // Tests for other resource types
{podsPerNode: 30, image: framework.ServeHostnameImage, kind: extensions.Kind("Deployment")}, {podsPerNode: 30, image: framework.ServeHostnameImage, command: serveHostnameCmd, kind: extensions.Kind("Deployment")},
{podsPerNode: 30, image: framework.ServeHostnameImage, kind: batch.Kind("Job")}, {podsPerNode: 30, image: framework.ServeHostnameImage, command: serveHostnameCmd, kind: batch.Kind("Job")},
// Test scheduling when daemons are preset // Test scheduling when daemons are preset
{podsPerNode: 30, image: framework.ServeHostnameImage, kind: api.Kind("ReplicationController"), daemonsPerNode: 2}, {podsPerNode: 30, image: framework.ServeHostnameImage, command: serveHostnameCmd, kind: api.Kind("ReplicationController"), daemonsPerNode: 2},
// Test with secrets // Test with secrets
{podsPerNode: 30, image: framework.ServeHostnameImage, kind: extensions.Kind("Deployment"), secretsPerPod: 2}, {podsPerNode: 30, image: framework.ServeHostnameImage, command: serveHostnameCmd, kind: extensions.Kind("Deployment"), secretsPerPod: 2},
// Test with configmaps // Test with configmaps
{podsPerNode: 30, image: framework.ServeHostnameImage, kind: extensions.Kind("Deployment"), configMapsPerPod: 2}, {podsPerNode: 30, image: framework.ServeHostnameImage, command: serveHostnameCmd, kind: extensions.Kind("Deployment"), configMapsPerPod: 2},
// Special test case which randomizes created resources // Special test case which randomizes created resources
{podsPerNode: 30, image: framework.ServeHostnameImage, kind: randomKind}, {podsPerNode: 30, image: framework.ServeHostnameImage, command: serveHostnameCmd, kind: randomKind},
// Test with quotas // Test with quotas
{podsPerNode: 30, image: framework.ServeHostnameImage, kind: api.Kind("ReplicationController"), quotas: true}, {podsPerNode: 30, image: framework.ServeHostnameImage, command: serveHostnameCmd, kind: api.Kind("ReplicationController"), quotas: true},
{podsPerNode: 30, image: framework.ServeHostnameImage, kind: randomKind, quotas: true}, {podsPerNode: 30, image: framework.ServeHostnameImage, command: serveHostnameCmd, kind: randomKind, quotas: true},
} }
isCanonical := func(test *Load) bool { isCanonical := func(test *Load) bool {

View File

@ -56,7 +56,7 @@ var _ = SIGDescribe("Multi-AZ Clusters", func() {
}) })
ginkgo.It("should spread the pods of a replication controller across zones", func() { ginkgo.It("should spread the pods of a replication controller across zones", func() {
SpreadRCOrFail(f, int32((2*zoneCount)+1), image) SpreadRCOrFail(f, int32((2*zoneCount)+1), image, []string{"serve-hostname"})
}) })
}) })
@ -177,7 +177,7 @@ func checkZoneSpreading(c clientset.Interface, pods *v1.PodList, zoneNames []str
// SpreadRCOrFail Check that the pods comprising a replication // SpreadRCOrFail Check that the pods comprising a replication
// controller get spread evenly across available zones // controller get spread evenly across available zones
func SpreadRCOrFail(f *framework.Framework, replicaCount int32, image string) { func SpreadRCOrFail(f *framework.Framework, replicaCount int32, image string, args []string) {
name := "ubelite-spread-rc-" + string(uuid.NewUUID()) name := "ubelite-spread-rc-" + string(uuid.NewUUID())
ginkgo.By(fmt.Sprintf("Creating replication controller %s", name)) ginkgo.By(fmt.Sprintf("Creating replication controller %s", name))
controller, err := f.ClientSet.CoreV1().ReplicationControllers(f.Namespace.Name).Create(&v1.ReplicationController{ controller, err := f.ClientSet.CoreV1().ReplicationControllers(f.Namespace.Name).Create(&v1.ReplicationController{
@ -199,6 +199,7 @@ func SpreadRCOrFail(f *framework.Framework, replicaCount int32, image string) {
{ {
Name: name, Name: name,
Image: image, Image: image,
Args: args,
Ports: []v1.ContainerPort{{ContainerPort: 9376}}, Ports: []v1.ContainerPort{{ContainerPort: 9376}},
}, },
}, },

View File

@ -68,6 +68,7 @@ func (t *DaemonSetUpgradeTest) Setup(f *framework.Framework) {
{ {
Name: daemonSetName, Name: daemonSetName,
Image: image, Image: image,
Args: []string{"serve-hostname"},
Ports: []v1.ContainerPort{{ContainerPort: 9376}}, Ports: []v1.ContainerPort{{ContainerPort: 9376}},
SecurityContext: &v1.SecurityContext{}, SecurityContext: &v1.SecurityContext{},
}, },

View File

@ -44,13 +44,13 @@ const (
// NodeImageWhiteList is a list of images used in node e2e test. These images will be prepulled // NodeImageWhiteList is a list of images used in node e2e test. These images will be prepulled
// before test running so that the image pulling won't fail in actual test. // before test running so that the image pulling won't fail in actual test.
var NodeImageWhiteList = sets.NewString( var NodeImageWhiteList = sets.NewString(
imageutils.GetE2EImage(imageutils.Agnhost),
"google/cadvisor:latest", "google/cadvisor:latest",
"k8s.gcr.io/stress:v1", "k8s.gcr.io/stress:v1",
busyboxImage, busyboxImage,
"k8s.gcr.io/busybox@sha256:4bdd623e848417d96127e16037743f0cd8b528c026e9175e22a84f639eca58ff", "k8s.gcr.io/busybox@sha256:4bdd623e848417d96127e16037743f0cd8b528c026e9175e22a84f639eca58ff",
imageutils.GetE2EImage(imageutils.Nginx), imageutils.GetE2EImage(imageutils.Nginx),
imageutils.GetE2EImage(imageutils.Perl), imageutils.GetE2EImage(imageutils.Perl),
imageutils.GetE2EImage(imageutils.ServeHostname),
imageutils.GetE2EImage(imageutils.Nonewprivs), imageutils.GetE2EImage(imageutils.Nonewprivs),
imageutils.GetPauseImageName(), imageutils.GetPauseImageName(),
gpu.GetGPUDevicePluginImage(), gpu.GetGPUDevicePluginImage(),

View File

@ -103,18 +103,14 @@ var (
) )
const ( const (
// CRDConversionWebhook image
CRDConversionWebhook = iota
// Agnhost image // Agnhost image
Agnhost Agnhost = iota
// Alpine image // Alpine image
Alpine Alpine
// APIServer image // APIServer image
APIServer APIServer
// AppArmorLoader image // AppArmorLoader image
AppArmorLoader AppArmorLoader
// AuditProxy image
AuditProxy
// AuthenticatedAlpine image // AuthenticatedAlpine image
AuthenticatedAlpine AuthenticatedAlpine
// AuthenticatedWindowsNanoServer image // AuthenticatedWindowsNanoServer image
@ -133,8 +129,6 @@ const (
DebianBase DebianBase
// EchoServer image // EchoServer image
EchoServer EchoServer
// EntrypointTester image
EntrypointTester
// Etcd image // Etcd image
Etcd Etcd
// GBFrontend image // GBFrontend image
@ -145,16 +139,12 @@ const (
Httpd Httpd
// HttpdNew image // HttpdNew image
HttpdNew HttpdNew
// InClusterClient image
InClusterClient
// Invalid image // Invalid image
Invalid Invalid
// InvalidRegistryImage image // InvalidRegistryImage image
InvalidRegistryImage InvalidRegistryImage
// IpcUtils image // IpcUtils image
IpcUtils IpcUtils
// Iperf image
Iperf
// JessieDnsutils image // JessieDnsutils image
JessieDnsutils JessieDnsutils
// Kitten image // Kitten image
@ -178,8 +168,6 @@ const (
Pause Pause
// Perl image // Perl image
Perl Perl
// Porter image
Porter
// PrometheusDummyExporter image // PrometheusDummyExporter image
PrometheusDummyExporter PrometheusDummyExporter
// PrometheusToSd image // PrometheusToSd image
@ -192,8 +180,6 @@ const (
ResourceController ResourceController
// SdDummyExporter image // SdDummyExporter image
SdDummyExporter SdDummyExporter
// ServeHostname image
ServeHostname
// StartupScript image // StartupScript image
StartupScript StartupScript
// TestWebserver image // TestWebserver image
@ -212,13 +198,11 @@ const (
func initImageConfigs() map[int]Config { func initImageConfigs() map[int]Config {
configs := map[int]Config{} configs := map[int]Config{}
configs[CRDConversionWebhook] = Config{e2eRegistry, "crd-conversion-webhook", "1.13rev2"} configs[Agnhost] = Config{e2eRegistry, "agnhost", "2.2"}
configs[Agnhost] = Config{e2eRegistry, "agnhost", "2.1"}
configs[Alpine] = Config{dockerLibraryRegistry, "alpine", "3.7"} configs[Alpine] = Config{dockerLibraryRegistry, "alpine", "3.7"}
configs[AuthenticatedAlpine] = Config{gcAuthenticatedRegistry, "alpine", "3.7"} configs[AuthenticatedAlpine] = Config{gcAuthenticatedRegistry, "alpine", "3.7"}
configs[APIServer] = Config{e2eRegistry, "sample-apiserver", "1.10"} configs[APIServer] = Config{e2eRegistry, "sample-apiserver", "1.10"}
configs[AppArmorLoader] = Config{e2eRegistry, "apparmor-loader", "1.0"} configs[AppArmorLoader] = Config{e2eRegistry, "apparmor-loader", "1.0"}
configs[AuditProxy] = Config{e2eRegistry, "audit-proxy", "1.0"}
configs[BusyBox] = Config{dockerLibraryRegistry, "busybox", "1.29"} configs[BusyBox] = Config{dockerLibraryRegistry, "busybox", "1.29"}
configs[CheckMetadataConcealment] = Config{e2eRegistry, "metadata-concealment", "1.2"} configs[CheckMetadataConcealment] = Config{e2eRegistry, "metadata-concealment", "1.2"}
configs[CudaVectorAdd] = Config{e2eRegistry, "cuda-vector-add", "1.0"} configs[CudaVectorAdd] = Config{e2eRegistry, "cuda-vector-add", "1.0"}
@ -226,17 +210,14 @@ func initImageConfigs() map[int]Config {
configs[Dnsutils] = Config{e2eRegistry, "dnsutils", "1.1"} configs[Dnsutils] = Config{e2eRegistry, "dnsutils", "1.1"}
configs[DebianBase] = Config{googleContainerRegistry, "debian-base", "0.4.1"} configs[DebianBase] = Config{googleContainerRegistry, "debian-base", "0.4.1"}
configs[EchoServer] = Config{e2eRegistry, "echoserver", "2.2"} configs[EchoServer] = Config{e2eRegistry, "echoserver", "2.2"}
configs[EntrypointTester] = Config{e2eRegistry, "entrypoint-tester", "1.0"}
configs[Etcd] = Config{gcRegistry, "etcd", "3.3.10"} configs[Etcd] = Config{gcRegistry, "etcd", "3.3.10"}
configs[GBFrontend] = Config{sampleRegistry, "gb-frontend", "v6"} configs[GBFrontend] = Config{sampleRegistry, "gb-frontend", "v6"}
configs[GBRedisSlave] = Config{sampleRegistry, "gb-redisslave", "v3"} configs[GBRedisSlave] = Config{sampleRegistry, "gb-redisslave", "v3"}
configs[Httpd] = Config{dockerLibraryRegistry, "httpd", "2.4.38-alpine"} configs[Httpd] = Config{dockerLibraryRegistry, "httpd", "2.4.38-alpine"}
configs[HttpdNew] = Config{dockerLibraryRegistry, "httpd", "2.4.39-alpine"} configs[HttpdNew] = Config{dockerLibraryRegistry, "httpd", "2.4.39-alpine"}
configs[InClusterClient] = Config{e2eRegistry, "inclusterclient", "1.0"}
configs[Invalid] = Config{gcRegistry, "invalid-image", "invalid-tag"} configs[Invalid] = Config{gcRegistry, "invalid-image", "invalid-tag"}
configs[InvalidRegistryImage] = Config{invalidRegistry, "alpine", "3.1"} configs[InvalidRegistryImage] = Config{invalidRegistry, "alpine", "3.1"}
configs[IpcUtils] = Config{e2eRegistry, "ipc-utils", "1.0"} configs[IpcUtils] = Config{e2eRegistry, "ipc-utils", "1.0"}
configs[Iperf] = Config{e2eRegistry, "iperf", "1.0"}
configs[JessieDnsutils] = Config{e2eRegistry, "jessie-dnsutils", "1.0"} configs[JessieDnsutils] = Config{e2eRegistry, "jessie-dnsutils", "1.0"}
configs[Kitten] = Config{e2eRegistry, "kitten", "1.0"} configs[Kitten] = Config{e2eRegistry, "kitten", "1.0"}
configs[Mounttest] = Config{e2eRegistry, "mounttest", "1.0"} configs[Mounttest] = Config{e2eRegistry, "mounttest", "1.0"}
@ -249,14 +230,12 @@ func initImageConfigs() map[int]Config {
// Pause - when these values are updated, also update cmd/kubelet/app/options/container_runtime.go // Pause - when these values are updated, also update cmd/kubelet/app/options/container_runtime.go
configs[Pause] = Config{gcRegistry, "pause", "3.1"} configs[Pause] = Config{gcRegistry, "pause", "3.1"}
configs[Perl] = Config{dockerLibraryRegistry, "perl", "5.26"} configs[Perl] = Config{dockerLibraryRegistry, "perl", "5.26"}
configs[Porter] = Config{e2eRegistry, "porter", "1.0"}
configs[PrometheusDummyExporter] = Config{e2eRegistry, "prometheus-dummy-exporter", "v0.1.0"} configs[PrometheusDummyExporter] = Config{e2eRegistry, "prometheus-dummy-exporter", "v0.1.0"}
configs[PrometheusToSd] = Config{e2eRegistry, "prometheus-to-sd", "v0.5.0"} configs[PrometheusToSd] = Config{e2eRegistry, "prometheus-to-sd", "v0.5.0"}
configs[Redis] = Config{dockerLibraryRegistry, "redis", "3.2.9-alpine"} configs[Redis] = Config{dockerLibraryRegistry, "redis", "3.2.9-alpine"}
configs[ResourceConsumer] = Config{e2eRegistry, "resource-consumer", "1.5"} configs[ResourceConsumer] = Config{e2eRegistry, "resource-consumer", "1.5"}
configs[ResourceController] = Config{e2eRegistry, "resource-consumer-controller", "1.0"} configs[ResourceController] = Config{e2eRegistry, "resource-consumer-controller", "1.0"}
configs[SdDummyExporter] = Config{gcRegistry, "sd-dummy-exporter", "v0.2.0"} configs[SdDummyExporter] = Config{gcRegistry, "sd-dummy-exporter", "v0.2.0"}
configs[ServeHostname] = Config{e2eRegistry, "serve-hostname", "1.1"}
configs[StartupScript] = Config{googleContainerRegistry, "startup-script", "v1"} configs[StartupScript] = Config{googleContainerRegistry, "startup-script", "v1"}
configs[TestWebserver] = Config{e2eRegistry, "test-webserver", "1.0"} configs[TestWebserver] = Config{e2eRegistry, "test-webserver", "1.0"}
configs[VolumeNFSServer] = Config{e2eRegistry, "volume/nfs", "1.0"} configs[VolumeNFSServer] = Config{e2eRegistry, "volume/nfs", "1.0"}