From 4e307587f00898bfd8651c7e6fc5d3c9d296ea32 Mon Sep 17 00:00:00 2001 From: Preetha Appan Date: Mon, 13 Nov 2017 11:14:57 -0600 Subject: [PATCH] Fixes bug with display message logic due to deprecating GenericSource. Also added more test cases to cover a bunch more edge cases --- api/tasks.go | 1 - command/alloc_status.go | 3 +-- nomad/structs/structs.go | 2 +- nomad/structs/structs_test.go | 24 ++++++++++++++++++++++++ 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/api/tasks.go b/api/tasks.go index e35079628..2b9f97b2d 100644 --- a/api/tasks.go +++ b/api/tasks.go @@ -583,7 +583,6 @@ const ( TaskRestartSignal = "Restart Signaled" TaskLeaderDead = "Leader Task Dead" TaskBuildingTaskDir = "Building Task Directory" - TaskGenericMessage = "Generic" ) // TaskEvent is an event that effects the state of a task and contains meta-data diff --git a/command/alloc_status.go b/command/alloc_status.go index 8b6af6d66..dbcc7728d 100644 --- a/command/alloc_status.go +++ b/command/alloc_status.go @@ -440,8 +440,7 @@ func buildDisplayMessage(event *api.TaskEvent) string { desc = event.DriverMessage case api.TaskLeaderDead: desc = "Leader Task in Group dead" - case api.TaskGenericMessage: - event.Type = event.GenericSource + default: desc = event.Message } diff --git a/nomad/structs/structs.go b/nomad/structs/structs.go index 3b8b7ca49..76b158cdc 100644 --- a/nomad/structs/structs.go +++ b/nomad/structs/structs.go @@ -3963,7 +3963,7 @@ func (event *TaskEvent) PopulateEventDisplayMessage() { case TaskLeaderDead: desc = "Leader Task in Group dead" default: - desc = "" + desc = event.Message } event.DisplayMessage = desc diff --git a/nomad/structs/structs_test.go b/nomad/structs/structs_test.go index 08de52186..688f6eaf7 100644 --- a/nomad/structs/structs_test.go +++ b/nomad/structs/structs_test.go @@ -2,6 +2,7 @@ package structs import ( "fmt" + "os" "reflect" "strings" "testing" @@ -2433,24 +2434,47 @@ func TestACLPolicySetHash(t *testing.T) { } func TestTaskEventPopulate(t *testing.T) { + prepopulatedEvent := NewTaskEvent(TaskSetup) + prepopulatedEvent.DisplayMessage = "Hola" testcases := []struct { event *TaskEvent expectedMsg string }{ {nil, ""}, + {prepopulatedEvent, "Hola"}, + {NewTaskEvent(TaskSetup).SetMessage("Setup"), "Setup"}, {NewTaskEvent(TaskStarted), "Task started by client"}, {NewTaskEvent(TaskReceived), "Task received by client"}, + {NewTaskEvent(TaskFailedValidation), "Validation of task failed"}, {NewTaskEvent(TaskFailedValidation).SetValidationError(fmt.Errorf("task failed validation")), "task failed validation"}, + {NewTaskEvent(TaskSetupFailure), "Task setup failed"}, {NewTaskEvent(TaskSetupFailure).SetSetupError(fmt.Errorf("task failed setup")), "task failed setup"}, {NewTaskEvent(TaskDriverFailure), "Failed to start task"}, {NewTaskEvent(TaskDownloadingArtifacts), "Client is downloading artifacts"}, {NewTaskEvent(TaskArtifactDownloadFailed), "Failed to download artifacts"}, {NewTaskEvent(TaskArtifactDownloadFailed).SetDownloadError(fmt.Errorf("connection reset by peer")), "connection reset by peer"}, + {NewTaskEvent(TaskRestarting).SetRestartDelay(2 * time.Second).SetRestartReason(ReasonWithinPolicy), "Task restarting in 2s"}, + {NewTaskEvent(TaskRestarting).SetRestartReason("Chaos Monkey did it"), "Chaos Monkey did it - Task restarting in 0s"}, + {NewTaskEvent(TaskKilling), "Sent interrupt"}, {NewTaskEvent(TaskKilling).SetKillReason("Its time for you to die"), "Killing task: Its time for you to die"}, {NewTaskEvent(TaskKilling).SetKillTimeout(1 * time.Second), "Sent interrupt. Waiting 1s before force killing"}, {NewTaskEvent(TaskTerminated).SetExitCode(-1).SetSignal(3), "Exit Code: -1, Signal: 3"}, + {NewTaskEvent(TaskTerminated).SetMessage("Goodbye"), "Exit Code: 0, Exit Message: \"Goodbye\""}, + {NewTaskEvent(TaskKilled), "Task successfully killed"}, + {NewTaskEvent(TaskKilled).SetKillError(fmt.Errorf("undead creatures can't be killed")), "undead creatures can't be killed"}, + {NewTaskEvent(TaskNotRestarting).SetRestartReason("Chaos Monkey did it"), "Chaos Monkey did it"}, + {NewTaskEvent(TaskNotRestarting), "Task exceeded restart policy"}, {NewTaskEvent(TaskLeaderDead), "Leader Task in Group dead"}, + {NewTaskEvent(TaskSiblingFailed), "Task's sibling failed"}, {NewTaskEvent(TaskSiblingFailed).SetFailedSibling("patient zero"), "Task's sibling \"patient zero\" failed"}, + {NewTaskEvent(TaskSignaling), "Task being sent a signal"}, + {NewTaskEvent(TaskSignaling).SetTaskSignal(os.Interrupt), "Task being sent signal interrupt"}, + {NewTaskEvent(TaskSignaling).SetTaskSignal(os.Interrupt).SetTaskSignalReason("process interrupted"), "Task being sent signal interrupt: process interrupted"}, + {NewTaskEvent(TaskRestartSignal), "Task signaled to restart"}, + {NewTaskEvent(TaskRestartSignal).SetRestartReason("Chaos Monkey restarted it"), "Chaos Monkey restarted it"}, + {NewTaskEvent(TaskDriverMessage).SetDriverMessage("YOLO"), "YOLO"}, + {NewTaskEvent("Unknown Type, No message"), ""}, + {NewTaskEvent("Unknown Type").SetMessage("Hello world"), "Hello world"}, } for _, tc := range testcases {