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  }