mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-06 07:57:35 +00:00
Expose errors from libecycle hooks as events for the pod.
Signed-off-by: Vishnu kannan <vishnuk@google.com>
This commit is contained in:
@@ -19,8 +19,10 @@ package lifecycle
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
@@ -110,7 +112,7 @@ func TestRunHandlerExec(t *testing.T) {
|
||||
pod.ObjectMeta.Name = "podFoo"
|
||||
pod.ObjectMeta.Namespace = "nsFoo"
|
||||
pod.Spec.Containers = []api.Container{container}
|
||||
err := handlerRunner.Run(containerID, &pod, &container, container.Lifecycle.PostStart)
|
||||
_, err := handlerRunner.Run(containerID, &pod, &container, container.Lifecycle.PostStart)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
@@ -121,13 +123,14 @@ func TestRunHandlerExec(t *testing.T) {
|
||||
}
|
||||
|
||||
type fakeHTTP struct {
|
||||
url string
|
||||
err error
|
||||
url string
|
||||
err error
|
||||
resp *http.Response
|
||||
}
|
||||
|
||||
func (f *fakeHTTP) Get(url string) (*http.Response, error) {
|
||||
f.url = url
|
||||
return nil, f.err
|
||||
return f.resp, f.err
|
||||
}
|
||||
|
||||
func TestRunHandlerHttp(t *testing.T) {
|
||||
@@ -153,7 +156,7 @@ func TestRunHandlerHttp(t *testing.T) {
|
||||
pod.ObjectMeta.Name = "podFoo"
|
||||
pod.ObjectMeta.Namespace = "nsFoo"
|
||||
pod.Spec.Containers = []api.Container{container}
|
||||
err := handlerRunner.Run(containerID, &pod, &container, container.Lifecycle.PostStart)
|
||||
_, err := handlerRunner.Run(containerID, &pod, &container, container.Lifecycle.PostStart)
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
@@ -180,7 +183,7 @@ func TestRunHandlerNil(t *testing.T) {
|
||||
pod.ObjectMeta.Name = podName
|
||||
pod.ObjectMeta.Namespace = podNamespace
|
||||
pod.Spec.Containers = []api.Container{container}
|
||||
err := handlerRunner.Run(containerID, &pod, &container, container.Lifecycle.PostStart)
|
||||
_, err := handlerRunner.Run(containerID, &pod, &container, container.Lifecycle.PostStart)
|
||||
if err == nil {
|
||||
t.Errorf("expect error, but got nil")
|
||||
}
|
||||
@@ -188,14 +191,13 @@ func TestRunHandlerNil(t *testing.T) {
|
||||
|
||||
func TestRunHandlerHttpFailure(t *testing.T) {
|
||||
expectedErr := fmt.Errorf("fake http error")
|
||||
fakeHttp := fakeHTTP{err: expectedErr}
|
||||
handlerRunner := &HandlerRunner{
|
||||
httpGetter: &fakeHttp,
|
||||
commandRunner: &fakeContainerCommandRunner{},
|
||||
containerManager: nil,
|
||||
expectedResp := http.Response{
|
||||
Body: ioutil.NopCloser(strings.NewReader(expectedErr.Error())),
|
||||
}
|
||||
fakeHttp := fakeHTTP{err: expectedErr, resp: &expectedResp}
|
||||
handlerRunner := NewHandlerRunner(&fakeHttp, &fakeContainerCommandRunner{}, nil)
|
||||
containerName := "containerFoo"
|
||||
|
||||
containerID := kubecontainer.ContainerID{Type: "test", ID: "abc1234"}
|
||||
container := api.Container{
|
||||
Name: containerName,
|
||||
Lifecycle: &api.Lifecycle{
|
||||
@@ -212,12 +214,12 @@ func TestRunHandlerHttpFailure(t *testing.T) {
|
||||
pod.ObjectMeta.Name = "podFoo"
|
||||
pod.ObjectMeta.Namespace = "nsFoo"
|
||||
pod.Spec.Containers = []api.Container{container}
|
||||
msg, err := handlerRunner.runHTTPHandler(&pod, &container, container.Lifecycle.PostStart)
|
||||
msg, err := handlerRunner.Run(containerID, &pod, &container, container.Lifecycle.PostStart)
|
||||
if err == nil {
|
||||
t.Errorf("expected error: %v", expectedErr)
|
||||
}
|
||||
if msg != "" {
|
||||
t.Errorf("expected empty error message")
|
||||
if msg != expectedErr.Error() {
|
||||
t.Errorf("unexpected error message: %q; expected %q", msg, expectedErr)
|
||||
}
|
||||
if fakeHttp.url != "http://foo:8080/bar" {
|
||||
t.Errorf("unexpected url: %s", fakeHttp.url)
|
||||
|
||||
Reference in New Issue
Block a user