From 09f73af4bc030fcdbea97e553549e4b0254037bd Mon Sep 17 00:00:00 2001 From: juanvallejo Date: Fri, 17 Aug 2018 11:42:09 -0400 Subject: [PATCH] UPSTREAM: 67316: Adds tests for --all-containers=true Fixes regression in kubectl logs --all-containers=true --- .../polymorphichelpers/logsforobject.go | 8 +- .../polymorphichelpers/logsforobject_test.go | 97 +++++++++++++++++-- 2 files changed, 94 insertions(+), 11 deletions(-) diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/polymorphichelpers/logsforobject.go b/vendor/k8s.io/kubernetes/pkg/kubectl/polymorphichelpers/logsforobject.go index 4b543711d274..3de1d44ad996 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/polymorphichelpers/logsforobject.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/polymorphichelpers/logsforobject.go @@ -87,7 +87,7 @@ func logsForObjectWithClient(clientset corev1client.CoreV1Interface, object, opt for _, c := range t.Spec.InitContainers { currOpts := opts.DeepCopy() currOpts.Container = c.Name - currRet, err := logsForObjectWithClient(clientset, t, options, timeout, false) + currRet, err := logsForObjectWithClient(clientset, t, currOpts, timeout, false) if err != nil { return nil, err } @@ -96,7 +96,7 @@ func logsForObjectWithClient(clientset corev1client.CoreV1Interface, object, opt for _, c := range t.Spec.Containers { currOpts := opts.DeepCopy() currOpts.Container = c.Name - currRet, err := logsForObjectWithClient(clientset, t, options, timeout, false) + currRet, err := logsForObjectWithClient(clientset, t, currOpts, timeout, false) if err != nil { return nil, err } @@ -115,7 +115,7 @@ func logsForObjectWithClient(clientset corev1client.CoreV1Interface, object, opt for _, c := range t.Spec.InitContainers { currOpts := opts.DeepCopy() currOpts.Container = c.Name - currRet, err := logsForObjectWithClient(clientset, t, options, timeout, false) + currRet, err := logsForObjectWithClient(clientset, t, currOpts, timeout, false) if err != nil { return nil, err } @@ -124,7 +124,7 @@ func logsForObjectWithClient(clientset corev1client.CoreV1Interface, object, opt for _, c := range t.Spec.Containers { currOpts := opts.DeepCopy() currOpts.Container = c.Name - currRet, err := logsForObjectWithClient(clientset, t, options, timeout, false) + currRet, err := logsForObjectWithClient(clientset, t, currOpts, timeout, false) if err != nil { return nil, err } diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/polymorphichelpers/logsforobject_test.go b/vendor/k8s.io/kubernetes/pkg/kubectl/polymorphichelpers/logsforobject_test.go index 09274ef9f969..8c31964c37fa 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/polymorphichelpers/logsforobject_test.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/polymorphichelpers/logsforobject_test.go @@ -41,11 +41,12 @@ var ( func TestLogsForObject(t *testing.T) { tests := []struct { - name string - obj runtime.Object - opts *corev1.PodLogOptions - pods []runtime.Object - actions []testclient.Action + name string + obj runtime.Object + opts *corev1.PodLogOptions + allContainers bool + pods []runtime.Object + actions []testclient.Action }{ { name: "pod logs", @@ -57,6 +58,84 @@ func TestLogsForObject(t *testing.T) { getLogsAction("test", nil), }, }, + { + name: "pod logs: all containers", + obj: &corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{Name: "hello", Namespace: "test"}, + Spec: corev1.PodSpec{ + InitContainers: []corev1.Container{ + {Name: "initc1"}, + {Name: "initc2"}, + }, + Containers: []corev1.Container{ + {Name: "c1"}, + {Name: "c2"}, + }, + }, + }, + opts: &corev1.PodLogOptions{}, + allContainers: true, + pods: []runtime.Object{testPod()}, + actions: []testclient.Action{ + getLogsAction("test", &corev1.PodLogOptions{Container: "initc1"}), + getLogsAction("test", &corev1.PodLogOptions{Container: "initc2"}), + getLogsAction("test", &corev1.PodLogOptions{Container: "c1"}), + getLogsAction("test", &corev1.PodLogOptions{Container: "c2"}), + }, + }, + { + name: "pods list logs", + obj: &corev1.PodList{ + Items: []corev1.Pod{ + { + ObjectMeta: metav1.ObjectMeta{Name: "hello", Namespace: "test"}, + Spec: corev1.PodSpec{ + InitContainers: []corev1.Container{ + {Name: "initc1"}, + {Name: "initc2"}, + }, + Containers: []corev1.Container{ + {Name: "c1"}, + {Name: "c2"}, + }, + }, + }, + }, + }, + pods: []runtime.Object{testPod()}, + actions: []testclient.Action{ + getLogsAction("test", nil), + }, + }, + { + name: "pods list logs: all containers", + obj: &corev1.PodList{ + Items: []corev1.Pod{ + { + ObjectMeta: metav1.ObjectMeta{Name: "hello", Namespace: "test"}, + Spec: corev1.PodSpec{ + InitContainers: []corev1.Container{ + {Name: "initc1"}, + {Name: "initc2"}, + }, + Containers: []corev1.Container{ + {Name: "c1"}, + {Name: "c2"}, + }, + }, + }, + }, + }, + opts: &corev1.PodLogOptions{}, + allContainers: true, + pods: []runtime.Object{testPod()}, + actions: []testclient.Action{ + getLogsAction("test", &corev1.PodLogOptions{Container: "initc1"}), + getLogsAction("test", &corev1.PodLogOptions{Container: "initc2"}), + getLogsAction("test", &corev1.PodLogOptions{Container: "c1"}), + getLogsAction("test", &corev1.PodLogOptions{Container: "c2"}), + }, + }, { name: "replication controller logs", obj: &api.ReplicationController{ @@ -131,11 +210,12 @@ func TestLogsForObject(t *testing.T) { for _, test := range tests { fakeClientset := fakeexternal.NewSimpleClientset(test.pods...) - _, err := logsForObjectWithClient(fakeClientset.CoreV1(), test.obj, test.opts, 20*time.Second, false) + _, err := logsForObjectWithClient(fakeClientset.CoreV1(), test.obj, test.opts, 20*time.Second, test.allContainers) if err != nil { t.Errorf("%s: unexpected error: %v", test.name, err) continue } + for i := range test.actions { if len(fakeClientset.Actions()) < i { t.Errorf("%s: action %d does not exists in actual actions: %#v", @@ -161,7 +241,10 @@ func testPod() runtime.Object { Spec: corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyAlways, DNSPolicy: corev1.DNSClusterFirst, - Containers: []corev1.Container{{Name: "c1"}}, + Containers: []corev1.Container{ + {Name: "c1"}, + {Name: "c2"}, + }, }, } }