Merge pull request #8336 from brendandburns/kubectl

Add a test for status message generation.
This commit is contained in:
Prashanth B 2015-05-15 17:06:21 -07:00
commit 6144b49139
2 changed files with 108 additions and 2 deletions

View File

@ -364,7 +364,7 @@ func interpretContainerStatus(status *api.ContainerStatus) (string, string, stri
if state != nil {
message = fmt.Sprintf("exit code %d", state.ExitCode)
if state.Reason != "" {
message = fmt.Sprintf("%s, reason: %s", state.Reason)
message = fmt.Sprintf("%s, reason: %s", message, state.Reason)
}
}
return message
@ -380,7 +380,11 @@ func interpretContainerStatus(status *api.ContainerStatus) (string, string, stri
if message != "" {
message = "last termination: " + message
}
return "Running", translateTimestamp(state.Running.StartedAt), message, nil
stateMsg := "Running"
if !status.Ready {
stateMsg = stateMsg + " *not ready*"
}
return stateMsg, translateTimestamp(state.Running.StartedAt), message, nil
} else if state.Termination != nil {
return "Terminated", translateTimestamp(state.Termination.StartedAt), getTermMsg(state.Termination), nil
}

View File

@ -756,3 +756,105 @@ func TestPrintHumanReadableService(t *testing.T) {
}
}
}
func TestInterpretContainerStatus(t *testing.T) {
tests := []struct {
status *api.ContainerStatus
expectedState string
expectedMessage string
expectErr bool
name string
}{
{
status: &api.ContainerStatus{
State: api.ContainerState{
Running: &api.ContainerStateRunning{},
},
Ready: true,
},
expectedState: "Running",
expectedMessage: "",
name: "basic",
},
{
status: &api.ContainerStatus{
State: api.ContainerState{
Running: &api.ContainerStateRunning{},
},
Ready: false,
},
expectedState: "Running *not ready*",
expectedMessage: "",
name: "basic not ready",
},
{
status: &api.ContainerStatus{
State: api.ContainerState{
Waiting: &api.ContainerStateWaiting{},
},
Ready: false,
},
expectedState: "Waiting",
expectedMessage: "",
name: "waiting not ready",
},
{
status: &api.ContainerStatus{
State: api.ContainerState{
Waiting: &api.ContainerStateWaiting{},
},
Ready: true,
},
expectedState: "Waiting",
expectedMessage: "",
name: "waiting",
},
{
status: &api.ContainerStatus{
State: api.ContainerState{
Termination: &api.ContainerStateTerminated{
ExitCode: 3,
},
},
Ready: false,
},
expectedState: "Terminated",
expectedMessage: "exit code 3",
name: "terminated not ready",
},
{
status: &api.ContainerStatus{
State: api.ContainerState{
Termination: &api.ContainerStateTerminated{
ExitCode: 5,
Reason: "test reason",
},
},
Ready: true,
},
expectedState: "Terminated",
expectedMessage: "exit code 5, reason: test reason",
name: "terminated",
},
}
for _, test := range tests {
// TODO: test timestamp printing.
state, _, msg, err := interpretContainerStatus(test.status)
if test.expectErr && err == nil {
t.Errorf("unexpected non-error (%s)", test.name)
continue
}
if !test.expectErr && err != nil {
t.Errorf("unexpected error: %v (%s)", err, test.name)
continue
}
if state != test.expectedState {
t.Errorf("expected: %s, got: %s", test.expectedState, state)
}
if msg != test.expectedMessage {
t.Errorf("expected: %s, got: %s", test.expectedMessage, msg)
}
}
}