[perf] Add more tracing to ingestion.
Change-Id: I2735c9cc6ed861b95c6fe7e7c2268f835b499920
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/706519
Auto-Submit: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
diff --git a/perf/go/ingest/parser/BUILD.bazel b/perf/go/ingest/parser/BUILD.bazel
index 8831e77..db970e6 100644
--- a/perf/go/ingest/parser/BUILD.bazel
+++ b/perf/go/ingest/parser/BUILD.bazel
@@ -17,6 +17,7 @@
"//perf/go/file",
"//perf/go/ingest/format",
"//perf/go/types",
+ "@io_opencensus_go//trace",
],
)
diff --git a/perf/go/ingest/parser/parser.go b/perf/go/ingest/parser/parser.go
index ff8ddcf..1ace256 100644
--- a/perf/go/ingest/parser/parser.go
+++ b/perf/go/ingest/parser/parser.go
@@ -3,6 +3,7 @@
import (
"bytes"
+ "context"
"errors"
"io"
"io/ioutil"
@@ -10,6 +11,7 @@
"strconv"
"strings"
+ "go.opencensus.io/trace"
"go.skia.org/infra/go/metrics2"
"go.skia.org/infra/go/paramtools"
"go.skia.org/infra/go/query"
@@ -243,7 +245,10 @@
// processed any further.
//
// The File.Contents will be closed when this func returns.
-func (p *Parser) Parse(file file.File) ([]paramtools.Params, []float32, string, error) {
+func (p *Parser) Parse(ctx context.Context, file file.File) ([]paramtools.Params, []float32, string, error) {
+ _, span := trace.StartSpan(ctx, "ingest.parser.Parse")
+ defer span.End()
+
defer util.Close(file.Contents)
p.parseCounter.Inc(1)
diff --git a/perf/go/ingest/parser/parser_test.go b/perf/go/ingest/parser/parser_test.go
index 17e6671..aedce6c 100644
--- a/perf/go/ingest/parser/parser_test.go
+++ b/perf/go/ingest/parser/parser_test.go
@@ -2,6 +2,7 @@
package parser
import (
+ "context"
"fmt"
"io/ioutil"
"path/filepath"
@@ -129,7 +130,7 @@
}
func parse_Success(t *testing.T, p *Parser, f file.File) {
- params, values, gitHash, err := p.Parse(f)
+ params, values, gitHash, err := p.Parse(context.Background(), f)
require.NoError(t, err)
assert.Equal(t, "fe4a4029a080bc955e9588d05a6cd9eb490845d4", gitHash)
assert.Len(t, values, 4)
@@ -151,7 +152,7 @@
func parse_NoBranchSpecified_Success(t *testing.T, p *Parser, f file.File) {
p.branchNames = nil
- params, values, gitHash, err := p.Parse(f)
+ params, values, gitHash, err := p.Parse(context.Background(), f)
require.NoError(t, err)
assert.Equal(t, "fe4a4029a080bc955e9588d05a6cd9eb490845d4", gitHash)
assert.Len(t, values, 4)
@@ -163,7 +164,7 @@
}
func parse_MalformedJSONError(t *testing.T, p *Parser, f file.File) {
- _, _, _, err := p.Parse(f)
+ _, _, _, err := p.Parse(context.Background(), f)
require.Error(t, err)
assert.NotEqual(t, ErrFileShouldBeSkipped, err)
assert.Equal(t, int64(1), p.parseCounter.Get())
@@ -178,21 +179,21 @@
}
func parse_SkipIfNotListedInBranches(t *testing.T, p *Parser, f file.File) {
- _, _, _, err := p.Parse(f)
+ _, _, _, err := p.Parse(context.Background(), f)
assert.Equal(t, ErrFileShouldBeSkipped, err)
assert.Equal(t, int64(1), p.parseCounter.Get())
assert.Equal(t, int64(0), p.parseFailCounter.Get())
}
func parse_SkipIfListedInBranchesButHasNoData(t *testing.T, p *Parser, f file.File) {
- _, _, _, err := p.Parse(f)
+ _, _, _, err := p.Parse(context.Background(), f)
assert.Equal(t, ErrFileShouldBeSkipped, err)
assert.Equal(t, int64(1), p.parseCounter.Get())
assert.Equal(t, int64(0), p.parseFailCounter.Get())
}
func parse_OnlyOneMeasurementInfile(t *testing.T, p *Parser, f file.File) {
- params, values, gitHash, err := p.Parse(f)
+ params, values, gitHash, err := p.Parse(context.Background(), f)
require.NoError(t, err)
assert.Len(t, params, 1)
assert.Equal(t, "fe4a4029a080bc955e9588d05a6cd9eb490845d4", gitHash)
@@ -200,7 +201,7 @@
}
func parse_OnlyOneMeasurementWithValueZeroInfile(t *testing.T, p *Parser, f file.File) {
- params, values, gitHash, err := p.Parse(f)
+ params, values, gitHash, err := p.Parse(context.Background(), f)
require.NoError(t, err)
assert.Len(t, params, 1)
assert.Equal(t, "fe4a4029a080bc955e9588d05a6cd9eb490845d4", gitHash)
@@ -223,7 +224,7 @@
func parse_ReadErr(t *testing.T, p *Parser, f file.File) {
f.Contents = ioutil.NopCloser(alwaysErrReader{})
- _, _, _, err := p.Parse(f)
+ _, _, _, err := p.Parse(context.Background(), f)
require.Error(t, err)
assert.Equal(t, int64(1), p.parseCounter.Get())
assert.Equal(t, int64(1), p.parseFailCounter.Get())
@@ -239,7 +240,7 @@
}
func parse_WithCommitNumberSpecified_Success(t *testing.T, p *Parser, f file.File) {
- params, values, gitHash, err := p.Parse(f)
+ params, values, gitHash, err := p.Parse(context.Background(), f)
require.NoError(t, err)
commitNumber, err := p.ParseCommitNumberFromGitHash(gitHash)
require.NoError(t, err)
@@ -253,7 +254,7 @@
}
func parse_InvalidCommitNumber_Error(t *testing.T, p *Parser, f file.File) {
- _, _, gitHash, err := p.Parse(f)
+ _, _, gitHash, err := p.Parse(context.Background(), f)
require.NoError(t, err)
commitNumber, err := p.ParseCommitNumberFromGitHash(gitHash)
require.Error(t, err)
@@ -376,7 +377,7 @@
Contents: testutils.GetReader(t, filepath.Join(versionOneName, fileName)),
}
- params, values, gitHash, err := p.Parse(f)
+ params, values, gitHash, err := p.Parse(context.Background(), f)
require.NoError(t, err)
assert.Equal(t, "fe4a4029a080bc955e9588d05a6cd9eb490845d4", gitHash)
assert.Len(t, values, 4)
@@ -437,7 +438,7 @@
Name: fileName,
Contents: testutils.GetReader(t, filepath.Join(versionOneName, fileName)),
}
- params, _, _, err := p.Parse(f)
+ params, _, _, err := p.Parse(context.Background(), f)
require.NoError(t, err)
assert.Contains(t, params, expectedParams)
assert.Equal(t, int64(1), p.parseCounter.Get())
@@ -448,7 +449,7 @@
Name: fileName,
Contents: testutils.GetReader(t, filepath.Join(versionOneName, fileName)),
}
- params, _, _, err = p.Parse(f)
+ params, _, _, err = p.Parse(context.Background(), f)
require.NoError(t, err)
assert.Contains(t, params, expectedParams)
assert.Equal(t, int64(2), p.parseCounter.Get())
diff --git a/perf/go/ingest/process/process.go b/perf/go/ingest/process/process.go
index 567d09e..f30e915 100644
--- a/perf/go/ingest/process/process.go
+++ b/perf/go/ingest/process/process.go
@@ -90,7 +90,7 @@
filesReceived.Inc(1)
// Parse the file.
- params, values, gitHash, err := p.Parse(f)
+ params, values, gitHash, err := p.Parse(ctx, f)
if err != nil {
if err == parser.ErrFileShouldBeSkipped {
sklog.Debugf("File should be skipped %v: %s", f, err)
diff --git a/perf/go/perf-tool/application/application.go b/perf/go/perf-tool/application/application.go
index 2d2e529..3ae3fc6 100644
--- a/perf/go/perf-tool/application/application.go
+++ b/perf/go/perf-tool/application/application.go
@@ -817,7 +817,7 @@
if err != nil {
return fmt.Errorf("Failed to create parser: %s", skerr.Unwrap(err))
}
- p, v, hash, err := parser.Parse(f)
+ p, v, hash, err := parser.Parse(ctx, f)
if err != nil {
return fmt.Errorf("Parse Failed: %s", skerr.Unwrap(err))
}