blob: a0190b4d6bb2765edb00e1a1cb91408fec7ea2a0 [file] [log] [blame]
package ingest
import (
"bytes"
"encoding/json"
"testing"
"github.com/stretchr/testify/assert"
"go.skia.org/infra/go/sktest"
"go.skia.org/infra/go/testutils"
"go.skia.org/infra/perf/go/ingest/format"
"go.skia.org/infra/perf/go/perfresults"
)
func loadTestdata(t sktest.TestingT, filename string) *perfresults.PerfResults {
pr, err := perfresults.NewResults(testutils.GetReader(t, filename))
assert.NoError(t, err)
return pr
}
func loadTestdataUnmarshal(t sktest.TestingT, filename string) *perfresults.PerfResults {
pr := &perfresults.PerfResults{}
_ = pr.UnmarshalJSON(testutils.ReadFileBytes(t, filename))
return pr
}
func Test_EncodeFormat_PerfResults_ReturnsValidJson(t *testing.T) {
validate := func(filename string, links map[string]string) {
pr := loadTestdata(t, filename)
f := ConvertPerfResultsFormat(pr, "CP:1", nil, links)
b, err := json.Marshal(f)
assert.NoError(t, err)
msg, err := format.Validate(bytes.NewReader(b))
assert.NoErrorf(t, err, "violations: %v", msg)
}
validate("full.json", map[string]string{})
validate("full.json", map[string]string{
"trace_link": "https://www.this.is.com/links/traceXXX",
})
validate("full.json", nil)
validate("empty.json", nil)
validate("merged_diff.json", nil)
validate("valid_metadata.json", nil)
validate("valid_histograms.json", nil)
}
func BenchmarkLoadPerfResultsJSON(b *testing.B) {
b.Run("unmarshal", func(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = loadTestdataUnmarshal(b, "full.json")
}
})
b.Run("decode", func(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = loadTestdata(b, "full.json")
}
})
}