From 7a3b080e68ab11d23c418d76af04a499b88fe62c Mon Sep 17 00:00:00 2001 From: pprokop Date: Wed, 28 Sep 2016 18:42:19 +0200 Subject: [PATCH] Adding test for daemonset --- dependencies/config/config_test.go | 2 +- dependencies/daemonset/daemonset.go | 4 +++ dependencies/daemonset/daemonset_test.go | 19 +++++++++++++ mocks/daemonset.go | 8 ++++++ mocks/pod.go | 36 ++++++++++++++++++------ 5 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 dependencies/daemonset/daemonset_test.go diff --git a/dependencies/config/config_test.go b/dependencies/config/config_test.go index d5e9c9f..09794bf 100644 --- a/dependencies/config/config_test.go +++ b/dependencies/config/config_test.go @@ -45,7 +45,7 @@ func TestIsResolved(t *testing.T) { entry := mocks.NewEntrypoint() - err := prepareEnv() + err = prepareEnv() if err != nil { t.Errorf("Something went wrong: %v", err) } diff --git a/dependencies/daemonset/daemonset.go b/dependencies/daemonset/daemonset.go index bca42ed..f5aef73 100644 --- a/dependencies/daemonset/daemonset.go +++ b/dependencies/daemonset/daemonset.go @@ -30,6 +30,7 @@ func NewDaemonset(name string) Daemonset { func (d Daemonset) IsResolved(entrypoint entry.EntrypointInterface) (bool, error) { var myPodName string daemonset, err := entrypoint.Client().DaemonSets(entrypoint.GetNamespace()).Get(d.GetName()) + if err != nil { return false, err } @@ -40,13 +41,16 @@ func (d Daemonset) IsResolved(entrypoint entry.EntrypointInterface) (bool, error if err != nil { return false, err } + if myPodName := os.Getenv("POD_NAME"); myPodName == "" { panic("Environment variable POD_NAME not set") } + myPod, err := entrypoint.Client().Pods(entrypoint.GetNamespace()).Get(myPodName) if err != nil { panic(fmt.Sprintf("Getting POD: %v failed : %v", myPodName, err)) } + myHost := myPod.Status.HostIP for _, pod := range pods.Items { diff --git a/dependencies/daemonset/daemonset_test.go b/dependencies/daemonset/daemonset_test.go new file mode 100644 index 0000000..017a336 --- /dev/null +++ b/dependencies/daemonset/daemonset_test.go @@ -0,0 +1,19 @@ +package daemonset + +import ( + "os" + "testing" + + mocks "github.com/stackanetes/kubernetes-entrypoint/mocks" +) + +func TestResolveDaemonset(t *testing.T) { + entrypoint := mocks.NewEntrypoint() + daemonset := NewDaemonset("lgtm") + os.Setenv("POD_NAME", "podlist") + status, err := daemonset.IsResolved(entrypoint) + if err != nil { + t.Errorf("Something went wrong status: %s : %v", status, err) + } + +} diff --git a/mocks/daemonset.go b/mocks/daemonset.go index aa10b98..5c9dd53 100644 --- a/mocks/daemonset.go +++ b/mocks/daemonset.go @@ -2,7 +2,9 @@ package mocks import ( "fmt" + "k8s.io/kubernetes/pkg/api" + unv "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/watch" @@ -17,6 +19,12 @@ func (d dClient) Get(name string) (*extensions.DaemonSet, error) { } ds := new(extensions.DaemonSet) ds.Name = name + sel := unv.LabelSelector{ + MatchLabels: map[string]string{ + "name": "test", + }, + } + ds.Spec.Selector = &sel return ds, nil } func (d dClient) Create(ds *extensions.DaemonSet) (*extensions.DaemonSet, error) { diff --git a/mocks/pod.go b/mocks/pod.go index 7f1bcc6..be09edf 100644 --- a/mocks/pod.go +++ b/mocks/pod.go @@ -13,16 +13,17 @@ type pClient struct { } func (p pClient) Get(name string) (*api.Pod, error) { - if name == "lgtm" { - pod := new(api.Pod) - container_one := api.ContainerStatus{ + pod := new(api.Pod) + pod.Name = name + pod.Status.ContainerStatuses = []api.ContainerStatus{ + api.ContainerStatus{ Name: "container_test", Ready: true, - } - pod.Status.ContainerStatuses = []api.ContainerStatus{container_one} - return pod, nil + }, } - return nil, fmt.Errorf("Mock pod didnt work") + pod.Status.HostIP = "127.0.0.1" + return pod, nil + } func (p pClient) Create(pod *api.Pod) (*api.Pod, error) { return nil, fmt.Errorf("Not implemented") @@ -32,7 +33,26 @@ func (p pClient) Delete(name string, options *api.DeleteOptions) error { return fmt.Errorf("Not implemented") } func (p pClient) List(options api.ListOptions) (*api.PodList, error) { - return nil, fmt.Errorf("Not implemented") + pod := new(api.Pod) + pod.Name = "podlist" + pod.Status.ContainerStatuses = []api.ContainerStatus{ + api.ContainerStatus{ + Name: "container_test", + Ready: true, + }, + } + pod.Status.HostIP = "127.0.0.1" + pod.Status.Conditions = []api.PodCondition{ + api.PodCondition{ + Type: api.PodReady, + Status: "True", + }, + } + podList := new(api.PodList) + podList.Items = []api.Pod{ + *pod, + } + return podList, nil } func (p pClient) Update(pod *api.Pod) (*api.Pod, error) {