blob: 0c89b0976bfeb11c2c4c7bedb591ac2e4ce4586a [file] [log] [blame]
package scheduling
import (
"testing"
"time"
"go.skia.org/infra/go/testutils"
"go.skia.org/infra/task_scheduler/go/db"
"go.skia.org/infra/task_scheduler/go/specs"
"github.com/stretchr/testify/assert"
)
func TestCopyTaskCandidate(t *testing.T) {
testutils.SmallTest(t)
v := &taskCandidate{
Attempt: 3,
Commits: []string{"a", "b"},
IsolatedInput: "lonely-parameter",
IsolatedHashes: []string{"browns"},
JobCreated: time.Now(),
ParentTaskIds: []string{"38", "39", "40"},
RetryOf: "41",
Score: 99,
StealingFromId: "rich",
TaskKey: db.TaskKey{
RepoState: db.RepoState{
Repo: "nou.git",
Revision: "1",
},
Name: "Build",
},
TaskSpec: &specs.TaskSpec{
Isolate: "confine",
},
}
testutils.AssertCopy(t, v, v.Copy())
}
func TestTaskCandidateId(t *testing.T) {
testutils.SmallTest(t)
t1 := makeTaskCandidate("task1", []string{"k:v"})
t1.Repo = "Myrepo"
t1.Revision = "abc123"
t1.ForcedJobId = "someID"
id1 := t1.MakeId()
k1, err := parseId(id1)
assert.NoError(t, err)
assert.Equal(t, t1.TaskKey, k1)
// ForcedJobId is allowed to be empty.
t1.ForcedJobId = ""
id1 = t1.MakeId()
k1, err = parseId(id1)
assert.NoError(t, err)
assert.Equal(t, t1.TaskKey, k1)
// Test a try job.
t1.Server = "https://my-patch.com"
t1.Issue = "10101"
t1.Patchset = "42"
id1 = t1.MakeId()
k1, err = parseId(id1)
assert.NoError(t, err)
assert.Equal(t, t1.TaskKey, k1)
badIds := []string{
"",
"taskCandidate|a",
"taskCandidate|a|b||ab",
"20160831T000018.497703717Z_000000000000015b",
}
for _, id := range badIds {
_, err := parseId(id)
assert.Error(t, err)
}
}
func TestReplaceVar(t *testing.T) {
testutils.SmallTest(t)
c := makeTaskCandidate("c", []string{"k:v"})
c.Repo = "my-repo"
c.Revision = "abc123"
c.Name = "my-task"
assert.Equal(t, "", replaceVars(c, ""))
assert.Equal(t, "my-repo", replaceVars(c, "<(REPO)"))
assert.Equal(t, "my-task", replaceVars(c, "<(TASK_NAME)"))
assert.Equal(t, "abc123", replaceVars(c, "<(REVISION)"))
assert.Equal(t, "<(REVISION", replaceVars(c, "<(REVISION"))
assert.Equal(t, "my-repo_my-task_abc123", replaceVars(c, "<(REPO)_<(TASK_NAME)_<(REVISION)"))
}