本文整理匯總了Golang中github.com/evergreen-ci/evergreen/db.ClearCollections函數的典型用法代碼示例。如果您正苦於以下問題:Golang ClearCollections函數的具體用法?Golang ClearCollections怎麽用?Golang ClearCollections使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了ClearCollections函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: createTestConfig
func createTestConfig(filename string, t *testing.T) (*model.TaskConfig, error) {
clearDataMsg := "Failed to clear test data collection"
testutil.HandleTestingErr(
db.ClearCollections(
task.Collection, model.ProjectVarsCollection),
t, clearDataMsg)
data, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
testProject := &model.Project{}
err = yaml.Unmarshal(data, testProject)
if err != nil {
return nil, err
}
testProjectRef := &model.ProjectRef{
Identifier: "mongodb-mongo-master",
Owner: "mongodb",
Repo: "mongo",
RepoKind: "github",
Branch: "master",
Enabled: true,
BatchTime: 180,
}
workDir, err := ioutil.TempDir("", "plugintest_")
if err != nil {
return nil, err
}
testTask := &task.Task{
Id: "mocktaskid",
BuildId: "testBuildId",
BuildVariant: "linux-64",
Project: "mongodb-mongo-master",
DisplayName: "test",
HostId: "testHost",
Version: "versionId",
Secret: "mocktasksecret",
Status: evergreen.TaskDispatched,
Revision: "cb91350bf017337a734dcd0321bf4e6c34990b6a",
Requester: evergreen.RepotrackerVersionRequester,
}
testutil.HandleTestingErr(testTask.Insert(), t, "failed to insert task")
projectVars := &model.ProjectVars{
Id: "mongodb-mongo-master",
Vars: map[string]string{
"abc": "xyz",
"123": "456",
},
}
_, err = projectVars.Upsert()
testutil.HandleTestingErr(err, t, "failed to upsert project vars")
testDistro := &distro.Distro{Id: "linux-64", WorkDir: workDir}
testVersion := &version.Version{}
return model.NewTaskConfig(testDistro, testVersion, testProject, testTask, testProjectRef)
}
示例2: TestCreateHostBuckets
func TestCreateHostBuckets(t *testing.T) {
testutil.HandleTestingErr(db.ClearCollections(host.Collection), t, "couldnt reset host")
Convey("With a starting time and a minute bucket size and inserting dynamic hosts with different time frames", t, func() {
now := time.Now()
bucketSize := time.Duration(10) * time.Second
// -20 -> 20
beforeStartHost := host.Host{Id: "beforeStartHost", CreationTime: now.Add(time.Duration(-20) * time.Second), TerminationTime: now.Add(time.Duration(20) * time.Second), Provider: "ec2"}
So(beforeStartHost.Insert(), ShouldBeNil)
// 80 -> 120
afterEndHost := host.Host{Id: "afterEndHost", CreationTime: now.Add(time.Duration(80) * time.Second), TerminationTime: now.Add(time.Duration(120) * time.Second), Provider: "ec2"}
So(afterEndHost.Insert(), ShouldBeNil)
// 20 -> 40
h1 := host.Host{Id: "h1", CreationTime: now.Add(time.Duration(20) * time.Second), TerminationTime: now.Add(time.Duration(40) * time.Second), Provider: "ec2"}
So(h1.Insert(), ShouldBeNil)
// 10 -> 80
h2 := host.Host{Id: "h2", CreationTime: now.Add(time.Duration(10) * time.Second), TerminationTime: now.Add(time.Duration(80) * time.Second), Provider: "ec2"}
So(h2.Insert(), ShouldBeNil)
// 20 ->
h3 := host.Host{Id: "h3", CreationTime: now.Add(time.Duration(20) * time.Second), TerminationTime: util.ZeroTime, Provider: "ec2", Status: evergreen.HostRunning}
So(h3.Insert(), ShouldBeNil)
// 5 -> 7
sameBucket := host.Host{Id: "sameBucket", CreationTime: now.Add(time.Duration(5) * time.Second), TerminationTime: now.Add(time.Duration(7) * time.Second), Provider: "ec2"}
So(sameBucket.Insert(), ShouldBeNil)
// 5 -> 30
h4 := host.Host{Id: "h4", CreationTime: now.Add(time.Duration(5) * time.Second), TerminationTime: now.Add(time.Duration(30) * time.Second), Provider: "ec2"}
So(h4.Insert(), ShouldBeNil)
Convey("for three buckets of 10 seconds, should only retrieve pertinent host docs", func() {
endTime := now.Add(time.Duration(30) * time.Second)
hosts, err := host.Find(host.ByDynamicWithinTime(now, endTime))
So(err, ShouldBeNil)
So(len(hosts), ShouldEqual, 6)
frameBounds := FrameBounds{
StartTime: now,
EndTime: endTime,
BucketSize: bucketSize,
NumberBuckets: 3,
}
Convey("should create the correct buckets and bucket time accordingly", func() {
buckets, errors := CreateHostBuckets(hosts, frameBounds)
So(errors, ShouldBeEmpty)
So(len(buckets), ShouldEqual, 3)
So(int(buckets[0].TotalTime.Seconds()), ShouldEqual, 17)
So(int(buckets[1].TotalTime.Seconds()), ShouldEqual, 30)
So(int(math.Ceil(buckets[2].TotalTime.Seconds())), ShouldEqual, 40)
})
})
})
}
示例3: TestUpdateBuildStatusForTask
func TestUpdateBuildStatusForTask(t *testing.T) {
Convey("With two tasks and a build", t, func() {
testutil.HandleTestingErr(db.ClearCollections(task.Collection, build.Collection, version.Collection), t,
"Error clearing task and build collections")
displayName := "testName"
b := &build.Build{
Id: "buildtest",
Status: evergreen.BuildStarted,
Version: "abc",
}
v := &version.Version{
Id: b.Version,
Status: evergreen.VersionStarted,
}
testTask := task.Task{
Id: "testone",
DisplayName: displayName,
Activated: false,
BuildId: b.Id,
Project: "sample",
Status: evergreen.TaskFailed,
}
anotherTask := task.Task{
Id: "two",
DisplayName: displayName,
Activated: true,
BuildId: b.Id,
Project: "sample",
Status: evergreen.TaskFailed,
}
b.Tasks = []build.TaskCache{
{
Id: testTask.Id,
Status: evergreen.TaskSucceeded,
},
{
Id: anotherTask.Id,
Status: evergreen.TaskFailed,
},
}
So(b.Insert(), ShouldBeNil)
So(testTask.Insert(), ShouldBeNil)
So(anotherTask.Insert(), ShouldBeNil)
So(v.Insert(), ShouldBeNil)
Convey("updating the build for a task should update the build's status and the version's status", func() {
So(UpdateBuildAndVersionStatusForTask(testTask.Id), ShouldBeNil)
b, err := build.FindOne(build.ById(b.Id))
So(err, ShouldBeNil)
So(b.Status, ShouldEqual, evergreen.BuildFailed)
v, err := version.FindOne(version.ById(v.Id))
So(v.Status, ShouldEqual, evergreen.VersionFailed)
})
})
}
示例4: cleanupdb
func cleanupdb() {
err := db.ClearCollections(
model.TasksCollection,
model.NotifyTimesCollection,
model.NotifyHistoryCollection,
build.Collection,
version.Collection)
So(err, ShouldBeNil)
}
示例5: TestCreateTaskBuckets
func TestCreateTaskBuckets(t *testing.T) {
testutil.HandleTestingErr(db.ClearCollections(task.Collection), t, "couldnt reset host")
Convey("With a starting time and a minute bucket size and inserting tasks with different start and finish", t, func() {
now := time.Now()
bucketSize := time.Duration(10) * time.Second
// -20 -> 20
beforeStartHost := task.Task{Id: "beforeStartTask", StartTime: now.Add(time.Duration(-20) * time.Second), FinishTime: now.Add(time.Duration(20) * time.Second), Status: evergreen.TaskSucceeded}
So(beforeStartHost.Insert(), ShouldBeNil)
// 80 -> 120
afterEndHost := task.Task{Id: "afterStartTask", StartTime: now.Add(time.Duration(80) * time.Second), FinishTime: now.Add(time.Duration(120) * time.Second), Status: evergreen.TaskFailed}
So(afterEndHost.Insert(), ShouldBeNil)
// 20 -> 40: shouldnt be added
h1 := task.Task{Id: "h1", StartTime: now.Add(time.Duration(20) * time.Second), FinishTime: now.Add(time.Duration(40) * time.Second), Status: evergreen.TaskUndispatched}
So(h1.Insert(), ShouldBeNil)
// 10 -> 80
h2 := task.Task{Id: "h2", StartTime: now.Add(time.Duration(10) * time.Second), FinishTime: now.Add(time.Duration(80) * time.Second), Status: evergreen.TaskSucceeded}
So(h2.Insert(), ShouldBeNil)
// 20 -> shouldnt be added
neverEnding := task.Task{Id: "neverEnding", StartTime: now.Add(time.Duration(20) * time.Second), Status: evergreen.TaskSucceeded}
So(neverEnding.Insert(), ShouldBeNil)
// 5 -> 7
sameBucket := task.Task{Id: "sameBucket", StartTime: now.Add(time.Duration(5) * time.Second), FinishTime: now.Add(time.Duration(7) * time.Second), Status: evergreen.TaskFailed}
So(sameBucket.Insert(), ShouldBeNil)
// 5 -> 30
h4 := task.Task{Id: "h4", StartTime: now.Add(time.Duration(5) * time.Second), FinishTime: now.Add(time.Duration(30) * time.Second), Status: evergreen.TaskFailed}
So(h4.Insert(), ShouldBeNil)
endTime := now.Add(time.Duration(40) * time.Second)
frameBounds := FrameBounds{
StartTime: now,
EndTime: endTime,
NumberBuckets: 4,
BucketSize: bucketSize,
}
Convey("for four buckets of 10 seconds", func() {
tasks, err := task.Find(task.ByTimeRun(now, endTime))
So(err, ShouldBeNil)
So(len(tasks), ShouldEqual, 4)
buckets, errors := CreateTaskBuckets(tasks, []task.Task{}, frameBounds)
So(errors, ShouldBeEmpty)
So(len(buckets), ShouldEqual, 4)
So(int(buckets[0].TotalTime.Seconds()), ShouldEqual, 17)
So(int(math.Ceil(buckets[1].TotalTime.Seconds())), ShouldEqual, 30)
So(int(math.Ceil(buckets[2].TotalTime.Seconds())), ShouldEqual, 20)
})
})
}
示例6: TestHostFindNextTask
func TestHostFindNextTask(t *testing.T) {
Convey("With a host", t, func() {
Convey("when finding the next task to be run on the host", func() {
testutil.HandleTestingErr(db.ClearCollections(host.Collection,
task.Collection, TaskQueuesCollection), t,
"Error clearing test collections")
h := &host.Host{Id: "hostId", Distro: distro.Distro{}}
So(h.Insert(), ShouldBeNil)
Convey("if there is no task queue for the host's distro, no task"+
" should be returned", func() {
nextTask, err := NextTaskForHost(h)
So(err, ShouldBeNil)
So(nextTask, ShouldBeNil)
})
Convey("if the task queue is empty, no task should be"+
" returned", func() {
tQueue := &TaskQueue{Distro: h.Distro.Id}
So(tQueue.Save(), ShouldBeNil)
nextTask, err := NextTaskForHost(h)
So(err, ShouldBeNil)
So(nextTask, ShouldBeNil)
})
Convey("if the task queue is not empty, the corresponding task"+
" object from the database should be returned", func() {
tQueue := &TaskQueue{
Distro: h.Distro.Id,
Queue: []TaskQueueItem{{Id: "taskOne"}},
}
So(tQueue.Save(), ShouldBeNil)
task := &task.Task{Id: "taskOne"}
So(task.Insert(), ShouldBeNil)
nextTask, err := NextTaskForHost(h)
So(err, ShouldBeNil)
So(nextTask.Id, ShouldEqual, task.Id)
})
})
})
}
示例7: TestDeletingBuild
func TestDeletingBuild(t *testing.T) {
Convey("With a build", t, func() {
testutil.HandleTestingErr(db.Clear(build.Collection), t, "Error clearing"+
" '%v' collection", build.Collection)
b := &build.Build{
Id: "build",
}
So(b.Insert(), ShouldBeNil)
Convey("deleting it should remove it and all its associated"+
" tasks from the database", func() {
testutil.HandleTestingErr(db.ClearCollections(task.Collection), t, "Error"+
" clearing '%v' collection", task.Collection)
// insert two tasks that are part of the build, and one that isn't
matchingTaskOne := &task.Task{
Id: "matchingOne",
BuildId: b.Id,
}
So(matchingTaskOne.Insert(), ShouldBeNil)
matchingTaskTwo := &task.Task{
Id: "matchingTwo",
BuildId: b.Id,
}
So(matchingTaskTwo.Insert(), ShouldBeNil)
nonMatchingTask := &task.Task{
Id: "nonMatching",
BuildId: "blech",
}
So(nonMatchingTask.Insert(), ShouldBeNil)
// delete the build, make sure only it and its tasks are deleted
So(DeleteBuild(b.Id), ShouldBeNil)
b, err := build.FindOne(build.ById(b.Id))
So(err, ShouldBeNil)
So(b, ShouldBeNil)
matchingTasks, err := task.Find(task.ByBuildId("build"))
So(err, ShouldBeNil)
So(len(matchingTasks), ShouldEqual, 0)
nonMatchingTask, err = task.FindOne(task.ById(nonMatchingTask.Id))
So(err, ShouldBeNil)
So(nonMatchingTask, ShouldNotBeNil)
})
})
}
示例8: TestS3CopyPluginExecution
func TestS3CopyPluginExecution(t *testing.T) {
testConfig := evergreen.TestConfig()
db.SetGlobalSessionProvider(db.SessionFactoryFromConfig(testConfig))
testutil.ConfigureIntegrationTest(t, testConfig, "TestS3CopyPluginExecution")
Convey("With a SimpleRegistry and test project file", t, func() {
registry := plugin.NewSimpleRegistry()
s3CopyPlugin := &S3CopyPlugin{}
testutil.HandleTestingErr(registry.Register(s3CopyPlugin), t, "failed to register s3Copy plugin")
testutil.HandleTestingErr(registry.Register(&s3Plugin.S3Plugin{}), t, "failed to register S3 plugin")
testutil.HandleTestingErr(
db.ClearCollections(model.PushlogCollection, version.Collection), t,
"error clearing test collections")
version := &version.Version{
Id: "",
}
So(version.Insert(), ShouldBeNil)
server, err := apiserver.CreateTestServer(testConfig, nil, plugin.APIPlugins, false)
testutil.HandleTestingErr(err, t, "Couldn't set up testing server")
httpCom := plugintest.TestAgentCommunicator("mocktaskid", "mocktasksecret", server.URL)
//server.InstallPlugin(s3CopyPlugin)
taskConfig, err := plugintest.CreateTestConfig("testdata/plugin_s3_copy.yml", t)
testutil.HandleTestingErr(err, t, "failed to create test config: %v", err)
taskConfig.WorkDir = "."
sliceAppender := &evergreen.SliceAppender{[]*slogger.Log{}}
logger := agent.NewTestLogger(sliceAppender)
taskConfig.Expansions.Update(map[string]string{
"aws_key": testConfig.Providers.AWS.Id,
"aws_secret": testConfig.Providers.AWS.Secret,
})
Convey("the s3 copy command should execute successfully", func() {
for _, task := range taskConfig.Project.Tasks {
So(len(task.Commands), ShouldNotEqual, 0)
for _, command := range task.Commands {
pluginCmds, err := registry.GetCommands(command, taskConfig.Project.Functions)
testutil.HandleTestingErr(err, t, "Couldn't get plugin command: %v")
So(pluginCmds, ShouldNotBeNil)
So(err, ShouldBeNil)
pluginCom := &agent.TaskJSONCommunicator{s3CopyPlugin.Name(), httpCom}
err = pluginCmds[0].Execute(logger, pluginCom, taskConfig,
make(chan bool))
So(err, ShouldBeNil)
}
}
})
})
}
示例9: clearAll
func clearAll(t *testing.T) {
testutil.HandleTestingErr(
db.ClearCollections(
model.ProjectRefCollection,
patch.Collection,
version.Collection,
build.Collection,
task.Collection,
distro.Collection,
), t, "Error clearing test collection: %v")
}
示例10: prependConfigToVersion
// prependConfigToVersion modifies the project config with the given id
func prependConfigToVersion(t *testing.T, versionId, configData string) {
v, err := version.FindOne(version.ById(versionId))
testutil.HandleTestingErr(err, t, "failed to load version")
if v == nil {
err = fmt.Errorf("could not find version to update")
testutil.HandleTestingErr(err, t, "failed to find version")
}
v.Config = configData + v.Config
testutil.HandleTestingErr(dbutil.ClearCollections(version.Collection), t, "couldnt reset version")
testutil.HandleTestingErr(v.Insert(), t, "failed to insert version")
}
示例11: TestDeactivatePreviousTask
func TestDeactivatePreviousTask(t *testing.T) {
Convey("With two tasks and a build", t, func() {
testutil.HandleTestingErr(db.ClearCollections(task.Collection, build.Collection), t,
"Error clearing task and build collections")
// create two tasks
displayName := "testTask"
userName := "user"
b := &build.Build{
Id: "testBuild",
}
previousTask := &task.Task{
Id: "one",
DisplayName: displayName,
RevisionOrderNumber: 1,
Priority: 1,
Activated: true,
ActivatedBy: "user",
BuildId: b.Id,
Status: evergreen.TaskUndispatched,
Project: "sample",
}
currentTask := &task.Task{
Id: "two",
DisplayName: displayName,
RevisionOrderNumber: 2,
Status: evergreen.TaskFailed,
Priority: 1,
Activated: true,
BuildId: b.Id,
Project: "sample",
}
tc := []build.TaskCache{
{
DisplayName: displayName,
Id: previousTask.Id,
},
{
DisplayName: displayName,
Id: currentTask.Id,
},
}
b.Tasks = tc
So(b.Insert(), ShouldBeNil)
So(previousTask.Insert(), ShouldBeNil)
So(currentTask.Insert(), ShouldBeNil)
Convey("activating a previous task should set the previous task's active field to true", func() {
So(DeactivatePreviousTasks(currentTask.Id, userName), ShouldBeNil)
previousTask, err := task.FindOne(task.ById(previousTask.Id))
So(err, ShouldBeNil)
So(previousTask.Activated, ShouldBeFalse)
})
})
}
示例12: TestMarkStart
func TestMarkStart(t *testing.T) {
Convey("With a task, build and version", t, func() {
testutil.HandleTestingErr(db.ClearCollections(task.Collection, build.Collection, version.Collection), t,
"Error clearing task and build collections")
displayName := "testName"
b := &build.Build{
Id: "buildtest",
Status: evergreen.BuildCreated,
Version: "abc",
}
v := &version.Version{
Id: b.Version,
Status: evergreen.VersionCreated,
}
testTask := task.Task{
Id: "testTask",
DisplayName: displayName,
Activated: true,
BuildId: b.Id,
Project: "sample",
Status: evergreen.TaskUndispatched,
Version: b.Version,
}
b.Tasks = []build.TaskCache{
{
Id: testTask.Id,
Status: evergreen.TaskUndispatched,
},
}
So(b.Insert(), ShouldBeNil)
So(testTask.Insert(), ShouldBeNil)
So(v.Insert(), ShouldBeNil)
Convey("when calling MarkStart, the task, version and build should be updated", func() {
So(MarkStart(testTask.Id), ShouldBeNil)
testTask, err := task.FindOne(task.ById(testTask.Id))
So(err, ShouldBeNil)
So(testTask.Status, ShouldEqual, evergreen.TaskStarted)
b, err := build.FindOne(build.ById(b.Id))
So(err, ShouldBeNil)
So(b.Status, ShouldEqual, evergreen.BuildStarted)
So(b.Tasks, ShouldNotBeNil)
So(len(b.Tasks), ShouldEqual, 1)
So(b.Tasks[0].Status, ShouldEqual, evergreen.TaskStarted)
v, err := version.FindOne(version.ById(v.Id))
So(err, ShouldBeNil)
So(v.Status, ShouldEqual, evergreen.VersionStarted)
})
})
}
示例13: TestAverageStatistics
func TestAverageStatistics(t *testing.T) {
testutil.HandleTestingErr(db.ClearCollections(task.Collection), t, "couldnt reset host")
Convey("With a distro sampleDistro inserted", t, func() {
d := distro.Distro{
Id: "sampleDistro",
}
err := d.Insert()
So(err, ShouldBeNil)
distroId := d.Id
Convey("With a set of tasks that have different scheduled -> start times over a given time period", func() {
now := time.Now()
bucketSize := 10 * time.Second
numberBuckets := 3
task1 := task.Task{Id: "task1", ScheduledTime: now,
StartTime: now.Add(time.Duration(5) * time.Second), Status: evergreen.TaskStarted, DistroId: distroId}
So(task1.Insert(), ShouldBeNil)
task2 := task.Task{Id: "task2", ScheduledTime: now,
StartTime: now.Add(time.Duration(20) * time.Second), Status: evergreen.TaskStarted, DistroId: distroId}
So(task2.Insert(), ShouldBeNil)
task3 := task.Task{Id: "task3", ScheduledTime: now.Add(time.Duration(10) * time.Second),
StartTime: now.Add(time.Duration(20) * time.Second), Status: evergreen.TaskStarted, DistroId: distroId}
So(task3.Insert(), ShouldBeNil)
frameBounds := FrameBounds{
StartTime: now,
EndTime: now.Add(time.Duration(numberBuckets) * bucketSize),
NumberBuckets: numberBuckets,
BucketSize: bucketSize,
}
avgBuckets, err := AverageStatistics(distroId, frameBounds)
So(err, ShouldBeNil)
So(avgBuckets[0].AverageTime, ShouldEqual, 5*time.Second)
So(avgBuckets[1].AverageTime, ShouldEqual, 0)
So(avgBuckets[2].AverageTime, ShouldEqual, 15*time.Second)
Convey("if the distro id given does not exist, it shoud return an empty list", func() {
_, err := AverageStatistics("noId", frameBounds)
So(err, ShouldNotBeNil)
})
})
})
}
示例14: setupCLITestHarness
func setupCLITestHarness() cliTestHarness {
// create a test API server
testServer, err := service.CreateTestServer(testConfig, nil, plugin.APIPlugins, true)
So(err, ShouldBeNil)
So(
db.ClearCollections(
task.Collection,
build.Collection,
user.Collection,
patch.Collection,
model.ProjectRefCollection,
artifact.Collection,
),
ShouldBeNil)
So(db.Clear(patch.Collection), ShouldBeNil)
So(db.Clear(model.ProjectRefCollection), ShouldBeNil)
So((&user.DBUser{Id: "testuser", APIKey: "testapikey", EmailAddress: "[email protected]"}).Insert(), ShouldBeNil)
localConfBytes, err := ioutil.ReadFile(filepath.Join(testutil.GetDirectoryOfFile(), "testdata", "sample.yml"))
So(err, ShouldBeNil)
projectRef := &model.ProjectRef{
Identifier: "sample",
Owner: "evergreen-ci",
Repo: "sample",
RepoKind: "github",
Branch: "master",
RemotePath: "evergreen.yml",
LocalConfig: string(localConfBytes),
Enabled: true,
BatchTime: 180,
}
So(projectRef.Insert(), ShouldBeNil)
// create a settings file for the command line client
settings := model.CLISettings{
APIServerHost: testServer.URL + "/api",
UIServerHost: "http://dev-evg.mongodb.com",
APIKey: "testapikey",
User: "testuser",
}
settingsFile, err := ioutil.TempFile("", "settings")
So(err, ShouldBeNil)
settingsBytes, err := yaml.Marshal(settings)
So(err, ShouldBeNil)
_, err = settingsFile.Write(settingsBytes)
So(err, ShouldBeNil)
settingsFile.Close()
return cliTestHarness{testServer, settingsFile.Name()}
}
示例15: TestAbortTask
func TestAbortTask(t *testing.T) {
Convey("With a task and a build", t, func() {
testutil.HandleTestingErr(db.ClearCollections(task.Collection, build.Collection, version.Collection), t,
"Error clearing task, build, and version collections")
displayName := "testName"
userName := "testUser"
b := &build.Build{
Id: "buildtest",
}
testTask := task.Task{
Id: "testone",
DisplayName: displayName,
Activated: false,
BuildId: b.Id,
Status: evergreen.TaskStarted,
}
finishedTask := task.Task{
Id: "another",
DisplayName: displayName,
Activated: false,
BuildId: b.Id,
Status: evergreen.TaskFailed,
}
b.Tasks = []build.TaskCache{
{
Id: testTask.Id,
},
{
Id: finishedTask.Id,
},
}
So(b.Insert(), ShouldBeNil)
So(testTask.Insert(), ShouldBeNil)
So(finishedTask.Insert(), ShouldBeNil)
Convey("with a task that has started, aborting a task should work", func() {
So(AbortTask(testTask.Id, userName), ShouldBeNil)
testTask, err := task.FindOne(task.ById(testTask.Id))
So(err, ShouldBeNil)
So(testTask.Activated, ShouldEqual, false)
So(testTask.Aborted, ShouldEqual, true)
})
Convey("a task that is finished should error when aborting", func() {
So(AbortTask(finishedTask.Id, userName), ShouldNotBeNil)
})
})
}