Index: build_scheduler/go/task_scheduler/specs_test.go |
diff --git a/build_scheduler/go/task_scheduler/specs_test.go b/build_scheduler/go/task_scheduler/specs_test.go |
deleted file mode 100644 |
index 7f1338d3eb45d92eb9a9791965b6b91d0be91858..0000000000000000000000000000000000000000 |
--- a/build_scheduler/go/task_scheduler/specs_test.go |
+++ /dev/null |
@@ -1,140 +0,0 @@ |
-package task_scheduler |
- |
-import ( |
- "encoding/json" |
- "path" |
- "testing" |
- "time" |
- |
- assert "github.com/stretchr/testify/require" |
- "go.skia.org/infra/go/gitinfo" |
- "go.skia.org/infra/go/testutils" |
- "go.skia.org/infra/go/util" |
-) |
- |
-func TestTaskSpecs(t *testing.T) { |
- testutils.SkipIfShort(t) |
- |
- tr := util.NewTempRepo() |
- defer tr.Cleanup() |
- |
- repos := gitinfo.NewRepoMap(tr.Dir) |
- cache := newTaskCfgCache(repos) |
- |
- c1 := "c06ac6093d3029dffe997e9d85e8e61fee5f87b9" |
- c2 := "0f87799ac791b8d8573e93694d05b05a65e09668" |
- repo := "skia.git" |
- specs, err := cache.GetTaskSpecsForCommits(map[string][]string{ |
- repo: []string{c1, c2}, |
- }) |
- assert.NoError(t, err) |
- assert.Equal(t, 2, len(specs[repo])) |
- |
- // c1 has a Build and Test task. |
- assert.Equal(t, 2, len(specs[repo][c1])) |
- |
- // c2 adds a Perf task. |
- assert.Equal(t, 3, len(specs[repo][c2])) |
-} |
- |
-func TestTaskCfgCacheCleanup(t *testing.T) { |
- testutils.SkipIfShort(t) |
- |
- tr := util.NewTempRepo() |
- defer tr.Cleanup() |
- |
- repos := gitinfo.NewRepoMap(tr.Dir) |
- cache := newTaskCfgCache(repos) |
- |
- // Load configs into the cache. |
- c1 := "c06ac6093d3029dffe997e9d85e8e61fee5f87b9" |
- c2 := "0f87799ac791b8d8573e93694d05b05a65e09668" |
- repo := "skia.git" |
- _, err := cache.GetTaskSpecsForCommits(map[string][]string{ |
- repo: []string{c1, c2}, |
- }) |
- assert.NoError(t, err) |
- assert.Equal(t, 2, len(cache.cache[repo])) |
- |
- // Cleanup, with a period intentionally designed to remove c1 but not c2. |
- r, err := gitinfo.NewGitInfo(path.Join(tr.Dir, repo), false, false) |
- assert.NoError(t, err) |
- d1, err := r.Details(c1, false) |
- assert.NoError(t, err) |
- // c1 and c2 are about 1 minute apart. |
- period := time.Now().Sub(d1.Timestamp) - 25*time.Second |
- assert.NoError(t, cache.Cleanup(period)) |
- assert.Equal(t, 1, len(cache.cache[repo])) |
-} |
- |
-func TestTasksCircularDependency(t *testing.T) { |
- makeTasksCfg := func(tasks map[string][]string) string { |
- specs := make(map[string]*TaskSpec, len(tasks)) |
- for name, deps := range tasks { |
- specs[name] = &TaskSpec{ |
- CipdPackages: []*CipdPackage{}, |
- Dependencies: deps, |
- Dimensions: []string{}, |
- Isolate: "abc123", |
- Priority: 0.0, |
- } |
- } |
- cfg := TasksCfg{ |
- Tasks: specs, |
- } |
- c, err := json.Marshal(&cfg) |
- assert.NoError(t, err) |
- return string(c) |
- } |
- |
- // Bonus: Unknown dependency. |
- _, err := ParseTasksCfg(makeTasksCfg(map[string][]string{ |
- "a": []string{"b"}, |
- })) |
- assert.EqualError(t, err, "Task \"a\" has unknown task \"b\" as a dependency.") |
- |
- // No tasks. |
- _, err = ParseTasksCfg(makeTasksCfg(map[string][]string{})) |
- assert.NoError(t, err) |
- |
- // Single-node cycle. |
- _, err = ParseTasksCfg(makeTasksCfg(map[string][]string{ |
- "a": []string{"a"}, |
- })) |
- assert.EqualError(t, err, "Found a circular dependency involving \"a\" and \"a\"") |
- |
- // Small cycle. |
- _, err = ParseTasksCfg(makeTasksCfg(map[string][]string{ |
- "a": []string{"b"}, |
- "b": []string{"a"}, |
- })) |
- // Can't use a specific error message because map iteration order is non-deterministic. |
- assert.Error(t, err) |
- |
- // Longer cycle. |
- _, err = ParseTasksCfg(makeTasksCfg(map[string][]string{ |
- "a": []string{"b"}, |
- "b": []string{"c"}, |
- "c": []string{"d"}, |
- "d": []string{"e"}, |
- "e": []string{"f"}, |
- "f": []string{"g"}, |
- "g": []string{"h"}, |
- "h": []string{"i"}, |
- "i": []string{"j"}, |
- "j": []string{"a"}, |
- })) |
- assert.Error(t, err) |
- |
- // No false positive on a complex-ish graph. |
- _, err = ParseTasksCfg(makeTasksCfg(map[string][]string{ |
- "a": []string{}, |
- "b": []string{"a"}, |
- "c": []string{"a"}, |
- "d": []string{"b"}, |
- "e": []string{"b"}, |
- "f": []string{"c"}, |
- "g": []string{"d", "e", "f"}, |
- })) |
- assert.NoError(t, err) |
-} |