From 838c47ee10f8d5b74c93a7bc24b5a68e452cbc5f Mon Sep 17 00:00:00 2001 From: ymqytw Date: Mon, 7 Aug 2017 20:14:14 -0700 Subject: [PATCH] add apply test for retainKeys --- hack/make-rules/test-cmd-util.sh | 24 +++++++++++++++++++ .../deployment/deployment-after.yaml | 22 +++++++++++++++++ .../deployment/deployment-before.yaml | 18 ++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 hack/testdata/retainKeys/deployment/deployment-after.yaml create mode 100644 hack/testdata/retainKeys/deployment/deployment-before.yaml diff --git a/hack/make-rules/test-cmd-util.sh b/hack/make-rules/test-cmd-util.sh index 0c2c61ce05b..a7ac65f198f 100755 --- a/hack/make-rules/test-cmd-util.sh +++ b/hack/make-rules/test-cmd-util.sh @@ -932,6 +932,30 @@ run_kubectl_apply_tests() { kubectl delete pods test-pod "${kube_flags[@]}" + ## kubectl apply should be able to clear defaulted fields. + # Pre-Condition: no deployment exists + kube::test::get_object_assert deployments "{{range.items}}{{$id_field}}:{{end}}" '' + # Command: apply a deployment "test-deployment-retainkeys" (doesn't exist) should create this deployment + kubectl apply -f hack/testdata/retainKeys/deployment/deployment-before.yaml "${kube_flags[@]}" + # Post-Condition: deployment "test-deployment-retainkeys" created + kube::test::get_object_assert deployments "{{range.items}}{{$id_field}}{{end}}" 'test-deployment-retainkeys' + # Post-Condition: deployment "test-deployment-retainkeys" has defaulted fields + [[ "$(kubectl get deployments test-deployment-retainkeys -o yaml "${kube_flags[@]}" | grep RollingUpdate)" ]] + [[ "$(kubectl get deployments test-deployment-retainkeys -o yaml "${kube_flags[@]}" | grep maxSurge)" ]] + [[ "$(kubectl get deployments test-deployment-retainkeys -o yaml "${kube_flags[@]}" | grep maxUnavailable)" ]] + [[ "$(kubectl get deployments test-deployment-retainkeys -o yaml "${kube_flags[@]}" | grep emptyDir)" ]] + # Command: apply a deployment "test-deployment-retainkeys" should clear + # defaulted fields and successfully update the deployment + [[ "$(kubectl apply -f hack/testdata/retainKeys/deployment/deployment-after.yaml "${kube_flags[@]}")" ]] + # Post-Condition: deployment "test-deployment-retainkeys" has updated fields + [[ "$(kubectl get deployments test-deployment-retainkeys -o yaml "${kube_flags[@]}" | grep Recreate)" ]] + ! [[ "$(kubectl get deployments test-deployment-retainkeys -o yaml "${kube_flags[@]}" | grep RollingUpdate)" ]] + [[ "$(kubectl get deployments test-deployment-retainkeys -o yaml "${kube_flags[@]}" | grep hostPath)" ]] + ! [[ "$(kubectl get deployments test-deployment-retainkeys -o yaml "${kube_flags[@]}" | grep emptyDir)" ]] + # Clean up + kubectl delete deployments test-deployment-retainkeys "${kube_flags[@]}" + + ## kubectl apply -f with label selector should only apply matching objects # Pre-Condition: no POD exists kube::test::get_object_assert pods "{{range.items}}{{$id_field}}:{{end}}" '' diff --git a/hack/testdata/retainKeys/deployment/deployment-after.yaml b/hack/testdata/retainKeys/deployment/deployment-after.yaml new file mode 100644 index 00000000000..15689a59959 --- /dev/null +++ b/hack/testdata/retainKeys/deployment/deployment-after.yaml @@ -0,0 +1,22 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: test-deployment-retainkeys +spec: + strategy: + type: Recreate + replicas: 1 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 + volumes: + - name: test-volume + hostPath: + path: /data diff --git a/hack/testdata/retainKeys/deployment/deployment-before.yaml b/hack/testdata/retainKeys/deployment/deployment-before.yaml new file mode 100644 index 00000000000..e58a0c34a14 --- /dev/null +++ b/hack/testdata/retainKeys/deployment/deployment-before.yaml @@ -0,0 +1,18 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: test-deployment-retainkeys +spec: + replicas: 1 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 + volumes: + - name: test-volume