github.com/justinjmoses/evergreen@v0.0.0-20170530173719-1d50e381ff0d/scheduler/setup_funcs_test.go (about) 1 package scheduler 2 3 import ( 4 "testing" 5 6 "github.com/evergreen-ci/evergreen" 7 "github.com/evergreen-ci/evergreen/db" 8 "github.com/evergreen-ci/evergreen/model/build" 9 "github.com/evergreen-ci/evergreen/model/task" 10 "github.com/evergreen-ci/evergreen/testutil" 11 "github.com/mongodb/grip" 12 . "github.com/smartystreets/goconvey/convey" 13 ) 14 15 var setupFuncsTestConf = testutil.TestConfig() 16 17 func init() { 18 db.SetGlobalSessionProvider(db.SessionFactoryFromConfig(taskFinderTestConf)) 19 grip.CatchError(grip.SetSender(testutil.SetupTestSender(setupFuncsTestConf.Scheduler.LogFile))) 20 } 21 22 func TestSetupFuncs(t *testing.T) { 23 24 var taskComparator *CmpBasedTaskComparator 25 var taskIds []string 26 var tasks []task.Task 27 28 Convey("When running the setup funcs for task prioritizing", t, func() { 29 30 taskComparator = &CmpBasedTaskComparator{} 31 32 taskIds = []string{"t1", "t2", "t3"} 33 34 tasks = []task.Task{ 35 {Id: taskIds[0]}, 36 {Id: taskIds[1]}, 37 {Id: taskIds[2]}, 38 } 39 40 testutil.HandleTestingErr( 41 db.ClearCollections(build.Collection, task.Collection), 42 t, "Failed to clear test collections") 43 44 Convey("the previous task caching setup func should fetch and save the"+ 45 " relevant previous runs of tasks", func() { 46 47 displayNames := []string{"disp1", "disp2", "disp3"} 48 buildVariant := "bv" 49 prevTaskIds := []string{"pt1", "pt2", "pt3"} 50 project := "project" 51 52 tasks[0].RevisionOrderNumber = 100 53 tasks[0].Requester = evergreen.RepotrackerVersionRequester 54 tasks[0].DisplayName = displayNames[0] 55 tasks[0].BuildVariant = buildVariant 56 tasks[0].Project = project 57 58 tasks[1].RevisionOrderNumber = 200 59 tasks[1].Requester = evergreen.RepotrackerVersionRequester 60 tasks[1].DisplayName = displayNames[1] 61 tasks[1].BuildVariant = buildVariant 62 tasks[1].Project = project 63 64 tasks[2].RevisionOrderNumber = 300 65 tasks[2].Requester = evergreen.RepotrackerVersionRequester 66 tasks[2].DisplayName = displayNames[2] 67 tasks[2].BuildVariant = buildVariant 68 tasks[2].Project = project 69 70 // the previous tasks 71 72 prevTaskOne := &task.Task{ 73 Id: prevTaskIds[0], 74 RevisionOrderNumber: 99, 75 Requester: evergreen.RepotrackerVersionRequester, 76 DisplayName: displayNames[0], 77 BuildVariant: buildVariant, 78 Project: project, 79 Status: evergreen.TaskFailed, 80 } 81 82 prevTaskTwo := &task.Task{ 83 Id: prevTaskIds[1], 84 RevisionOrderNumber: 199, 85 Requester: evergreen.RepotrackerVersionRequester, 86 DisplayName: displayNames[1], 87 BuildVariant: buildVariant, 88 Project: project, 89 Status: evergreen.TaskSucceeded, 90 } 91 92 prevTaskThree := &task.Task{ 93 Id: prevTaskIds[2], 94 RevisionOrderNumber: 299, 95 Requester: evergreen.RepotrackerVersionRequester, 96 DisplayName: displayNames[2], 97 BuildVariant: buildVariant, 98 Project: project, 99 Status: evergreen.TaskSucceeded, 100 } 101 102 So(prevTaskOne.Insert(), ShouldBeNil) 103 So(prevTaskTwo.Insert(), ShouldBeNil) 104 So(prevTaskThree.Insert(), ShouldBeNil) 105 106 taskComparator.tasks = tasks 107 So(cachePreviousTasks(taskComparator), ShouldBeNil) 108 So(len(taskComparator.previousTasksCache), ShouldEqual, 3) 109 So(taskComparator.previousTasksCache[taskIds[0]].Id, ShouldEqual, 110 prevTaskIds[0]) 111 So(taskComparator.previousTasksCache[taskIds[1]].Id, ShouldEqual, 112 prevTaskIds[1]) 113 So(taskComparator.previousTasksCache[taskIds[2]].Id, ShouldEqual, 114 prevTaskIds[2]) 115 116 }) 117 }) 118 }