From 6e8a1beda7eb036c2494840e7c82a49cbff1d827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arda=20G=C3=BC=C3=A7l=C3=BC?= Date: Tue, 7 Feb 2023 11:04:05 +0300 Subject: [PATCH 1/2] Add integration test for diff --prune --selector This PR adds new integration tests for `kubectl diff --prune -l` to catch possible regressions in the future. --- hack/testdata/prune/a_selector.yaml | 35 +++++++++++++++++++ hack/testdata/prune/a_selector_prune.yaml | 23 ++++++++++++ .../src/k8s.io/kubectl/pkg/cmd/diff/prune.go | 2 +- test/cmd/diff.sh | 20 +++++++++++ 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 hack/testdata/prune/a_selector.yaml create mode 100644 hack/testdata/prune/a_selector_prune.yaml diff --git a/hack/testdata/prune/a_selector.yaml b/hack/testdata/prune/a_selector.yaml new file mode 100644 index 00000000000..08c8134cb76 --- /dev/null +++ b/hack/testdata/prune/a_selector.yaml @@ -0,0 +1,35 @@ +apiVersion: v1 +kind: Pod +metadata: + name: a + namespace: nsbprune + labels: + prune-group: "true" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 +--- +apiVersion: v1 +kind: Pod +metadata: + name: b + namespace: nsbprune + labels: + prune-group: "true" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 +--- +apiVersion: v1 +kind: Pod +metadata: + name: c + namespace: nsbprune + labels: + prune-group: "false" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 diff --git a/hack/testdata/prune/a_selector_prune.yaml b/hack/testdata/prune/a_selector_prune.yaml new file mode 100644 index 00000000000..f957f6aa0a7 --- /dev/null +++ b/hack/testdata/prune/a_selector_prune.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Pod +metadata: + name: a + namespace: nsbprune + labels: + prune-group: "true" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 +--- +apiVersion: v1 +kind: Pod +metadata: + name: c + namespace: nsbprune + labels: + prune-group: "false" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 \ No newline at end of file diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go b/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go index ef77fac894a..e87d2106f76 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go @@ -47,7 +47,7 @@ func newPruner(dc dynamic.Interface, m meta.RESTMapper, r []prune.Resource, sele dynamicClient: dc, mapper: m, resources: r, - labelSelector: selector, + //labelSelector: selector, } } diff --git a/test/cmd/diff.sh b/test/cmd/diff.sh index 0e5ae9e92eb..2c75ad91da5 100755 --- a/test/cmd/diff.sh +++ b/test/cmd/diff.sh @@ -114,6 +114,26 @@ run_kubectl_diff_tests() { kubectl delete -f hack/testdata/pod.yaml kubectl delete -f hack/testdata/prune/b.yaml + ## kubectl diff --prune with label selector + kubectl create ns nsbprune + kubectl apply --namespace nsbprune -f hack/testdata/prune/a_selector.yaml + kube::test::get_object_assert 'pods a -n nsbprune' "{{${id_field:?}}}" 'a' + kube::test::get_object_assert 'pods b -n nsbprune' "{{${id_field:?}}}" 'b' + kube::test::get_object_assert 'pods c -n nsbprune' "{{${id_field:?}}}" 'c' + # Make sure that kubectl diff does not return neither pod 'b' nor pod 'c' without prune flag + output_message=$(kubectl diff -l prune-group=true -f hack/testdata/prune/a_selector_prune.yaml) + kube::test::if_has_not_string "${output_message}" "name: b" + kube::test::if_has_not_string "${output_message}" "name: c" + # the exist code for diff is 1 because pod name 'b' is found in the given label selector but not 'c' + output_message=$(kubectl diff --prune -l prune-group=true -f hack/testdata/prune/a_selector_prune.yaml || test $? -eq 1) + # pod 'b' should be in output, it is pruned. On the other hand, 'c' should not be, it's label selector is different + kube::test::if_has_string "${output_message}" 'name: b' + kube::test::if_has_not_string "${output_message}" "name: c" + + # Cleanup + kubectl delete -f hack/testdata/prune/a_selector.yaml + + set +o nounset set +o errexit } From 6c346e6cc9fba23475f9b3600857ededdddc7429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arda=20G=C3=BC=C3=A7l=C3=BC?= Date: Tue, 7 Feb 2023 11:11:05 +0300 Subject: [PATCH 2/2] Re-enable label selector --- hack/testdata/prune/a_selector.yaml | 35 --------- hack/testdata/prune/a_selector_prune.yaml | 23 ------ .../src/k8s.io/kubectl/pkg/cmd/diff/prune.go | 2 +- test/cmd/diff.sh | 75 +++++++++++++++++-- 4 files changed, 70 insertions(+), 65 deletions(-) delete mode 100644 hack/testdata/prune/a_selector.yaml delete mode 100644 hack/testdata/prune/a_selector_prune.yaml diff --git a/hack/testdata/prune/a_selector.yaml b/hack/testdata/prune/a_selector.yaml deleted file mode 100644 index 08c8134cb76..00000000000 --- a/hack/testdata/prune/a_selector.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: a - namespace: nsbprune - labels: - prune-group: "true" -spec: - containers: - - name: kubernetes-pause - image: registry.k8s.io/pause:3.9 ---- -apiVersion: v1 -kind: Pod -metadata: - name: b - namespace: nsbprune - labels: - prune-group: "true" -spec: - containers: - - name: kubernetes-pause - image: registry.k8s.io/pause:3.9 ---- -apiVersion: v1 -kind: Pod -metadata: - name: c - namespace: nsbprune - labels: - prune-group: "false" -spec: - containers: - - name: kubernetes-pause - image: registry.k8s.io/pause:3.9 diff --git a/hack/testdata/prune/a_selector_prune.yaml b/hack/testdata/prune/a_selector_prune.yaml deleted file mode 100644 index f957f6aa0a7..00000000000 --- a/hack/testdata/prune/a_selector_prune.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: a - namespace: nsbprune - labels: - prune-group: "true" -spec: - containers: - - name: kubernetes-pause - image: registry.k8s.io/pause:3.9 ---- -apiVersion: v1 -kind: Pod -metadata: - name: c - namespace: nsbprune - labels: - prune-group: "false" -spec: - containers: - - name: kubernetes-pause - image: registry.k8s.io/pause:3.9 \ No newline at end of file diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go b/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go index e87d2106f76..ef77fac894a 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go @@ -47,7 +47,7 @@ func newPruner(dc dynamic.Interface, m meta.RESTMapper, r []prune.Resource, sele dynamicClient: dc, mapper: m, resources: r, - //labelSelector: selector, + labelSelector: selector, } } diff --git a/test/cmd/diff.sh b/test/cmd/diff.sh index 2c75ad91da5..6b4a114a725 100755 --- a/test/cmd/diff.sh +++ b/test/cmd/diff.sh @@ -113,25 +113,88 @@ run_kubectl_diff_tests() { # Cleanup kubectl delete -f hack/testdata/pod.yaml kubectl delete -f hack/testdata/prune/b.yaml + kubectl delete namespace nsb ## kubectl diff --prune with label selector kubectl create ns nsbprune - kubectl apply --namespace nsbprune -f hack/testdata/prune/a_selector.yaml + kubectl apply --namespace nsbprune -f - <