[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))
 		}