blob: a5a44cbdf76c723e641b7db706b2486d40a52cb2 [file] [log] [blame]
package ptraceingest
import (
"io/ioutil"
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
"go.skia.org/infra/go/ingestion"
"go.skia.org/infra/go/mockhttpclient"
"go.skia.org/infra/go/rietveld"
"go.skia.org/infra/go/sharedconfig"
"go.skia.org/infra/go/testutils"
"go.skia.org/infra/perf/go/cid"
"go.skia.org/infra/perf/go/ingestcommon"
"go.skia.org/infra/perf/go/ptracestore"
)
// TestTrybotBenchData tests parsing and processing of a single trybot file.
func TestTrybotBenchData(t *testing.T) {
testutils.SmallTest(t)
// Load the sample data file as BenchData.
r, err := os.Open(filepath.Join(TEST_DATA_DIR, "trybot.json"))
assert.NoError(t, err)
benchData, err := ingestcommon.ParseBenchDataFromReader(r)
assert.NoError(t, err)
traceSet := getValueMap(benchData)
expected := map[string]float32{
",arch=x86_64,bench_type=micro,compiler=Clang,config=gpu,cpu_or_gpu=GPU,cpu_or_gpu_value=GeForce320M,model=MacMini4.1,name=GLInstancedArraysBench_instance,os=Mac10.8,source_type=bench,sub_result=min_ms,test=GLInstancedArraysBench_instance_640_480,": 0.0052282223,
",arch=x86_64,bench_type=micro,compiler=Clang,config=gpu,cpu_or_gpu=GPU,cpu_or_gpu_value=GeForce320M,model=MacMini4.1,name=GLInstancedArraysBench_one_0,os=Mac10.8,source_type=bench,sub_result=min_ms,test=GLInstancedArraysBench_one_0_640_480,": 7.122931e-06}
testutils.AssertDeepEqual(t, expected, traceSet)
}
// Tests the processor in conjunction with Rietveld.
func TestPerfTrybotProcessor(t *testing.T) {
testutils.MediumTest(t)
orig := ptracestore.Default
dir, err := ioutil.TempDir("", "ptrace")
assert.NoError(t, err)
ptracestore.Default, err = ptracestore.New(dir)
assert.NoError(t, err)
defer func() {
ptracestore.Default = orig
testutils.RemoveAll(t, dir)
}()
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", mockhttpclient.MockGetDialogue(b))
m.Mock("https://chromium-cq-status.appspot.com/v2/patch-summary/codereview.chromium.org/2320153002/840001", mockhttpclient.MockGetDialogue([]byte("{}")))
ingesterConf := &sharedconfig.IngesterConfig{}
processor, err := newPerfTrybotProcessor(nil, ingesterConf, nil)
assert.NoError(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.NoError(t, err)
err = processor.Process(fsResult)
assert.NoError(t, err)
traceId := ",arch=x86_64,bench_type=micro,compiler=Clang,config=gpu,cpu_or_gpu=GPU,cpu_or_gpu_value=GeForce320M,model=MacMini4.1,name=GLInstancedArraysBench_one_0,os=Mac10.8,source_type=bench,sub_result=min_ms,test=GLInstancedArraysBench_one_0_640_480,"
expectedValue := float32(7.122931e-06)
cid := &cid.CommitID{
Source: "https://codereview.chromium.org/1467533002",
Offset: 2,
}
source, value, err := ptracestore.Default.Details(cid, traceId)
assert.NoError(t, err)
assert.Equal(t, expectedValue, value)
assert.Equal(t, "trybot.json", source)
}