github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/model/task_queue_test.go (about) 1 package model 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/evergreen-ci/evergreen/db" 8 "github.com/evergreen-ci/evergreen/testutil" 9 "github.com/mongodb/grip" 10 . "github.com/smartystreets/goconvey/convey" 11 ) 12 13 var ( 14 _ fmt.Stringer = nil 15 taskQueueTestConf = testutil.TestConfig() 16 ) 17 18 func init() { 19 db.SetGlobalSessionProvider(db.SessionFactoryFromConfig(taskQueueTestConf)) 20 grip.Warning(grip.SetSender(testutil.SetupTestSender("/tmp/task_queue_test.log"))) 21 } 22 23 func TestDequeueTask(t *testing.T) { 24 25 var taskIds []string 26 var distroId string 27 var taskQueue *TaskQueue 28 29 Convey("When attempting to pull a task from a task queue", t, func() { 30 31 taskIds = []string{"t1", "t2", "t3"} 32 distroId = "d1" 33 taskQueue = &TaskQueue{ 34 Distro: distroId, 35 Queue: []TaskQueueItem{}, 36 } 37 38 So(db.Clear(TaskQueuesCollection), ShouldBeNil) 39 40 Convey("if the task queue is empty, an error should be thrown", func() { 41 So(taskQueue.Save(), ShouldBeNil) 42 So(taskQueue.DequeueTask(taskIds[0]), ShouldNotBeNil) 43 }) 44 45 Convey("if the task is not present in the queue, an error should be"+ 46 " thrown", func() { 47 taskQueue.Queue = append(taskQueue.Queue, 48 TaskQueueItem{Id: taskIds[1]}) 49 So(taskQueue.Save(), ShouldBeNil) 50 So(taskQueue.DequeueTask(taskIds[0]), ShouldNotBeNil) 51 }) 52 53 Convey("if the task is present in the queue, it should be removed"+ 54 " from the in-memory and db versions of the queue", func() { 55 taskQueue.Queue = []TaskQueueItem{ 56 {Id: taskIds[0]}, 57 {Id: taskIds[1]}, 58 {Id: taskIds[2]}, 59 } 60 So(taskQueue.Save(), ShouldBeNil) 61 So(taskQueue.DequeueTask(taskIds[1]), ShouldBeNil) 62 63 // make sure the queue was updated in memory 64 So(taskQueue.Length(), ShouldEqual, 2) 65 So(taskQueue.Queue[0].Id, ShouldEqual, taskIds[0]) 66 So(taskQueue.Queue[1].Id, ShouldEqual, taskIds[2]) 67 68 // make sure the db representation was updated 69 taskQueue, err := FindTaskQueueForDistro(distroId) 70 So(err, ShouldBeNil) 71 So(taskQueue.Length(), ShouldEqual, 2) 72 So(taskQueue.Queue[0].Id, ShouldEqual, taskIds[0]) 73 So(taskQueue.Queue[1].Id, ShouldEqual, taskIds[2]) 74 75 }) 76 77 }) 78 }