From 552b648caffb5be5ae86e237157fdad234caf4a4 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 11 May 2016 15:32:49 -0500 Subject: [PATCH] kubenet: implement fake execer for testcases When the IP isn't in the internal map, GetPodNetworkStatus() needs to call the execer for the 'nsenter' program. That means the execer needs to be !nil, which it wasn't before. --- .../network/kubenet/kubenet_linux_test.go | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/pkg/kubelet/network/kubenet/kubenet_linux_test.go b/pkg/kubelet/network/kubenet/kubenet_linux_test.go index 6d31673bbb8f3..a16e11e7fa70b 100644 --- a/pkg/kubelet/network/kubenet/kubenet_linux_test.go +++ b/pkg/kubelet/network/kubenet/kubenet_linux_test.go @@ -17,6 +17,8 @@ limitations under the License. package kubenet import ( + "fmt" + kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/network" nettest "k8s.io/kubernetes/pkg/kubelet/network/testing" @@ -38,9 +40,6 @@ func TestGetPodNetworkStatus(t *testing.T) { podIPMap[kubecontainer.ContainerID{ID: "1"}] = "10.245.0.2/32" podIPMap[kubecontainer.ContainerID{ID: "2"}] = "10.245.0.3/32" - fhost := nettest.NewFakeHost(nil) - fakeKubenet := newFakeKubenetPlugin(podIPMap, nil, fhost) - testCases := []struct { id string expectError bool @@ -66,6 +65,34 @@ func TestGetPodNetworkStatus(t *testing.T) { //TODO: add test cases for retrieving ip inside container network namespace } + fakeCmds := make([]exec.FakeCommandAction, 0) + for _, t := range testCases { + // the fake commands return the IP from the given index, or an error + fCmd := exec.FakeCmd{ + CombinedOutputScript: []exec.FakeCombinedOutputAction{ + func() ([]byte, error) { + ip, ok := podIPMap[kubecontainer.ContainerID{ID: t.id}] + if !ok { + return nil, fmt.Errorf("Pod IP %q not found", t.id) + } + return []byte(ip), nil + }, + }, + } + fakeCmds = append(fakeCmds, func(cmd string, args ...string) exec.Cmd { + return exec.InitFakeCmd(&fCmd, cmd, args...) + }) + } + fexec := exec.FakeExec{ + CommandScript: fakeCmds, + LookPathFunc: func(file string) (string, error) { + return fmt.Sprintf("/fake-bin/%s", file), nil + }, + } + + fhost := nettest.NewFakeHost(nil) + fakeKubenet := newFakeKubenetPlugin(podIPMap, &fexec, fhost) + for i, tc := range testCases { out, err := fakeKubenet.GetPodNetworkStatus("", "", kubecontainer.ContainerID{ID: tc.id}) if tc.expectError {