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 {