func TestTrybotPerfIngestion(t *testing.T) { b, err := ioutil.ReadFile(filepath.Join("testdata", "rietveld_response.txt")) assert.NoError(t, err) m := mockhttpclient.NewURLMock() m.Mock("https://codereview.chromium.org/api/1467533002/1", b) server, serverAddr := ingestion.StartTraceDBTestServer(t, "./trybot_test_trace.db") defer server.Stop() defer testutils.Remove(t, "./trybot_test_trace.db") ingesterConf := &sharedconfig.IngesterConfig{ ExtraParams: map[string]string{ CONFIG_TRACESERVICE: serverAddr, }, } processor, err := newPerfTrybotProcessor(nil, ingesterConf, nil) assert.Nil(t, err) processor.(*perfTrybotProcessor).review = rietveld.New("https://codereview.chromium.org", m.Client()) fsResult, err := ingestion.FileSystemResult(filepath.Join(TEST_DATA_DIR, "trybot.json"), TEST_DATA_DIR) assert.Nil(t, err) err = processor.Process(fsResult) assert.Nil(t, err) assert.Equal(t, 1, len(processor.(*perfTrybotProcessor).cache)) // Steal the traceDB used by the processor to verify the results. traceDB := processor.(*perfTrybotProcessor).traceDB startTime := time.Time{} commitIDs, err := traceDB.List(startTime, time.Now()) assert.Nil(t, err) assert.Equal(t, 1, len(commitIDs)) assert.Equal(t, &tracedb.CommitID{ Timestamp: 1448036640, ID: "1", Source: "https://codereview.chromium.org/1467533002", }, commitIDs[0]) // Get a tile and make sure we have the right number of traces. tile, _, err := traceDB.TileFromCommits(commitIDs) assert.Nil(t, err) traces := tile.Traces assert.Equal(t, 2, len(traces)) assert.Nil(t, traceDB.Close()) }
// setup initializes a fake AutoRoller for testing. It returns the working // directory, AutoRoller instance, URLMock for faking HTTP requests, and an // rietveld.Issue representing the first CL that was uploaded by the AutoRoller. func setup(t *testing.T) (string, *AutoRoller, *mockRepoManager, *mockRietveld, *rietveld.Issue) { testutils.SkipIfShort(t) // Setup mocks. urlMock := mockhttpclient.NewURLMock() urlMock.Mock(fmt.Sprintf("%s/xsrf_token", autoroll.RIETVELD_URL), []byte("abc123")) rv := &mockRietveld{ fakeIssueNum: 10001, r: rietveld.New(autoroll.RIETVELD_URL, urlMock.Client()), t: t, urlMock: urlMock, } rm := &mockRepoManager{t: t} repo_manager.NewRepoManager = func(workdir string, frequency time.Duration, depot_tools string) (repo_manager.RepoManager, error) { return rm, nil } workdir, err := ioutil.TempDir("", "test_autoroll_mode_") assert.Nil(t, err) // Set up more test data. initialCommit := "abc1231010101010101010101010101010101010" rm.mockSkiaCommit(initialCommit) rm.mockSkiaCommit("def4561010101010101010101010101010101010") rm.mockLastRollRev(initialCommit) rm.mockRolledPast(initialCommit, true) roll1 := rm.rollerWillUpload(rv, rm.LastRollRev(), rm.SkiaHead(), noTrybots, false) // Create the roller. roller, err := NewAutoRoller(workdir, []string{}, []string{}, rv.r, time.Hour, time.Hour, "depot_tools") assert.Nil(t, err) // Verify that the bot ran successfully. checkStatus(t, roller, rv, rm, STATUS_IN_PROGRESS, roll1, noTrybots, false, nil, nil, false) return workdir, roller, rm, rv, roll1 }
func TestPertTrace(t *testing.T) { b, err := ioutil.ReadFile(filepath.Join("testdata", "rietveld_response.txt")) assert.Nil(t, err) m := mockhttpclient.NewURLMock() // Mock this only once to confirm that caching works. m.MockOnce("https://codereview.chromium.org/api/1490543002", b) review := rietveld.New(rietveld.RIETVELD_SKIA_URL, util.NewTimeoutClient()) vcsCommits := []*vcsinfo.LongCommit{ &vcsinfo.LongCommit{ ShortCommit: &vcsinfo.ShortCommit{ Hash: "foofoofoo", Author: "*****@*****.**", Subject: "some commit", }, }, } vcs := ingestion.MockVCS(vcsCommits) builder := &Builder{ Builder: nil, vcs: vcs, review: review, cache: map[string]*rietveld.Issue{}, } commits := []*db.CommitID{ &db.CommitID{ Timestamp: time.Now(), ID: "1", Source: "https://codereview.chromium.org/1490543002", }, &db.CommitID{ Timestamp: time.Now(), ID: "foofoofoo", Source: "master", }, } long := builder.convertToLongCommits(commits, "master") assert.Equal(t, 1, len(long), "Only one commit should match master.") assert.Equal(t, "foofoofoo", long[0].ID) assert.Equal(t, "some commit", long[0].Desc) assert.Equal(t, "*****@*****.**", long[0].Author) long = builder.convertToLongCommits(commits, "https://codereview.chromium.org/1490543002") assert.Equal(t, 1, len(long), "Only one commit should match the trybot.") assert.Equal(t, "1", long[0].ID) assert.Equal(t, "no merge conflicts here.", long[0].Desc) assert.Equal(t, "jcgregorio", long[0].Author) long = builder.convertToLongCommits(commits, "") assert.Equal(t, 2, len(long), "Both commits should now appear.") assert.Equal(t, "1", long[0].ID) assert.Equal(t, "no merge conflicts here.", long[0].Desc) assert.Equal(t, "jcgregorio", long[0].Author) assert.Equal(t, "foofoofoo", long[1].ID) assert.Equal(t, "some commit", long[1].Desc) assert.Equal(t, "*****@*****.**", long[1].Author) badCommits := []*db.CommitID{ &db.CommitID{ Timestamp: time.Now(), ID: "2", Source: "https://codereview.chromium.org/99999999", }, &db.CommitID{ Timestamp: time.Now(), ID: "barbarbar", Source: "master", }, } long = builder.convertToLongCommits(badCommits, "") assert.Equal(t, 2, len(long), "Both commits should now appear.") assert.Equal(t, "2", long[0].ID) assert.Equal(t, "", long[0].Desc) assert.Equal(t, "", long[0].Author) assert.Equal(t, "barbarbar", long[1].ID) assert.Equal(t, "", long[1].Desc) assert.Equal(t, "", long[1].Author) }