github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/model/event/task_event_test.go (about)

     1  package event
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/evergreen-ci/evergreen"
     8  	"github.com/evergreen-ci/evergreen/db"
     9  	"github.com/evergreen-ci/evergreen/testutil"
    10  	. "github.com/smartystreets/goconvey/convey"
    11  )
    12  
    13  func init() {
    14  	db.SetGlobalSessionProvider(db.SessionFactoryFromConfig(testutil.TestConfig()))
    15  }
    16  
    17  func TestLoggingTaskEvents(t *testing.T) {
    18  	Convey("Test task event logging", t, func() {
    19  
    20  		testutil.HandleTestingErr(db.Clear(AllLogCollection), t,
    21  			"Error clearing '%v' collection", AllLogCollection)
    22  
    23  		Convey("All task events should be logged correctly", func() {
    24  			taskId := "task_id"
    25  			hostId := "host_id"
    26  
    27  			LogTaskCreated(taskId)
    28  			time.Sleep(1 * time.Millisecond)
    29  			LogTaskDispatched(taskId, hostId)
    30  			time.Sleep(1 * time.Millisecond)
    31  			LogTaskUndispatched(taskId, hostId)
    32  			time.Sleep(1 * time.Millisecond)
    33  			LogTaskStarted(taskId)
    34  			time.Sleep(1 * time.Millisecond)
    35  			LogTaskFinished(taskId, hostId, evergreen.TaskSucceeded)
    36  
    37  			eventsForTask, err := Find(AllLogCollection, TaskEventsInOrder(taskId))
    38  			So(err, ShouldEqual, nil)
    39  
    40  			event := eventsForTask[0]
    41  			So(TaskCreated, ShouldEqual, event.EventType)
    42  			So(taskId, ShouldEqual, event.ResourceId)
    43  
    44  			eventData, ok := event.Data.Data.(*TaskEventData)
    45  			So(ok, ShouldBeTrue)
    46  			So(eventData.ResourceType, ShouldEqual, ResourceTypeTask)
    47  			So(eventData.HostId, ShouldBeBlank)
    48  			So(eventData.UserId, ShouldBeBlank)
    49  			So(eventData.Status, ShouldBeBlank)
    50  			So(eventData.Timestamp.IsZero(), ShouldBeTrue)
    51  
    52  			event = eventsForTask[1]
    53  			So(TaskDispatched, ShouldEqual, event.EventType)
    54  			So(taskId, ShouldEqual, event.ResourceId)
    55  
    56  			eventData, ok = event.Data.Data.(*TaskEventData)
    57  			So(ok, ShouldBeTrue)
    58  			So(eventData.ResourceType, ShouldEqual, ResourceTypeTask)
    59  			So(eventData.HostId, ShouldEqual, hostId)
    60  			So(eventData.UserId, ShouldBeBlank)
    61  			So(eventData.Status, ShouldBeBlank)
    62  			So(eventData.Timestamp.IsZero(), ShouldBeTrue)
    63  
    64  			event = eventsForTask[2]
    65  			So(TaskUndispatched, ShouldEqual, event.EventType)
    66  			So(taskId, ShouldEqual, event.ResourceId)
    67  
    68  			eventData, ok = event.Data.Data.(*TaskEventData)
    69  			So(ok, ShouldBeTrue)
    70  			So(eventData.ResourceType, ShouldEqual, ResourceTypeTask)
    71  			So(eventData.HostId, ShouldEqual, hostId)
    72  			So(eventData.UserId, ShouldBeBlank)
    73  			So(eventData.Status, ShouldBeBlank)
    74  			So(eventData.Timestamp.IsZero(), ShouldBeTrue)
    75  
    76  			event = eventsForTask[3]
    77  			So(TaskStarted, ShouldEqual, event.EventType)
    78  			So(taskId, ShouldEqual, event.ResourceId)
    79  
    80  			eventData, ok = event.Data.Data.(*TaskEventData)
    81  			So(ok, ShouldBeTrue)
    82  			So(eventData.ResourceType, ShouldEqual, ResourceTypeTask)
    83  			So(eventData.HostId, ShouldBeBlank)
    84  			So(eventData.UserId, ShouldBeBlank)
    85  			So(eventData.Status, ShouldBeBlank)
    86  			So(eventData.Timestamp.IsZero(), ShouldBeTrue)
    87  
    88  			event = eventsForTask[4]
    89  			So(TaskFinished, ShouldEqual, event.EventType)
    90  			So(taskId, ShouldEqual, event.ResourceId)
    91  
    92  			eventData, ok = event.Data.Data.(*TaskEventData)
    93  			So(ok, ShouldBeTrue)
    94  			So(eventData.ResourceType, ShouldEqual, ResourceTypeTask)
    95  			So(eventData.HostId, ShouldBeBlank)
    96  			So(eventData.UserId, ShouldBeBlank)
    97  			So(eventData.Status, ShouldEqual, evergreen.TaskSucceeded)
    98  			So(eventData.Timestamp.IsZero(), ShouldBeTrue)
    99  		})
   100  	})
   101  }