fix broken TestExecutorLaunchAndKillTask unit test

This commit is contained in:
James DeFelice 2015-06-14 03:38:29 +00:00
parent eca5a2ac88
commit 5e4992aa5e
3 changed files with 28 additions and 8 deletions

View File

@ -19,6 +19,7 @@ package executor
import (
"encoding/json"
"fmt"
"net"
"strings"
"sync"
"sync/atomic"
@ -97,10 +98,15 @@ type suicideWatcher interface {
type podStatusFunc func() (*api.PodStatus, error)
// KubeletInterface consists of the kubelet.Kubelet API's that we actually use
type KubeletInterface interface {
GetHostIP() (net.IP, error)
}
// KubernetesExecutor is an mesos executor that runs pods
// in a minion machine.
type KubernetesExecutor struct {
kl *kubelet.Kubelet // the kubelet instance.
kl KubeletInterface // the kubelet instance.
updateChan chan<- interface{} // to send pod config updates to the kubelet
state stateType
tasks map[string]*kuberTask
@ -118,11 +124,11 @@ type KubernetesExecutor struct {
kubeletFinished <-chan struct{} // signals that kubelet Run() died
initialRegistration sync.Once
exitFunc func(int)
podStatusFunc func(*kubelet.Kubelet, *api.Pod) (*api.PodStatus, error)
podStatusFunc func(KubeletInterface, *api.Pod) (*api.PodStatus, error)
}
type Config struct {
Kubelet *kubelet.Kubelet
Kubelet KubeletInterface
Updates chan<- interface{} // to send pod config updates to the kubelet
SourceName string
APIClient *client.Client
@ -132,7 +138,7 @@ type Config struct {
SuicideTimeout time.Duration
KubeletFinished <-chan struct{} // signals that kubelet Run() died
ExitFunc func(int)
PodStatusFunc func(*kubelet.Kubelet, *api.Pod) (*api.PodStatus, error)
PodStatusFunc func(KubeletInterface, *api.Pod) (*api.PodStatus, error)
}
func (k *KubernetesExecutor) isConnected() bool {

View File

@ -18,6 +18,7 @@ package executor
import (
"fmt"
"net"
"net/http"
"net/http/httptest"
"reflect"
@ -285,6 +286,15 @@ func TestExecutorReregister(t *testing.T) {
mockDriver.AssertExpectations(t)
}
type fakeKubelet struct {
*kubelet.Kubelet
hostIP net.IP
}
func (kl *fakeKubelet) GetHostIP() (net.IP, error) {
return kl.hostIP, nil
}
// TestExecutorLaunchAndKillTask ensures that the executor is able to launch
// and kill tasks while properly bookkeping its tasks.
func TestExecutorLaunchAndKillTask(t *testing.T) {
@ -304,8 +314,11 @@ func TestExecutorLaunchAndKillTask(t *testing.T) {
Host: testApiServer.server.URL,
Version: testapi.Version(),
}),
Kubelet: &kubelet.Kubelet{},
PodStatusFunc: func(kl *kubelet.Kubelet, pod *api.Pod) (*api.PodStatus, error) {
Kubelet: &fakeKubelet{
Kubelet: &kubelet.Kubelet{},
hostIP: net.IPv4(127, 0, 0, 1),
},
PodStatusFunc: func(kl KubeletInterface, pod *api.Pod) (*api.PodStatus, error) {
return &api.PodStatus{
ContainerStatuses: []api.ContainerStatus{
{
@ -331,6 +344,7 @@ func TestExecutorLaunchAndKillTask(t *testing.T) {
}
pod := NewTestPod(1)
pod.Spec.Containers[0].Name = "foo"
podTask, err := podtask.New(api.NewDefaultContext(), "",
*pod, &mesosproto.ExecutorInfo{})
assert.Equal(t, nil, err, "must be able to create a task from a pod")

View File

@ -376,8 +376,8 @@ func (ks *KubeletExecutorServer) createAndInitKubelet(
}
},
ExitFunc: os.Exit,
PodStatusFunc: func(kl *kubelet.Kubelet, pod *api.Pod) (*api.PodStatus, error) {
return kl.GetRuntime().GetPodStatus(pod)
PodStatusFunc: func(_ executor.KubeletInterface, pod *api.Pod) (*api.PodStatus, error) {
return klet.GetRuntime().GetPodStatus(pod)
},
})