| package ingestion_processors |
| |
| import ( |
| "context" |
| "testing" |
| "time" |
| |
| "github.com/stretchr/testify/assert" |
| "github.com/stretchr/testify/mock" |
| |
| "go.skia.org/infra/go/testutils" |
| "go.skia.org/infra/go/testutils/unittest" |
| "go.skia.org/infra/go/vcsinfo" |
| mock_vcs "go.skia.org/infra/go/vcsinfo/mocks" |
| ingestion_mocks "go.skia.org/infra/golden/go/ingestion/mocks" |
| "go.skia.org/infra/golden/go/mocks" |
| "go.skia.org/infra/golden/go/tracestore" |
| "go.skia.org/infra/golden/go/types" |
| ) |
| |
| // TestTraceStoreProcessorSunnyDay tests that the ingestion makes the right calls |
| // to the VCS and the Tracestore for the sample file in testdata/. |
| func TestTraceStoreProcessorSunnyDay(t *testing.T) { |
| unittest.MediumTest(t) |
| |
| mts := &mocks.TraceStore{} |
| mvs := &mock_vcs.VCS{} |
| defer mts.AssertExpectations(t) |
| defer mvs.AssertExpectations(t) |
| |
| commit := &vcsinfo.LongCommit{ |
| ShortCommit: &vcsinfo.ShortCommit{ |
| Hash: testCommitHash, |
| Subject: "Really big code change", |
| }, |
| // arbitrary time |
| Timestamp: time.Date(2019, time.June, 16, 3, 23, 17, 0, time.UTC), |
| } |
| mvs.On("Details", testutils.AnyContext, testCommitHash, false).Return(commit, nil) |
| // arbitrary result |
| mvs.On("IndexOf", testutils.AnyContext, testCommitHash).Return(12, nil) |
| |
| // There are 3 entries in the file, but one of them is pdf, which should |
| // be ignored by this ingester. |
| expectedEntries := []*tracestore.Entry{ |
| { |
| Params: map[string]string{ |
| "arch": "x86_64", |
| "compiler": "MSVC", |
| "config": "pipe-8888", |
| "configuration": "Debug", |
| "cpu_or_gpu": "CPU", |
| "cpu_or_gpu_value": "AVX2", |
| "model": "ShuttleB", |
| types.PrimaryKeyField: "aaclip", |
| "os": "Win8", |
| types.CorpusField: "gm", |
| }, |
| Options: map[string]string{ |
| "ext": "png", |
| }, |
| Digest: "fa3c371d201d6f88f7a47b41862e2e85", |
| }, |
| { |
| Params: map[string]string{ |
| "arch": "x86_64", |
| "compiler": "MSVC", |
| "config": "pipe-8888", |
| "configuration": "Debug", |
| "cpu_or_gpu": "CPU", |
| "cpu_or_gpu_value": "AVX2", |
| "model": "ShuttleB", |
| types.PrimaryKeyField: "clipcubic", |
| "os": "Win8", |
| types.CorpusField: "gm", |
| }, |
| Options: map[string]string{ |
| "ext": "png", |
| }, |
| Digest: "64e446d96bebba035887dd7dda6db6c4", |
| }, |
| } |
| |
| mts.On("Put", testutils.AnyContext, testCommitHash, expectedEntries, mock.AnythingOfType("time.Time")).Return(nil) |
| |
| fsResult, err := ingestion_mocks.MockResultFileLocationFromFile(dmJSONFile) |
| assert.NoError(t, err) |
| |
| p := &btProcessor{ |
| ts: mts, |
| vcs: mvs, |
| } |
| err = p.Process(context.Background(), fsResult) |
| assert.NoError(t, err) |
| } |
| |
| const ( |
| testCommitHash = "02cb37309c01506e2552e931efa9c04a569ed266" |
| ) |