mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Tag conformance tests with a [Conformance] string in the description
- remove skip list from conformance-test.sh and filter by the new tag - remove experimental api tests from conformance test suite - remove all tests from conformance test suite which are either restricted to e.g. gce, gke, aws or require SSH
This commit is contained in:
		@@ -74,38 +74,14 @@ git show-ref | grep $HEAD_SHA | grep refs/tags
 | 
				
			|||||||
echo
 | 
					echo
 | 
				
			||||||
echo "Conformance test checking conformance with Kubernetes version 1.0"
 | 
					echo "Conformance test checking conformance with Kubernetes version 1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# It runs a whitelist of tests.  This whitelist was assembled at commit
 | 
					# It runs a whitelist of tests: all tests which are flagged with [Conformance]
 | 
				
			||||||
# b70b7084c93d4ce80b7463f48c23d5ac04edb2b1 starting from this list of tests:
 | 
					# somewhere in the description (i.e. either in the Describe part or the It part).
 | 
				
			||||||
#   grep -h 'It(\|Describe(' -R test
 | 
					# The list of tagged conformance tests can be retrieved by:
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# List of test name patterns not included and why not included:
 | 
					# NUM_MINIONS=4 KUBERNETES_CONFORMANCE_TEST="y" \
 | 
				
			||||||
#  Cadvisor: impl detail how stats gotten from containers.
 | 
					# hack/ginkgo-e2e.sh -ginkgo.focus='\[Conformance\]' -ginkgo.dryRun=true
 | 
				
			||||||
#  MasterCerts: GKE/GCE specific
 | 
					 | 
				
			||||||
#  Density: performance
 | 
					 | 
				
			||||||
#  Cluster level logging...: optional feature
 | 
					 | 
				
			||||||
#  Etcd failure: reliability
 | 
					 | 
				
			||||||
#  Load Capacity: performance
 | 
					 | 
				
			||||||
#  Monitoring: optional feature.
 | 
					 | 
				
			||||||
#  Namespaces.*seconds: performance.
 | 
					 | 
				
			||||||
#  Pod disks: uses GCE specific feature.
 | 
					 | 
				
			||||||
#  Reboot: node management
 | 
					 | 
				
			||||||
#  Nodes: node management.
 | 
					 | 
				
			||||||
#  Restart: node management.
 | 
					 | 
				
			||||||
#  Scale: performance
 | 
					 | 
				
			||||||
#  Services.*load balancer: not all cloud providers have a load balancer.
 | 
					 | 
				
			||||||
#  Services.*NodePort: requires you to open the firewall yourself, so not covered.
 | 
					 | 
				
			||||||
#  Services.*nodeport: requires you to open the firewall yourself, so not covered.
 | 
					 | 
				
			||||||
#  Shell: replies on optional ssh access to nodes.
 | 
					 | 
				
			||||||
#  SSH: optional feature.
 | 
					 | 
				
			||||||
#  Addon\supdate: requires SSH
 | 
					 | 
				
			||||||
#  Volumes: contained only skipped tests.
 | 
					 | 
				
			||||||
#  Clean\sup\spods\son\snode: performance
 | 
					 | 
				
			||||||
#  MaxPods\slimit\snumber\sof\spods: not sure why this wasn't working on GCE but it wasn't.
 | 
					 | 
				
			||||||
#  Kubectl\sclient\sSimple\spod: not sure why this wasn't working on GCE but it wasn't
 | 
					 | 
				
			||||||
#  DNS: not sure why this wasn't working on GCE but it wasn't
 | 
					 | 
				
			||||||
export CONFORMANCE_TEST_SKIP_REGEX="Cadvisor|MasterCerts|Density|Cluster\slevel\slogging|Etcd\sfailure|Load\sCapacity|Monitoring|Namespaces.*seconds|Pod\sdisks|Reboot|Restart|Nodes|Scale|Services.*load\sbalancer|Services.*NodePort|Services.*nodeport|Shell|SSH|Addon\supdate|Volumes|Clean\sup\spods\son\snode|Skipped|skipped|MaxPods\slimit\snumber\sof\spods|Kubectl\sclient\sSimple\spod|DNS|Resource\susage\sof\ssystem\scontainers"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
declare -x KUBERNETES_CONFORMANCE_TEST="y"
 | 
					declare -x KUBERNETES_CONFORMANCE_TEST="y"
 | 
				
			||||||
declare -x NUM_MINIONS=4
 | 
					declare -x NUM_MINIONS=4
 | 
				
			||||||
hack/ginkgo-e2e.sh
 | 
					hack/ginkgo-e2e.sh -ginkgo.focus='\[Conformance\]'
 | 
				
			||||||
