Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1276)

Unified Diff: build_scheduler/go/db/comments_test.go

Issue 2296763008: [task scheduler] Move files from build_scheduler/ to task_scheduler/ (Closed) Base URL: https://skia.googlesource.com/buildbot@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build_scheduler/go/db/comments.go ('k') | build_scheduler/go/db/db.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build_scheduler/go/db/comments_test.go
diff --git a/build_scheduler/go/db/comments_test.go b/build_scheduler/go/db/comments_test.go
deleted file mode 100644
index f6f08d9e0b7b4f5c3c35c8b0020721f4efaa4dd5..0000000000000000000000000000000000000000
--- a/build_scheduler/go/db/comments_test.go
+++ /dev/null
@@ -1,276 +0,0 @@
-package db
-
-import (
- "fmt"
- "testing"
- "time"
-
- assert "github.com/stretchr/testify/require"
-
- "go.skia.org/infra/go/testutils"
-)
-
-// TestCommentBox checks that CommentBox correctly implements CommentDB.
-func TestCommentBox(t *testing.T) {
- TestCommentDB(t, &CommentBox{})
-}
-
-// TestCommentBoxWithPersistence checks that NewCommentBoxWithPersistence can be
-// initialized with a persisted map and will correctly write changes to the
-// provided writer.
-func TestCommentBoxWithPersistence(t *testing.T) {
- expected := map[string]*RepoComments{}
- callCount := 0
- testWriter := func(actual map[string]*RepoComments) error {
- callCount++
- testutils.AssertDeepEqual(t, expected, actual)
- return nil
- }
-
- db := NewCommentBoxWithPersistence(nil, testWriter)
-
- now := time.Now()
-
- assert.Equal(t, 0, callCount)
-
- // Add some comments.
- tc1 := makeTaskComment(1, 1, 1, 1, now)
- expected["r1"] = &RepoComments{
- Repo: "r1",
- TaskComments: map[string]map[string][]*TaskComment{"n1": {"c1": {tc1}}},
- TaskSpecComments: map[string][]*TaskSpecComment{},
- CommitComments: map[string][]*CommitComment{},
- }
- assert.NoError(t, db.PutTaskComment(tc1))
-
- tc2 := makeTaskComment(2, 1, 1, 1, now.Add(2*time.Second))
- expected["r1"].TaskComments["n1"]["c1"] = []*TaskComment{tc1, tc2}
- assert.NoError(t, db.PutTaskComment(tc2))
-
- tc3 := makeTaskComment(3, 1, 1, 1, now.Add(time.Second))
- expected["r1"].TaskComments["n1"]["c1"] = []*TaskComment{tc1, tc3, tc2}
- assert.NoError(t, db.PutTaskComment(tc3))
-
- tc4 := makeTaskComment(4, 1, 1, 2, now)
- expected["r1"].TaskComments["n1"]["c2"] = []*TaskComment{tc4}
- assert.NoError(t, db.PutTaskComment(tc4))
-
- tc5 := makeTaskComment(5, 1, 2, 2, now)
- expected["r1"].TaskComments["n2"] = map[string][]*TaskComment{"c2": {tc5}}
- assert.NoError(t, db.PutTaskComment(tc5))
-
- tc6 := makeTaskComment(6, 2, 3, 3, now)
- expected["r2"] = &RepoComments{
- Repo: "r2",
- TaskComments: map[string]map[string][]*TaskComment{"n3": {"c3": {tc6.Copy()}}},
- TaskSpecComments: map[string][]*TaskSpecComment{},
- CommitComments: map[string][]*CommitComment{},
- }
- assert.NoError(t, db.PutTaskComment(tc6))
-
- tc6copy := tc6.Copy() // Adding identical comment should be ignored.
- assert.NoError(t, db.PutTaskComment(tc6copy))
- tc6.Message = "modifying after Put shouldn't affect stored comment"
-
- assert.True(t, callCount >= 6)
-
- sc1 := makeTaskSpecComment(1, 1, 1, now)
- expected["r1"].TaskSpecComments["n1"] = []*TaskSpecComment{sc1}
- assert.NoError(t, db.PutTaskSpecComment(sc1))
-
- cc1 := makeCommitComment(1, 1, 1, now)
- expected["r1"].CommitComments["c1"] = []*CommitComment{cc1}
- assert.NoError(t, db.PutCommitComment(cc1))
-
- assert.True(t, callCount >= 8)
- callCount = 0
-
- // Check that if there's an error adding, testWriter is not called.
- tc1different := tc1.Copy()
- tc1different.Message = "not the same"
- assert.True(t, IsAlreadyExists(db.PutTaskComment(tc1different)))
- sc1different := sc1.Copy()
- sc1different.Message = "not the same"
- assert.True(t, IsAlreadyExists(db.PutTaskSpecComment(sc1different)))
- cc1different := cc1.Copy()
- cc1different.Message = "not the same"
- assert.True(t, IsAlreadyExists(db.PutCommitComment(cc1different)))
-
- assert.Equal(t, 0, callCount)
-
- // Reload DB from persistent.
- init := map[string]*RepoComments{
- "r1": expected["r1"].Copy(),
- "r2": expected["r2"].Copy(),
- }
- db = NewCommentBoxWithPersistence(init, testWriter)
-
- {
- actual, err := db.GetCommentsForRepos([]string{"r0", "r1", "r2"}, now.Add(-10000*time.Hour))
- assert.NoError(t, err)
- expectedSlice := []*RepoComments{
- &RepoComments{Repo: "r0"},
- expected["r1"],
- expected["r2"],
- }
- testutils.AssertDeepEqual(t, expectedSlice, actual)
- }
-
- assert.Equal(t, 0, callCount)
-
- // Delete some comments.
- expected["r1"].TaskComments["n1"]["c1"] = []*TaskComment{tc1, tc2}
- assert.NoError(t, db.DeleteTaskComment(tc3))
- expected["r1"].TaskSpecComments = map[string][]*TaskSpecComment{}
- assert.NoError(t, db.DeleteTaskSpecComment(sc1))
- expected["r1"].CommitComments = map[string][]*CommitComment{}
- assert.NoError(t, db.DeleteCommitComment(cc1))
-
- assert.Equal(t, 3, callCount)
-
- // Delete of nonexistent task should succeed.
- assert.NoError(t, db.DeleteTaskComment(makeTaskComment(99, 1, 1, 1, now.Add(99*time.Second))))
- assert.NoError(t, db.DeleteTaskComment(makeTaskComment(99, 1, 1, 99, now)))
- assert.NoError(t, db.DeleteTaskComment(makeTaskComment(99, 1, 99, 1, now)))
- assert.NoError(t, db.DeleteTaskComment(makeTaskComment(99, 99, 1, 1, now)))
- assert.NoError(t, db.DeleteTaskSpecComment(makeTaskSpecComment(99, 1, 1, now.Add(99*time.Second))))
- assert.NoError(t, db.DeleteTaskSpecComment(makeTaskSpecComment(99, 1, 99, now)))
- assert.NoError(t, db.DeleteTaskSpecComment(makeTaskSpecComment(99, 99, 1, now)))
- assert.NoError(t, db.DeleteCommitComment(makeCommitComment(99, 1, 1, now.Add(99*time.Second))))
- assert.NoError(t, db.DeleteCommitComment(makeCommitComment(99, 1, 99, now)))
- assert.NoError(t, db.DeleteCommitComment(makeCommitComment(99, 99, 1, now)))
-
- {
- actual, err := db.GetCommentsForRepos([]string{"r0", "r1", "r2"}, now.Add(-10000*time.Hour))
- assert.NoError(t, err)
- expectedSlice := []*RepoComments{
- &RepoComments{Repo: "r0"},
- expected["r1"],
- expected["r2"],
- }
- testutils.AssertDeepEqual(t, expectedSlice, actual)
- }
-
- // Reload DB from persistent again.
- init = map[string]*RepoComments{
- "r1": expected["r1"].Copy(),
- "r2": expected["r2"].Copy(),
- }
- db = NewCommentBoxWithPersistence(init, testWriter)
-
- {
- actual, err := db.GetCommentsForRepos([]string{"r0", "r1", "r2"}, now.Add(-10000*time.Hour))
- assert.NoError(t, err)
- expectedSlice := []*RepoComments{
- &RepoComments{Repo: "r0"},
- expected["r1"],
- expected["r2"],
- }
- testutils.AssertDeepEqual(t, expectedSlice, actual)
- }
-}
-
-// TestCommentBoxWithPersistenceError verifies that when the writer passed to
-// NewCommentBoxWithPersistence returns an error, the modification does not take
-// effect.
-func TestCommentBoxWithPersistenceError(t *testing.T) {
- callCount := 0
- var injectedError error = nil
- testWriter := func(actual map[string]*RepoComments) error {
- callCount++
- return injectedError
- }
-
- db := NewCommentBoxWithPersistence(nil, testWriter)
-
- now := time.Now()
-
- // Add some comments.
- tc1 := makeTaskComment(1, 1, 1, 1, now)
- tc2 := makeTaskComment(2, 1, 1, 1, now.Add(2*time.Second))
- tc3 := makeTaskComment(3, 1, 1, 1, now.Add(time.Second))
- tc4 := makeTaskComment(4, 1, 1, 2, now)
- tc5 := makeTaskComment(5, 1, 2, 2, now)
- tc6 := makeTaskComment(6, 2, 3, 3, now)
- for _, c := range []*TaskComment{tc1, tc2, tc3, tc4, tc5, tc6} {
- assert.NoError(t, db.PutTaskComment(c))
- }
-
- sc1 := makeTaskSpecComment(1, 1, 1, now)
- assert.NoError(t, db.PutTaskSpecComment(sc1))
-
- cc1 := makeCommitComment(1, 1, 1, now)
- assert.NoError(t, db.PutCommitComment(cc1))
-
- expected := []*RepoComments{
- &RepoComments{
- Repo: "r1",
- TaskComments: map[string]map[string][]*TaskComment{
- "n1": {
- "c1": {tc1, tc3, tc2},
- "c2": {tc4},
- },
- "n2": {
- "c2": {tc5},
- },
- },
- TaskSpecComments: map[string][]*TaskSpecComment{
- "n1": {sc1},
- },
- CommitComments: map[string][]*CommitComment{
- "c1": {cc1},
- },
- },
- &RepoComments{
- Repo: "r2",
- TaskComments: map[string]map[string][]*TaskComment{
- "n3": {
- "c3": {tc6},
- },
- },
- TaskSpecComments: map[string][]*TaskSpecComment{},
- CommitComments: map[string][]*CommitComment{},
- },
- }
-
- {
- actual, err := db.GetCommentsForRepos([]string{"r1", "r2"}, now.Add(-10000*time.Hour))
- assert.NoError(t, err)
- testutils.AssertDeepEqual(t, expected, actual)
- }
-
- callCount = 0
-
- injectedError = fmt.Errorf("No comments from the peanut gallery.")
-
- assert.Error(t, db.PutTaskComment(makeTaskComment(99, 1, 1, 1, now.Add(99*time.Second))))
- assert.Error(t, db.PutTaskComment(makeTaskComment(99, 1, 1, 99, now)))
- assert.Error(t, db.PutTaskComment(makeTaskComment(99, 1, 99, 1, now)))
- assert.Error(t, db.PutTaskComment(makeTaskComment(99, 99, 1, 1, now)))
- assert.Error(t, db.PutTaskSpecComment(makeTaskSpecComment(99, 1, 1, now.Add(99*time.Second))))
- assert.Error(t, db.PutTaskSpecComment(makeTaskSpecComment(99, 1, 99, now)))
- assert.Error(t, db.PutTaskSpecComment(makeTaskSpecComment(99, 99, 1, now)))
- assert.Error(t, db.PutCommitComment(makeCommitComment(99, 1, 1, now.Add(99*time.Second))))
- assert.Error(t, db.PutCommitComment(makeCommitComment(99, 1, 99, now)))
- assert.Error(t, db.PutCommitComment(makeCommitComment(99, 99, 1, now)))
-
- assert.Equal(t, 10, callCount)
-
- // Assert nothing has changed.
- {
- actual, err := db.GetCommentsForRepos([]string{"r1", "r2"}, now.Add(-10000*time.Hour))
- assert.NoError(t, err)
- testutils.AssertDeepEqual(t, expected, actual)
- }
-
- assert.Error(t, db.DeleteTaskComment(tc1))
- assert.Error(t, db.DeleteTaskSpecComment(sc1))
- assert.Error(t, db.DeleteCommitComment(cc1))
-
- // Assert nothing has changed.
- {
- actual, err := db.GetCommentsForRepos([]string{"r1", "r2"}, now.Add(-10000*time.Hour))
- assert.NoError(t, err)
- testutils.AssertDeepEqual(t, expected, actual)
- }
-}
« no previous file with comments | « build_scheduler/go/db/comments.go ('k') | build_scheduler/go/db/db.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698