From c51346e5ccab826305dfd7065e3130689bb8bca4 Mon Sep 17 00:00:00 2001 From: xiangpengzhao Date: Mon, 18 Jul 2016 03:02:02 -0400 Subject: [PATCH] Fix incorrect if conditions and add test case --- pkg/kubelet/dockertools/docker_manager.go | 2 +- .../dockertools/docker_manager_test.go | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/dockertools/docker_manager.go b/pkg/kubelet/dockertools/docker_manager.go index f699a5dead..abf14f5a31 100644 --- a/pkg/kubelet/dockertools/docker_manager.go +++ b/pkg/kubelet/dockertools/docker_manager.go @@ -1434,7 +1434,7 @@ var errNoPodOnContainer = fmt.Errorf("no pod information labels on Docker contai // containerAndPodFromLabels tries to load the appropriate container info off of a Docker container's labels func containerAndPodFromLabels(inspect *dockertypes.ContainerJSON) (pod *api.Pod, container *api.Container, err error) { - if inspect == nil && inspect.Config == nil && inspect.Config.Labels == nil { + if inspect == nil || inspect.Config == nil || inspect.Config.Labels == nil { return nil, nil, errNoPodOnContainer } labels := inspect.Config.Labels diff --git a/pkg/kubelet/dockertools/docker_manager_test.go b/pkg/kubelet/dockertools/docker_manager_test.go index c9302d2b0a..45f5bc7655 100644 --- a/pkg/kubelet/dockertools/docker_manager_test.go +++ b/pkg/kubelet/dockertools/docker_manager_test.go @@ -2305,3 +2305,35 @@ func TestSyncPodGetsPodIPFromNetworkPlugin(t *testing.T) { "create", "start", "inspect_container", }) } + +// only test conditions "if inspect == nil || inspect.Config == nil || inspect.Config.Labels == nil" now +func TestContainerAndPodFromLabels(t *testing.T) { + tests := []struct { + inspect *dockertypes.ContainerJSON + expectedError error + }{ + { + inspect: nil, + expectedError: errNoPodOnContainer, + }, + { + inspect: &dockertypes.ContainerJSON{}, + expectedError: errNoPodOnContainer, + }, + { + inspect: &dockertypes.ContainerJSON{ + Config: &dockercontainer.Config{ + Hostname: "foo", + }, + }, + expectedError: errNoPodOnContainer, + }, + } + + for k, v := range tests { + pod, container, err := containerAndPodFromLabels(v.inspect) + if pod != nil || container != nil || err != v.expectedError { + t.Errorf("case[%q]: expected: nil, nil, %v, got: %v, %v, %v", k, v.expectedError, pod, container, err) + } + } +}