exit $?
 | 
					exit $?
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,7 +40,7 @@ var _ = Describe("Probing container", func() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	AfterEach(framework.afterEach)
 | 
						AfterEach(framework.afterEach)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("with readiness probe should not be ready before initial delay and never restart", func() {
 | 
						It("with readiness probe should not be ready before initial delay and never restart [Conformance]", func() {
 | 
				
			||||||
		p, err := podClient.Create(makePodSpec(probe.withInitialDelay().build(), nil))
 | 
							p, err := podClient.Create(makePodSpec(probe.withInitialDelay().build(), nil))
 | 
				
			||||||
		expectNoError(err)
 | 
							expectNoError(err)
 | 
				
			||||||
		startTime := time.Now()
 | 
							startTime := time.Now()
 | 
				
			||||||
@@ -73,7 +73,7 @@ var _ = Describe("Probing container", func() {
 | 
				
			|||||||
		Expect(restartCount == 0).To(BeTrue(), "pod should have a restart count of 0 but got %v", restartCount)
 | 
							Expect(restartCount == 0).To(BeTrue(), "pod should have a restart count of 0 but got %v", restartCount)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("with readiness probe that fails should never be ready and never restart", func() {
 | 
						It("with readiness probe that fails should never be ready and never restart [Conformance]", func() {
 | 
				
			||||||
		p, err := podClient.Create(makePodSpec(probe.withFailing().build(), nil))
 | 
							p, err := podClient.Create(makePodSpec(probe.withFailing().build(), nil))
 | 
				
			||||||
		expectNoError(err)
 | 
							expectNoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,13 +46,13 @@ var _ = Describe("Docker Containers", func() {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should use the image defaults if command and args are blank", func() {
 | 
						It("should use the image defaults if command and args are blank [Conformance]", func() {
 | 
				
			||||||
		testContainerOutputInNamespace("use defaults", c, entrypointTestPod(), 0, []string{
 | 
							testContainerOutputInNamespace("use defaults", c, entrypointTestPod(), 0, []string{
 | 
				
			||||||
			"[/ep default arguments]",
 | 
								"[/ep default arguments]",
 | 
				
			||||||
		}, ns)
 | 
							}, ns)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should be able to override the image's default arguments (docker cmd)", func() {
 | 
						It("should be able to override the image's default arguments (docker cmd) [Conformance]", func() {
 | 
				
			||||||
		pod := entrypointTestPod()
 | 
							pod := entrypointTestPod()
 | 
				
			||||||
		pod.Spec.Containers[0].Args = []string{"override", "arguments"}
 | 
							pod.Spec.Containers[0].Args = []string{"override", "arguments"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -63,7 +63,7 @@ var _ = Describe("Docker Containers", func() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Note: when you override the entrypoint, the image's arguments (docker cmd)
 | 
						// Note: when you override the entrypoint, the image's arguments (docker cmd)
 | 
				
			||||||
	// are ignored.
 | 
						// are ignored.
 | 
				
			||||||
	It("should be able to override the image's default commmand (docker entrypoint)", func() {
 | 
						It("should be able to override the image's default commmand (docker entrypoint) [Conformance]", func() {
 | 
				
			||||||
		pod := entrypointTestPod()
 | 
							pod := entrypointTestPod()
 | 
				
			||||||
		pod.Spec.Containers[0].Command = []string{"/ep-2"}
 | 
							pod.Spec.Containers[0].Command = []string{"/ep-2"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -72,7 +72,7 @@ var _ = Describe("Docker Containers", func() {
 | 
				
			|||||||
		}, ns)
 | 
							}, ns)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should be able to override the image's default command and arguments", func() {
 | 
						It("should be able to override the image's default command and arguments [Conformance]", func() {
 | 
				
			||||||
		pod := entrypointTestPod()
 | 
							pod := entrypointTestPod()
 | 
				
			||||||
		pod.Spec.Containers[0].Command = []string{"/ep-2"}
 | 
							pod.Spec.Containers[0].Command = []string{"/ep-2"}
 | 
				
			||||||
		pod.Spec.Containers[0].Args = []string{"override", "arguments"}
 | 
							pod.Spec.Containers[0].Args = []string{"override", "arguments"}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ import (
 | 
				
			|||||||
var _ = Describe("Downward API", func() {
 | 
					var _ = Describe("Downward API", func() {
 | 
				
			||||||
	framework := NewFramework("downward-api")
 | 
						framework := NewFramework("downward-api")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should provide pod name and namespace as env vars", func() {
 | 
						It("should provide pod name and namespace as env vars [Conformance]", func() {
 | 
				
			||||||
		podName := "downward-api-" + string(util.NewUUID())
 | 
							podName := "downward-api-" + string(util.NewUUID())
 | 
				
			||||||
		pod := &api.Pod{
 | 
							pod := &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ import (
 | 
				
			|||||||
var _ = Describe("Downward API volume", func() {
 | 
					var _ = Describe("Downward API volume", func() {
 | 
				
			||||||
	f := NewFramework("downward-api")
 | 
						f := NewFramework("downward-api")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should provide labels and annotations files", func() {
 | 
						It("should provide labels and annotations files [Conformance]", func() {
 | 
				
			||||||
		podName := "metadata-volume-" + string(util.NewUUID())
 | 
							podName := "metadata-volume-" + string(util.NewUUID())
 | 
				
			||||||
		pod := &api.Pod{
 | 
							pod := &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,59 +37,59 @@ var _ = Describe("EmptyDir volumes", func() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	f := NewFramework("emptydir")
 | 
						f := NewFramework("emptydir")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("volume on tmpfs should have the correct mode", func() {
 | 
						It("volume on tmpfs should have the correct mode [Conformance]", func() {
 | 
				
			||||||
		doTestVolumeMode(f, testImageRootUid, api.StorageMediumMemory)
 | 
							doTestVolumeMode(f, testImageRootUid, api.StorageMediumMemory)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (root,0644,tmpfs)", func() {
 | 
						It("should support (root,0644,tmpfs) [Conformance]", func() {
 | 
				
			||||||
		doTest0644(f, testImageRootUid, api.StorageMediumMemory)
 | 
							doTest0644(f, testImageRootUid, api.StorageMediumMemory)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (root,0666,tmpfs)", func() {
 | 
						It("should support (root,0666,tmpfs) [Conformance]", func() {
 | 
				
			||||||
		doTest0666(f, testImageRootUid, api.StorageMediumMemory)
 | 
							doTest0666(f, testImageRootUid, api.StorageMediumMemory)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (root,0777,tmpfs)", func() {
 | 
						It("should support (root,0777,tmpfs) [Conformance]", func() {
 | 
				
			||||||
		doTest0777(f, testImageRootUid, api.StorageMediumMemory)
 | 
							doTest0777(f, testImageRootUid, api.StorageMediumMemory)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (non-root,0644,tmpfs)", func() {
 | 
						It("should support (non-root,0644,tmpfs) [Conformance]", func() {
 | 
				
			||||||
		doTest0644(f, testImageNonRootUid, api.StorageMediumMemory)
 | 
							doTest0644(f, testImageNonRootUid, api.StorageMediumMemory)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (non-root,0666,tmpfs)", func() {
 | 
						It("should support (non-root,0666,tmpfs) [Conformance]", func() {
 | 
				
			||||||
		doTest0666(f, testImageNonRootUid, api.StorageMediumMemory)
 | 
							doTest0666(f, testImageNonRootUid, api.StorageMediumMemory)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (non-root,0777,tmpfs)", func() {
 | 
						It("should support (non-root,0777,tmpfs) [Conformance]", func() {
 | 
				
			||||||
		doTest0777(f, testImageNonRootUid, api.StorageMediumMemory)
 | 
							doTest0777(f, testImageNonRootUid, api.StorageMediumMemory)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("volume on default medium should have the correct mode", func() {
 | 
						It("volume on default medium should have the correct mode [Conformance]", func() {
 | 
				
			||||||
		doTestVolumeMode(f, testImageRootUid, api.StorageMediumDefault)
 | 
							doTestVolumeMode(f, testImageRootUid, api.StorageMediumDefault)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (root,0644,default)", func() {
 | 
						It("should support (root,0644,default) [Conformance]", func() {
 | 
				
			||||||
		doTest0644(f, testImageRootUid, api.StorageMediumDefault)
 | 
							doTest0644(f, testImageRootUid, api.StorageMediumDefault)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (root,0666,default)", func() {
 | 
						It("should support (root,0666,default) [Conformance]", func() {
 | 
				
			||||||
		doTest0666(f, testImageRootUid, api.StorageMediumDefault)
 | 
							doTest0666(f, testImageRootUid, api.StorageMediumDefault)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (root,0777,default)", func() {
 | 
						It("should support (root,0777,default) [Conformance]", func() {
 | 
				
			||||||
		doTest0777(f, testImageRootUid, api.StorageMediumDefault)
 | 
							doTest0777(f, testImageRootUid, api.StorageMediumDefault)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (non-root,0644,default)", func() {
 | 
						It("should support (non-root,0644,default) [Conformance]", func() {
 | 
				
			||||||
		doTest0644(f, testImageNonRootUid, api.StorageMediumDefault)
 | 
							doTest0644(f, testImageNonRootUid, api.StorageMediumDefault)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (non-root,0666,default)", func() {
 | 
						It("should support (non-root,0666,default) [Conformance]", func() {
 | 
				
			||||||
		doTest0666(f, testImageNonRootUid, api.StorageMediumDefault)
 | 
							doTest0666(f, testImageNonRootUid, api.StorageMediumDefault)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support (non-root,0777,default)", func() {
 | 
						It("should support (non-root,0777,default) [Conformance]", func() {
 | 
				
			||||||
		doTest0777(f, testImageNonRootUid, api.StorageMediumDefault)
 | 
							doTest0777(f, testImageNonRootUid, api.StorageMediumDefault)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@ import (
 | 
				
			|||||||
var _ = Describe("Events", func() {
 | 
					var _ = Describe("Events", func() {
 | 
				
			||||||
	framework := NewFramework("events")
 | 
						framework := NewFramework("events")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should be sent by kubelets and the scheduler about pods scheduling and running", func() {
 | 
						It("should be sent by kubelets and the scheduler about pods scheduling and running [Conformance]", func() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		podClient := framework.Client.Pods(framework.Namespace.Name)
 | 
							podClient := framework.Client.Pods(framework.Namespace.Name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -449,7 +449,7 @@ var _ = Describe("Examples e2e", func() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Describe("[Example]ClusterDns", func() {
 | 
						Describe("[Example]ClusterDns", func() {
 | 
				
			||||||
		It("should create pod that uses dns", func() {
 | 
							It("should create pod that uses dns [Conformance]", func() {
 | 
				
			||||||
			mkpath := func(file string) string {
 | 
								mkpath := func(file string) string {
 | 
				
			||||||
				return filepath.Join(testContext.RepoRoot, "examples/cluster-dns", file)
 | 
									return filepath.Join(testContext.RepoRoot, "examples/cluster-dns", file)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@ import (
 | 
				
			|||||||
var _ = Describe("Variable Expansion", func() {
 | 
					var _ = Describe("Variable Expansion", func() {
 | 
				
			||||||
	framework := NewFramework("var-expansion")
 | 
						framework := NewFramework("var-expansion")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should allow composing env vars into new env vars", func() {
 | 
						It("should allow composing env vars into new env vars [Conformance]", func() {
 | 
				
			||||||
		podName := "var-expansion-" + string(util.NewUUID())
 | 
							podName := "var-expansion-" + string(util.NewUUID())
 | 
				
			||||||
		pod := &api.Pod{
 | 
							pod := &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
@@ -66,7 +66,7 @@ var _ = Describe("Variable Expansion", func() {
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should allow substituting values in a container's command", func() {
 | 
						It("should allow substituting values in a container's command [Conformance]", func() {
 | 
				
			||||||
		podName := "var-expansion-" + string(util.NewUUID())
 | 
							podName := "var-expansion-" + string(util.NewUUID())
 | 
				
			||||||
		pod := &api.Pod{
 | 
							pod := &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
@@ -96,7 +96,7 @@ var _ = Describe("Variable Expansion", func() {
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should allow substituting values in a container's args", func() {
 | 
						It("should allow substituting values in a container's args [Conformance]", func() {
 | 
				
			||||||
		podName := "var-expansion-" + string(util.NewUUID())
 | 
							podName := "var-expansion-" + string(util.NewUUID())
 | 
				
			||||||
		pod := &api.Pod{
 | 
							pod := &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,7 +59,7 @@ var _ = Describe("hostPath", func() {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should give a volume the correct mode", func() {
 | 
						It("should give a volume the correct mode [Conformance]", func() {
 | 
				
			||||||
		volumePath := "/test-volume"
 | 
							volumePath := "/test-volume"
 | 
				
			||||||
		source := &api.HostPathVolumeSource{
 | 
							source := &api.HostPathVolumeSource{
 | 
				
			||||||
			Path: "/tmp",
 | 
								Path: "/tmp",
 | 
				
			||||||
@@ -76,7 +76,7 @@ var _ = Describe("hostPath", func() {
 | 
				
			|||||||
			namespace.Name)
 | 
								namespace.Name)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should support r/w", func() {
 | 
						It("should support r/w [Conformance]", func() {
 | 
				
			||||||
		volumePath := "/test-volume"
 | 
							volumePath := "/test-volume"
 | 
				
			||||||
		filePath := path.Join(volumePath, "test-file")
 | 
							filePath := path.Join(volumePath, "test-file")
 | 
				
			||||||
		retryDuration := 180
 | 
							retryDuration := 180
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,7 +38,7 @@ var _ = Describe("kube-ui", func() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	f := NewFramework("kube-ui")
 | 
						f := NewFramework("kube-ui")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should check that the kube-ui instance is alive", func() {
 | 
						It("should check that the kube-ui instance is alive [Conformance]", func() {
 | 
				
			||||||
		By("Checking the kube-ui service exists.")
 | 
							By("Checking the kube-ui service exists.")
 | 
				
			||||||
		err := waitForService(f.Client, uiNamespace, uiServiceName, true, poll, serviceStartTimeout)
 | 
							err := waitForService(f.Client, uiNamespace, uiServiceName, true, poll, serviceStartTimeout)
 | 
				
			||||||
		Expect(err).NotTo(HaveOccurred())
 | 
							Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -94,7 +94,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
			nautilusPath = filepath.Join(updateDemoRoot, "nautilus-rc.yaml")
 | 
								nautilusPath = filepath.Join(updateDemoRoot, "nautilus-rc.yaml")
 | 
				
			||||||
			kittenPath = filepath.Join(updateDemoRoot, "kitten-rc.yaml")
 | 
								kittenPath = filepath.Join(updateDemoRoot, "kitten-rc.yaml")
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
		It("should create and stop a replication controller", func() {
 | 
							It("should create and stop a replication controller [Conformance]", func() {
 | 
				
			||||||
			defer cleanup(nautilusPath, ns, updateDemoSelector)
 | 
								defer cleanup(nautilusPath, ns, updateDemoSelector)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			By("creating a replication controller")
 | 
								By("creating a replication controller")
 | 
				
			||||||
@@ -102,7 +102,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
			validateController(c, nautilusImage, 2, "update-demo", updateDemoSelector, getUDData("nautilus.jpg", ns), ns)
 | 
								validateController(c, nautilusImage, 2, "update-demo", updateDemoSelector, getUDData("nautilus.jpg", ns), ns)
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should scale a replication controller", func() {
 | 
							It("should scale a replication controller [Conformance]", func() {
 | 
				
			||||||
			defer cleanup(nautilusPath, ns, updateDemoSelector)
 | 
								defer cleanup(nautilusPath, ns, updateDemoSelector)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			By("creating a replication controller")
 | 
								By("creating a replication controller")
 | 
				
			||||||
@@ -116,7 +116,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
			validateController(c, nautilusImage, 2, "update-demo", updateDemoSelector, getUDData("nautilus.jpg", ns), ns)
 | 
								validateController(c, nautilusImage, 2, "update-demo", updateDemoSelector, getUDData("nautilus.jpg", ns), ns)
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should do a rolling update of a replication controller", func() {
 | 
							It("should do a rolling update of a replication controller [Conformance]", func() {
 | 
				
			||||||
			By("creating the initial replication controller")
 | 
								By("creating the initial replication controller")
 | 
				
			||||||
			runKubectl("create", "-f", nautilusPath, fmt.Sprintf("--namespace=%v", ns))
 | 
								runKubectl("create", "-f", nautilusPath, fmt.Sprintf("--namespace=%v", ns))
 | 
				
			||||||
			validateController(c, nautilusImage, 2, "update-demo", updateDemoSelector, getUDData("nautilus.jpg", ns), ns)
 | 
								validateController(c, nautilusImage, 2, "update-demo", updateDemoSelector, getUDData("nautilus.jpg", ns), ns)
 | 
				
			||||||
@@ -134,7 +134,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
			guestbookPath = filepath.Join(testContext.RepoRoot, "examples/guestbook")
 | 
								guestbookPath = filepath.Join(testContext.RepoRoot, "examples/guestbook")
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should create and stop a working application", func() {
 | 
							It("should create and stop a working application [Conformance]", func() {
 | 
				
			||||||
			defer cleanup(guestbookPath, ns, frontendSelector, redisMasterSelector, redisSlaveSelector)
 | 
								defer cleanup(guestbookPath, ns, frontendSelector, redisMasterSelector, redisSlaveSelector)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			By("creating all guestbook components")
 | 
								By("creating all guestbook components")
 | 
				
			||||||
@@ -218,7 +218,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Describe("Kubectl api-versions", func() {
 | 
						Describe("Kubectl api-versions", func() {
 | 
				
			||||||
		It("should check if v1 is in available api versions", func() {
 | 
							It("should check if v1 is in available api versions [Conformance]", func() {
 | 
				
			||||||
			By("validating api verions")
 | 
								By("validating api verions")
 | 
				
			||||||
			output := runKubectl("api-versions")
 | 
								output := runKubectl("api-versions")
 | 
				
			||||||
			if !strings.Contains(output, "Available Server Api Versions:") {
 | 
								if !strings.Contains(output, "Available Server Api Versions:") {
 | 
				
			||||||
@@ -250,7 +250,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Describe("Kubectl cluster-info", func() {
 | 
						Describe("Kubectl cluster-info", func() {
 | 
				
			||||||
		It("should check if Kubernetes master services is included in cluster-info", func() {
 | 
							It("should check if Kubernetes master services is included in cluster-info [Conformance]", func() {
 | 
				
			||||||
			By("validating cluster-info")
 | 
								By("validating cluster-info")
 | 
				
			||||||
			output := runKubectl("cluster-info")
 | 
								output := runKubectl("cluster-info")
 | 
				
			||||||
			// Can't check exact strings due to terminal control commands (colors)
 | 
								// Can't check exact strings due to terminal control commands (colors)
 | 
				
			||||||
@@ -267,7 +267,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Describe("Kubectl describe", func() {
 | 
						Describe("Kubectl describe", func() {
 | 
				
			||||||
		It("should check if kubectl describe prints relevant information for rc and pods", func() {
 | 
							It("should check if kubectl describe prints relevant information for rc and pods [Conformance]", func() {
 | 
				
			||||||
			mkpath := func(file string) string {
 | 
								mkpath := func(file string) string {
 | 
				
			||||||
				return filepath.Join(testContext.RepoRoot, "examples/guestbook-go", file)
 | 
									return filepath.Join(testContext.RepoRoot, "examples/guestbook-go", file)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -357,7 +357,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Describe("Kubectl expose", func() {
 | 
						Describe("Kubectl expose", func() {
 | 
				
			||||||
		It("should create services for rc", func() {
 | 
							It("should create services for rc [Conformance]", func() {
 | 
				
			||||||
			mkpath := func(file string) string {
 | 
								mkpath := func(file string) string {
 | 
				
			||||||
				return filepath.Join(testContext.RepoRoot, "examples/guestbook-go", file)
 | 
									return filepath.Join(testContext.RepoRoot, "examples/guestbook-go", file)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -440,7 +440,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
			cleanup(podPath, ns, simplePodSelector)
 | 
								cleanup(podPath, ns, simplePodSelector)
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should update the label on a resource", func() {
 | 
							It("should update the label on a resource [Conformance]", func() {
 | 
				
			||||||
			labelName := "testing-label"
 | 
								labelName := "testing-label"
 | 
				
			||||||
			labelValue := "testing-label-value"
 | 
								labelValue := "testing-label-value"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -479,7 +479,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
			cleanup(rcPath, ns, simplePodSelector)
 | 
								cleanup(rcPath, ns, simplePodSelector)
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should be able to retrieve and filter logs", func() {
 | 
							It("should be able to retrieve and filter logs [Conformance]", func() {
 | 
				
			||||||
			forEachPod(c, ns, "app", "redis", func(pod api.Pod) {
 | 
								forEachPod(c, ns, "app", "redis", func(pod api.Pod) {
 | 
				
			||||||
				By("checking for a matching strings")
 | 
									By("checking for a matching strings")
 | 
				
			||||||
				_, err := lookForStringInLog(ns, pod.Name, containerName, "The server is now ready to accept connections", podStartTimeout)
 | 
									_, err := lookForStringInLog(ns, pod.Name, containerName, "The server is now ready to accept connections", podStartTimeout)
 | 
				
			||||||
@@ -519,7 +519,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Describe("Kubectl patch", func() {
 | 
						Describe("Kubectl patch", func() {
 | 
				
			||||||
		It("should add annotations for pods in rc", func() {
 | 
							It("should add annotations for pods in rc [Conformance]", func() {
 | 
				
			||||||
			mkpath := func(file string) string {
 | 
								mkpath := func(file string) string {
 | 
				
			||||||
				return filepath.Join(testContext.RepoRoot, "examples/guestbook-go", file)
 | 
									return filepath.Join(testContext.RepoRoot, "examples/guestbook-go", file)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -548,7 +548,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Describe("Kubectl version", func() {
 | 
						Describe("Kubectl version", func() {
 | 
				
			||||||
		It("should check is all data is printed", func() {
 | 
							It("should check is all data is printed [Conformance]", func() {
 | 
				
			||||||
			version := runKubectl("version")
 | 
								version := runKubectl("version")
 | 
				
			||||||
			requiredItems := []string{"Client Version:", "Server Version:", "Major:", "Minor:", "GitCommit:"}
 | 
								requiredItems := []string{"Client Version:", "Server Version:", "Major:", "Minor:", "GitCommit:"}
 | 
				
			||||||
			for _, item := range requiredItems {
 | 
								for _, item := range requiredItems {
 | 
				
			||||||
@@ -572,7 +572,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
			runKubectl("stop", "rc", rcName, nsFlag)
 | 
								runKubectl("stop", "rc", rcName, nsFlag)
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should create an rc from an image", func() {
 | 
							It("should create an rc from an image [Conformance]", func() {
 | 
				
			||||||
			image := "nginx"
 | 
								image := "nginx"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			By("running the image " + image)
 | 
								By("running the image " + image)
 | 
				
			||||||
@@ -615,7 +615,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
			runKubectl("stop", "pods", podName, nsFlag)
 | 
								runKubectl("stop", "pods", podName, nsFlag)
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should create a pod from an image when restart is OnFailure", func() {
 | 
							It("should create a pod from an image when restart is OnFailure [Conformance]", func() {
 | 
				
			||||||
			image := "nginx"
 | 
								image := "nginx"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			By("running the image " + image)
 | 
								By("running the image " + image)
 | 
				
			||||||
@@ -634,7 +634,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should create a pod from an image when restart is Never", func() {
 | 
							It("should create a pod from an image when restart is Never [Conformance]", func() {
 | 
				
			||||||
			image := "nginx"
 | 
								image := "nginx"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			By("running the image " + image)
 | 
								By("running the image " + image)
 | 
				
			||||||
@@ -657,7 +657,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	Describe("Proxy server", func() {
 | 
						Describe("Proxy server", func() {
 | 
				
			||||||
		// TODO: test proxy options (static, prefix, etc)
 | 
							// TODO: test proxy options (static, prefix, etc)
 | 
				
			||||||
		It("should support proxy with --port 0", func() {
 | 
							It("should support proxy with --port 0 [Conformance]", func() {
 | 
				
			||||||
			By("starting the proxy server")
 | 
								By("starting the proxy server")
 | 
				
			||||||
			port, cmd, err := startProxyServer()
 | 
								port, cmd, err := startProxyServer()
 | 
				
			||||||
			if cmd != nil {
 | 
								if cmd != nil {
 | 
				
			||||||
@@ -674,7 +674,7 @@ var _ = Describe("Kubectl client", func() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should support --unix-socket=/path", func() {
 | 
							It("should support --unix-socket=/path [Conformance]", func() {
 | 
				
			||||||
			By("Starting the proxy")
 | 
								By("Starting the proxy")
 | 
				
			||||||
			tmpdir, err := ioutil.TempDir("", "kubectl-proxy-unix")
 | 
								tmpdir, err := ioutil.TempDir("", "kubectl-proxy-unix")
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -123,7 +123,7 @@ var _ = Describe("Kubelet", func() {
 | 
				
			|||||||
		for i := range density {
 | 
							for i := range density {
 | 
				
			||||||
			podsPerNode := density[i]
 | 
								podsPerNode := density[i]
 | 
				
			||||||
			name := fmt.Sprintf(
 | 
								name := fmt.Sprintf(
 | 
				
			||||||
				"over %v with %d pods per node.", monitoringTime, podsPerNode)
 | 
									"over %v with %d pods per node", monitoringTime, podsPerNode)
 | 
				
			||||||
			It(name, func() {
 | 
								It(name, func() {
 | 
				
			||||||
				runResourceTrackingTest(framework, podsPerNode, nodeNames, resourceMonitor)
 | 
									runResourceTrackingTest(framework, podsPerNode, nodeNames, resourceMonitor)
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ var _ = Describe("Networking", func() {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should provide Internet connection for containers", func() {
 | 
						It("should provide Internet connection for containers [Conformance]", func() {
 | 
				
			||||||
		By("Running container which tries to wget google.com")
 | 
							By("Running container which tries to wget google.com")
 | 
				
			||||||
		podName := "wget-test"
 | 
							podName := "wget-test"
 | 
				
			||||||
		contName := "wget-test-container"
 | 
							contName := "wget-test-container"
 | 
				
			||||||
@@ -82,7 +82,7 @@ var _ = Describe("Networking", func() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// First test because it has no dependencies on variables created later on.
 | 
						// First test because it has no dependencies on variables created later on.
 | 
				
			||||||
	It("should provide unchanging, static URL paths for kubernetes api services.", func() {
 | 
						It("should provide unchanging, static URL paths for kubernetes api services [Conformance]", func() {
 | 
				
			||||||
		tests := []struct {
 | 
							tests := []struct {
 | 
				
			||||||
			path string
 | 
								path string
 | 
				
			||||||
		}{
 | 
							}{
 | 
				
			||||||
@@ -103,7 +103,7 @@ var _ = Describe("Networking", func() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//Now we can proceed with the test.
 | 
						//Now we can proceed with the test.
 | 
				
			||||||
	It("should function for intra-pod communication", func() {
 | 
						It("should function for intra-pod communication [Conformance]", func() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		By(fmt.Sprintf("Creating a service named %q in namespace %q", svcname, f.Namespace.Name))
 | 
							By(fmt.Sprintf("Creating a service named %q in namespace %q", svcname, f.Namespace.Name))
 | 
				
			||||||
		svc, err := f.Client.Services(f.Namespace.Name).Create(&api.Service{
 | 
							svc, err := f.Client.Services(f.Namespace.Name).Create(&api.Service{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -132,7 +132,7 @@ func testHostIP(c *client.Client, ns string, pod *api.Pod) {
 | 
				
			|||||||
var _ = Describe("Pods", func() {
 | 
					var _ = Describe("Pods", func() {
 | 
				
			||||||
	framework := NewFramework("pods")
 | 
						framework := NewFramework("pods")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	PIt("should get a host IP", func() {
 | 
						PIt("should get a host IP [Conformance]", func() {
 | 
				
			||||||
		name := "pod-hostip-" + string(util.NewUUID())
 | 
							name := "pod-hostip-" + string(util.NewUUID())
 | 
				
			||||||
		testHostIP(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
							testHostIP(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
@@ -149,7 +149,7 @@ var _ = Describe("Pods", func() {
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should be schedule with cpu and memory limits", func() {
 | 
						It("should be schedule with cpu and memory limits [Conformance]", func() {
 | 
				
			||||||
		podClient := framework.Client.Pods(framework.Namespace.Name)
 | 
							podClient := framework.Client.Pods(framework.Namespace.Name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		By("creating the pod")
 | 
							By("creating the pod")
 | 
				
			||||||
@@ -186,7 +186,7 @@ var _ = Describe("Pods", func() {
 | 
				
			|||||||
		expectNoError(framework.WaitForPodRunning(pod.Name))
 | 
							expectNoError(framework.WaitForPodRunning(pod.Name))
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should be submitted and removed", func() {
 | 
						It("should be submitted and removed [Conformance]", func() {
 | 
				
			||||||
		podClient := framework.Client.Pods(framework.Namespace.Name)
 | 
							podClient := framework.Client.Pods(framework.Namespace.Name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		By("creating the pod")
 | 
							By("creating the pod")
 | 
				
			||||||
@@ -294,7 +294,7 @@ var _ = Describe("Pods", func() {
 | 
				
			|||||||
		Expect(len(pods.Items)).To(Equal(0))
 | 
							Expect(len(pods.Items)).To(Equal(0))
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should be updated", func() {
 | 
						It("should be updated [Conformance]", func() {
 | 
				
			||||||
		podClient := framework.Client.Pods(framework.Namespace.Name)
 | 
							podClient := framework.Client.Pods(framework.Namespace.Name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		By("creating the pod")
 | 
							By("creating the pod")
 | 
				
			||||||
@@ -376,7 +376,7 @@ var _ = Describe("Pods", func() {
 | 
				
			|||||||
		Logf("Pod update OK")
 | 
							Logf("Pod update OK")
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should contain environment variables for services", func() {
 | 
						It("should contain environment variables for services [Conformance]", func() {
 | 
				
			||||||
		// Make a pod that will be a service.
 | 
							// Make a pod that will be a service.
 | 
				
			||||||
		// This pod serves its hostname via HTTP.
 | 
							// This pod serves its hostname via HTTP.
 | 
				
			||||||
		serverName := "server-envvars-" + string(util.NewUUID())
 | 
							serverName := "server-envvars-" + string(util.NewUUID())
 | 
				
			||||||
@@ -463,7 +463,7 @@ var _ = Describe("Pods", func() {
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should be restarted with a docker exec \"cat /tmp/health\" liveness probe", func() {
 | 
						It("should be restarted with a docker exec \"cat /tmp/health\" liveness probe [Conformance]", func() {
 | 
				
			||||||
		runLivenessTest(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
							runLivenessTest(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
				Name:   "liveness-exec",
 | 
									Name:   "liveness-exec",
 | 
				
			||||||
@@ -489,7 +489,7 @@ var _ = Describe("Pods", func() {
 | 
				
			|||||||
		}, 1, defaultObservationTimeout)
 | 
							}, 1, defaultObservationTimeout)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should *not* be restarted with a docker exec \"cat /tmp/health\" liveness probe", func() {
 | 
						It("should *not* be restarted with a docker exec \"cat /tmp/health\" liveness probe [Conformance]", func() {
 | 
				
			||||||
		runLivenessTest(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
							runLivenessTest(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
				Name:   "liveness-exec",
 | 
									Name:   "liveness-exec",
 | 
				
			||||||
@@ -515,7 +515,7 @@ var _ = Describe("Pods", func() {
 | 
				
			|||||||
		}, 0, defaultObservationTimeout)
 | 
							}, 0, defaultObservationTimeout)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should be restarted with a /healthz http liveness probe", func() {
 | 
						It("should be restarted with a /healthz http liveness probe [Conformance]", func() {
 | 
				
			||||||
		runLivenessTest(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
							runLivenessTest(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
				Name:   "liveness-http",
 | 
									Name:   "liveness-http",
 | 
				
			||||||
@@ -542,7 +542,7 @@ var _ = Describe("Pods", func() {
 | 
				
			|||||||
		}, 1, defaultObservationTimeout)
 | 
							}, 1, defaultObservationTimeout)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should have monotonically increasing restart count", func() {
 | 
						It("should have monotonically increasing restart count [Conformance]", func() {
 | 
				
			||||||
		runLivenessTest(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
							runLivenessTest(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
				Name:   "liveness-http",
 | 
									Name:   "liveness-http",
 | 
				
			||||||
@@ -569,7 +569,7 @@ var _ = Describe("Pods", func() {
 | 
				
			|||||||
		}, 5, time.Minute*5)
 | 
							}, 5, time.Minute*5)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should *not* be restarted with a /healthz http liveness probe", func() {
 | 
						It("should *not* be restarted with a /healthz http liveness probe [Conformance]", func() {
 | 
				
			||||||
		runLivenessTest(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
							runLivenessTest(framework.Client, framework.Namespace.Name, &api.Pod{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
				Name:   "liveness-http",
 | 
									Name:   "liveness-http",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -114,7 +114,7 @@ var _ = Describe("Port forwarding", func() {
 | 
				
			|||||||
	framework := NewFramework("port-forwarding")
 | 
						framework := NewFramework("port-forwarding")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Describe("With a server that expects a client request", func() {
 | 
						Describe("With a server that expects a client request", func() {
 | 
				
			||||||
		It("should support a client that connects, sends no data, and disconnects", func() {
 | 
							It("should support a client that connects, sends no data, and disconnects [Conformance]", func() {
 | 
				
			||||||
			By("creating the target pod")
 | 
								By("creating the target pod")
 | 
				
			||||||
			pod := pfPod("abc", "1", "1", "1")
 | 
								pod := pfPod("abc", "1", "1", "1")
 | 
				
			||||||
			framework.Client.Pods(framework.Namespace.Name).Create(pod)
 | 
								framework.Client.Pods(framework.Namespace.Name).Create(pod)
 | 
				
			||||||
@@ -138,7 +138,7 @@ var _ = Describe("Port forwarding", func() {
 | 
				
			|||||||
			verifyLogMessage(logOutput, "Expected to read 3 bytes from client, but got 0 instead")
 | 
								verifyLogMessage(logOutput, "Expected to read 3 bytes from client, but got 0 instead")
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		It("should support a client that connects, sends data, and disconnects", func() {
 | 
							It("should support a client that connects, sends data, and disconnects [Conformance]", func() {
 | 
				
			||||||
			By("creating the target pod")
 | 
								By("creating the target pod")
 | 
				
			||||||
			pod := pfPod("abc", "10", "10", "100")
 | 
								pod := pfPod("abc", "10", "10", "100")
 | 
				
			||||||
			framework.Client.Pods(framework.Namespace.Name).Create(pod)
 | 
								framework.Client.Pods(framework.Namespace.Name).Create(pod)
 | 
				
			||||||
@@ -185,7 +185,7 @@ var _ = Describe("Port forwarding", func() {
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	Describe("With a server that expects no client request", func() {
 | 
						Describe("With a server that expects no client request", func() {
 | 
				
			||||||
		It("should support a client that connects, sends no data, and disconnects", func() {
 | 
							It("should support a client that connects, sends no data, and disconnects [Conformance]", func() {
 | 
				
			||||||
			By("creating the target pod")
 | 
								By("creating the target pod")
 | 
				
			||||||
			pod := pfPod("", "10", "10", "100")
 | 
								pod := pfPod("", "10", "10", "100")
 | 
				
			||||||
			framework.Client.Pods(framework.Namespace.Name).Create(pod)
 | 
								framework.Client.Pods(framework.Namespace.Name).Create(pod)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -144,7 +144,7 @@ func testPreStop(c *client.Client, ns string) {
 | 
				
			|||||||
var _ = Describe("PreStop", func() {
 | 
					var _ = Describe("PreStop", func() {
 | 
				
			||||||
	f := NewFramework("prestop")
 | 
						f := NewFramework("prestop")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should call prestop when killing a pod", func() {
 | 
						It("should call prestop when killing a pod [Conformance]", func() {
 | 
				
			||||||
		testPreStop(f.Client, f.Namespace.Name)
 | 
							testPreStop(f.Client, f.Namespace.Name)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,13 +53,13 @@ func proxyContext(version string) {
 | 
				
			|||||||
	prefix := "/api/" + version
 | 
						prefix := "/api/" + version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Port here has to be kept in sync with default kubelet port.
 | 
						// Port here has to be kept in sync with default kubelet port.
 | 
				
			||||||
	It("should proxy logs on node with explicit kubelet port", func() { nodeProxyTest(f, version, ":10250/logs/") })
 | 
						It("should proxy logs on node with explicit kubelet port [Conformance]", func() { nodeProxyTest(f, version, ":10250/logs/") })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should proxy logs on node", func() { nodeProxyTest(f, version, "/logs/") })
 | 
						It("should proxy logs on node [Conformance]", func() { nodeProxyTest(f, version, "/logs/") })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should proxy to cadvisor", func() { nodeProxyTest(f, version, ":4194/containers/") })
 | 
						It("should proxy to cadvisor [Conformance]", func() { nodeProxyTest(f, version, ":4194/containers/") })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should proxy through a service and a pod", func() {
 | 
						It("should proxy through a service and a pod [Conformance]", func() {
 | 
				
			||||||
		labels := map[string]string{"proxy-service-target": "true"}
 | 
							labels := map[string]string{"proxy-service-target": "true"}
 | 
				
			||||||
		service, err := f.Client.Services(f.Namespace.Name).Create(&api.Service{
 | 
							service, err := f.Client.Services(f.Namespace.Name).Create(&api.Service{
 | 
				
			||||||
			ObjectMeta: api.ObjectMeta{
 | 
								ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,7 +33,7 @@ import (
 | 
				
			|||||||
var _ = Describe("ReplicationController", func() {
 | 
					var _ = Describe("ReplicationController", func() {
 | 
				
			||||||
	framework := NewFramework("replication-controller")
 | 
						framework := NewFramework("replication-controller")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should serve a basic image on each replica with a public image", func() {
 | 
						It("should serve a basic image on each replica with a public image [Conformance]", func() {
 | 
				
			||||||
		ServeImageOrFail(framework, "basic", "gcr.io/google_containers/serve_hostname:1.1")
 | 
							ServeImageOrFail(framework, "basic", "gcr.io/google_containers/serve_hostname:1.1")
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -165,7 +165,7 @@ var _ = Describe("SchedulerPredicates", func() {
 | 
				
			|||||||
	// This test verifies that max-pods flag works as advertised. It assumes that cluster add-on pods stay stable
 | 
						// This test verifies that max-pods flag works as advertised. It assumes that cluster add-on pods stay stable
 | 
				
			||||||
	// and cannot be run in parallel with any other test that touches Nodes or Pods. It is so because to check
 | 
						// and cannot be run in parallel with any other test that touches Nodes or Pods. It is so because to check
 | 
				
			||||||
	// if max-pods is working we need to fully saturate the cluster and keep it in this state for few seconds.
 | 
						// if max-pods is working we need to fully saturate the cluster and keep it in this state for few seconds.
 | 
				
			||||||
	It("validates MaxPods limit number of pods that are allowed to run.", func() {
 | 
						It("validates MaxPods limit number of pods that are allowed to run", func() {
 | 
				
			||||||
		totalPodCapacity = 0
 | 
							totalPodCapacity = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for _, node := range nodeList.Items {
 | 
							for _, node := range nodeList.Items {
 | 
				
			||||||
@@ -231,7 +231,7 @@ var _ = Describe("SchedulerPredicates", func() {
 | 
				
			|||||||
	// This test verifies we don't allow scheduling of pods in a way that sum of limits of pods is greater than machines capacity.
 | 
						// This test verifies we don't allow scheduling of pods in a way that sum of limits of pods is greater than machines capacity.
 | 
				
			||||||
	// It assumes that cluster add-on pods stay stable and cannot be run in parallel with any other test that touches Nodes or Pods.
 | 
						// It assumes that cluster add-on pods stay stable and cannot be run in parallel with any other test that touches Nodes or Pods.
 | 
				
			||||||
	// It is so because we need to have precise control on what's running in the cluster.
 | 
						// It is so because we need to have precise control on what's running in the cluster.
 | 
				
			||||||
	It("validates resource limits of pods that are allowed to run.", func() {
 | 
						It("validates resource limits of pods that are allowed to run [Conformance]", func() {
 | 
				
			||||||
		nodeToCapacityMap := make(map[string]int64)
 | 
							nodeToCapacityMap := make(map[string]int64)
 | 
				
			||||||
		for _, node := range nodeList.Items {
 | 
							for _, node := range nodeList.Items {
 | 
				
			||||||
			capacity, found := node.Status.Capacity["cpu"]
 | 
								capacity, found := node.Status.Capacity["cpu"]
 | 
				
			||||||
@@ -320,7 +320,7 @@ var _ = Describe("SchedulerPredicates", func() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Test Nodes does not have any label, hence it should be impossible to schedule Pod with
 | 
						// Test Nodes does not have any label, hence it should be impossible to schedule Pod with
 | 
				
			||||||
	// nonempty Selector set.
 | 
						// nonempty Selector set.
 | 
				
			||||||
	It("validates that NodeSelector is respected if not matching", func() {
 | 
						It("validates that NodeSelector is respected if not matching [Conformance]", func() {
 | 
				
			||||||
		By("Trying to schedule Pod with nonempty NodeSelector.")
 | 
							By("Trying to schedule Pod with nonempty NodeSelector.")
 | 
				
			||||||
		podName := "restricted-pod"
 | 
							podName := "restricted-pod"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -358,7 +358,7 @@ var _ = Describe("SchedulerPredicates", func() {
 | 
				
			|||||||
		cleanupPods(c, ns)
 | 
							cleanupPods(c, ns)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("validates that NodeSelector is respected if matching.", func() {
 | 
						It("validates that NodeSelector is respected if matching [Conformance]", func() {
 | 
				
			||||||
		// launch a pod to find a node which can launch a pod. We intentionally do
 | 
							// launch a pod to find a node which can launch a pod. We intentionally do
 | 
				
			||||||
		// not just take the node list and choose the first of them. Depending on the
 | 
							// not just take the node list and choose the first of them. Depending on the
 | 
				
			||||||
		// cluster and the scheduler it might be that a "normal" pod cannot be
 | 
							// cluster and the scheduler it might be that a "normal" pod cannot be
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ import (
 | 
				
			|||||||
var _ = Describe("Secrets", func() {
 | 
					var _ = Describe("Secrets", func() {
 | 
				
			||||||
	f := NewFramework("secrets")
 | 
						f := NewFramework("secrets")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should be consumable from pods", func() {
 | 
						It("should be consumable from pods [Conformance]", func() {
 | 
				
			||||||
		name := "secret-test-" + string(util.NewUUID())
 | 
							name := "secret-test-" + string(util.NewUUID())
 | 
				
			||||||
		volumeName := "secret-volume"
 | 
							volumeName := "secret-volume"
 | 
				
			||||||
		volumeMountPath := "/etc/secret-volume"
 | 
							volumeMountPath := "/etc/secret-volume"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -65,12 +65,12 @@ var _ = Describe("Services", func() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// TODO: We get coverage of TCP/UDP and multi-port services through the DNS test. We should have a simpler test for multi-port TCP here.
 | 
						// TODO: We get coverage of TCP/UDP and multi-port services through the DNS test. We should have a simpler test for multi-port TCP here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should provide secure master service", func() {
 | 
						It("should provide secure master service [Conformance]", func() {
 | 
				
			||||||
		_, err := c.Services(api.NamespaceDefault).Get("kubernetes")
 | 
							_, err := c.Services(api.NamespaceDefault).Get("kubernetes")
 | 
				
			||||||
		Expect(err).NotTo(HaveOccurred())
 | 
							Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should serve a basic endpoint from pods", func() {
 | 
						It("should serve a basic endpoint from pods [Conformance]", func() {
 | 
				
			||||||
		serviceName := "endpoint-test2"
 | 
							serviceName := "endpoint-test2"
 | 
				
			||||||
		ns := f.Namespace.Name
 | 
							ns := f.Namespace.Name
 | 
				
			||||||
		labels := map[string]string{
 | 
							labels := map[string]string{
 | 
				
			||||||
@@ -129,7 +129,7 @@ var _ = Describe("Services", func() {
 | 
				
			|||||||
		validateEndpointsOrFail(c, ns, serviceName, PortsByPodName{})
 | 
							validateEndpointsOrFail(c, ns, serviceName, PortsByPodName{})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should serve multiport endpoints from pods", func() {
 | 
						It("should serve multiport endpoints from pods [Conformance]", func() {
 | 
				
			||||||
		// repacking functionality is intentionally not tested here - it's better to test it in an integration test.
 | 
							// repacking functionality is intentionally not tested here - it's better to test it in an integration test.
 | 
				
			||||||
		serviceName := "multi-endpoint-test"
 | 
							serviceName := "multi-endpoint-test"
 | 
				
			||||||
		ns := f.Namespace.Name
 | 
							ns := f.Namespace.Name
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@ import (
 | 
				
			|||||||
var _ = Describe("ServiceAccounts", func() {
 | 
					var _ = Describe("ServiceAccounts", func() {
 | 
				
			||||||
	f := NewFramework("svcaccounts")
 | 
						f := NewFramework("svcaccounts")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should mount an API token into pods", func() {
 | 
						It("should mount an API token into pods [Conformance]", func() {
 | 
				
			||||||
		var tokenName string
 | 
							var tokenName string
 | 
				
			||||||
		var tokenContent string
 | 
							var tokenContent string
 | 
				
			||||||
		var rootCAContent string
 | 
							var rootCAContent string
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,7 +44,7 @@ func (d durations) Swap(i, j int)      { d[i], d[j] = d[j], d[i] }
 | 
				
			|||||||
var _ = Describe("Service endpoints latency", func() {
 | 
					var _ = Describe("Service endpoints latency", func() {
 | 
				
			||||||
	f := NewFramework("svc-latency")
 | 
						f := NewFramework("svc-latency")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	It("should not be very high", func() {
 | 
						It("should not be very high [Conformance]", func() {
 | 
				
			||||||
		const (
 | 
							const (
 | 
				
			||||||
			// These are very generous criteria. Ideally we will
 | 
								// These are very generous criteria. Ideally we will
 | 
				
			||||||
			// get this much lower in the future. See issue
 | 
								// get this much lower in the future. See issue
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user