Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update otel libs from v0.13.0 -> v0.20.0 #5757

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ require (
cloud.google.com/go v0.72.0
cloud.google.com/go/storage v1.10.0
github.com/AlecAivazis/survey/v2 v2.2.7
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.13.0
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.20.0
github.com/aws/aws-sdk-go v1.36.30 // indirect
github.com/blang/semver v3.5.1+incompatible
github.com/bmatcuk/doublestar v1.2.4
Expand All @@ -36,7 +36,7 @@ require (
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e
github.com/golang/protobuf v1.4.3
github.com/google/go-cmp v0.5.4
github.com/google/go-cmp v0.5.5
github.com/google/go-containerregistry v0.4.1-0.20210128200529-19c2b639fab1
github.com/google/go-containerregistry/pkg/authn/k8schain v0.0.0-20210216200643-d81088d9983e // indirect
github.com/google/go-github v17.0.0+incompatible
Expand All @@ -57,20 +57,22 @@ require (
github.com/opencontainers/go-digest v1.0.0
github.com/opencontainers/image-spec v1.0.1
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4
github.com/pkg/errors v0.9.1 // indirect
github.com/pkg/errors v0.9.1
github.com/rakyll/statik v0.1.7
github.com/rjeczalik/notify v0.9.3-0.20201210012515-e2a77dcc14cf
github.com/russross/blackfriday/v2 v2.0.1
github.com/segmentio/textio v1.2.0
github.com/sirupsen/logrus v1.8.1
github.com/spf13/cobra v1.1.3
github.com/spf13/pflag v1.0.5
github.com/stretchr/testify v1.7.0 // indirect
github.com/tektoncd/pipeline v0.5.1-0.20190731183258-9d7e37e85bf8
github.com/xeipuuv/gojsonschema v1.2.0
go.opentelemetry.io/otel v0.13.0
go.opentelemetry.io/otel/exporters/stdout v0.13.0
go.opentelemetry.io/otel/sdk v0.13.0
go.opentelemetry.io/otel v0.20.0
go.opentelemetry.io/otel/exporters/stdout v0.20.0
go.opentelemetry.io/otel/metric v0.20.0
go.opentelemetry.io/otel/sdk v0.20.0
go.opentelemetry.io/otel/sdk/metric v0.20.0
go.opentelemetry.io/otel/trace v0.20.0
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect
golang.org/x/mod v0.4.1
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect
Expand Down
31 changes: 20 additions & 11 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -125,15 +125,13 @@ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBp
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/DataDog/sketches-go v0.0.1 h1:RtG+76WKgZuz6FIaGsjoPePmadDBkuD/KC6+ZWu78b8=
github.com/DataDog/sketches-go v0.0.1/go.mod h1:Q5DbzQ+3AkgGwymQO7aZFNP7ns2lZKGtvRBzRXfdi60=
github.com/Djarvur/go-err113 v0.0.0-20200410182137-af658d038157/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
github.com/Djarvur/go-err113 v0.1.0/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20191009163259-e802c2cb94ae/go.mod h1:mjwGPas4yKduTyubHvD1Atl9r1rUq8DfVy+gkVvZ+oo=
github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14=
github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20200415212048-7901bc822317/go.mod h1:DF8FZRxMHMGv/vP2lQP6h+dYzzjpuRn24VeRiYn3qjQ=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.13.0 h1:RbaN+/fPE1Rv/ZC/Z1vcD/qsd4XyYmzlTRqIPXnCAE0=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.13.0/go.mod h1:8MmJ2gqHtCH9fdAkpsnSYPdgn47SXsBodhYk6JfzA3M=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.20.0 h1:H4Hs0jLf0IcQ96dgx3gPFRke2zyjrzpYMecVsrWKrAc=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.20.0/go.mod h1:3DfYfW/GJ2p+Yd1vGImcFO1jKaqvZmAMMIdWk8BJsjw=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU=
github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
Expand Down Expand Up @@ -644,8 +642,9 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-containerregistry v0.0.0-20191010200024-a3d713f9b7f8/go.mod h1:KyKXa9ciM8+lgMXwOVsXi7UxGrsf9mM61Mzs+xKUrKE=
github.com/google/go-containerregistry v0.1.2/go.mod h1:GPivBPgdAyd2SU+vf6EpsgOtWDuPqjW0hJZt4rNdTZ4=
github.com/google/go-containerregistry v0.2.1/go.mod h1:Ts3Wioz1r5ayWx8sS6vLcWltWcM1aqFjd/eVrkFhrWM=
Expand Down Expand Up @@ -1336,12 +1335,22 @@ go.opencensus.io v0.22.4-0.20200608061201-1901b56b9515/go.mod h1:yxeiOL68Rb0Xd1d
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.5 h1:dntmOdLpSpHlVqbW5Eay97DelsZHe+55D+xC6i0dDS0=
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opentelemetry.io/otel v0.13.0 h1:2isEnyzjjJZq6r2EKMsFj4TxiQiexsM04AVhwbR/oBA=
go.opentelemetry.io/otel v0.13.0/go.mod h1:dlSNewoRYikTkotEnxdmuBHgzT+k/idJSfDv/FxEnOY=
go.opentelemetry.io/otel/exporters/stdout v0.13.0 h1:A+XiGIPQbGoJoBOJfKAKnZyiUSjSWvL3XWETUvtom5k=
go.opentelemetry.io/otel/exporters/stdout v0.13.0/go.mod h1:JJt8RpNY6K+ft9ir3iKpceCvT/rhzJXEExGrWFCbv1o=
go.opentelemetry.io/otel/sdk v0.13.0 h1:4VCfpKamZ8GtnepXxMRurSpHpMKkcxhtO33z1S4rGDQ=
go.opentelemetry.io/otel/sdk v0.13.0/go.mod h1:dKvLH8Uu8LcEPlSAUsfW7kMGaJBhk/1NYvpPZ6wIMbU=
go.opentelemetry.io/otel v0.20.0 h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g=
go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo=
go.opentelemetry.io/otel/exporters/stdout v0.20.0 h1:NXKkOWV7Np9myYrQE0wqRS3SbwzbupHu07rDONKubMo=
go.opentelemetry.io/otel/exporters/stdout v0.20.0/go.mod h1:t9LUU3JvYlmoPA61abhvsXxKh58xdyi3nMtI6JiR8v0=
go.opentelemetry.io/otel/metric v0.20.0 h1:4kzhXFP+btKm4jwxpjIqjs41A7MakRFUS86bqLHTIw8=
go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU=
go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw=
go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw=
go.opentelemetry.io/otel/sdk v0.20.0 h1:JsxtGXd06J8jrnya7fdI/U/MR6yXA5DtbZy+qoHQlr8=
go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc=
go.opentelemetry.io/otel/sdk/export/metric v0.20.0 h1:c5VRjxCXdQlx1HjzwGdQHzZaVI82b5EbBgOu2ljD92g=
go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE=
go.opentelemetry.io/otel/sdk/metric v0.20.0 h1:7ao1wpzHRVKf0OQ7GIxiQJA6X7DLX9o14gmVon7mMK8=
go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE=
go.opentelemetry.io/otel/trace v0.20.0 h1:1DL6EXUdcg95gukhuRRvLDO/4X5THh/5dIV52lqtnbw=
go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw=
go.starlark.net v0.0.0-20190528202925-30ae18b8564f/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg=
go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
Expand Down
81 changes: 41 additions & 40 deletions pkg/skaffold/instrumentation/export.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,12 @@ import (
"github.com/mitchellh/go-homedir"
"github.com/rakyll/statik/fs"
"github.com/sirupsen/logrus"
"go.opentelemetry.io/otel/api/global"
"go.opentelemetry.io/otel/api/metric"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/exporters/stdout"
"go.opentelemetry.io/otel/label"
"go.opentelemetry.io/otel/sdk/metric/controller/push"
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/metric/global"
"go.opentelemetry.io/otel/sdk/metric/controller/basic"
"google.golang.org/api/option"

"github.com/GoogleContainerTools/skaffold/cmd/skaffold/app/cmd/statik"
Expand Down Expand Up @@ -90,11 +91,11 @@ func exportMetrics(ctx context.Context, filename string, meter skaffoldMeter) er
}

start := time.Now()
p.Start()
p.Start(ctx)
for _, m := range meters {
createMetrics(ctx, m)
}
p.Stop()
p.Stop(ctx)
logrus.Debugf("metrics uploading complete in %s", time.Since(start).String())

if fileExists {
Expand All @@ -103,7 +104,7 @@ func exportMetrics(ctx context.Context, filename string, meter skaffoldMeter) er
return nil
}

func initCloudMonitoringExporterMetrics() (*push.Controller, error) {
func initCloudMonitoringExporterMetrics() (*basic.Controller, error) {
statikFS, err := statik.FS()
if err != nil {
return nil, err
Expand All @@ -127,7 +128,7 @@ func initCloudMonitoringExporterMetrics() (*push.Controller, error) {
return fmt.Sprintf("custom.googleapis.com/skaffold/%s", desc.Name())
}

global.SetErrorHandler(errHandler{})
otel.SetErrorHandler(errHandler{})
return mexporter.InstallNewPipeline(
[]mexporter.Option{
mexporter.WithProjectID(c.ProjectID),
Expand All @@ -140,14 +141,14 @@ func initCloudMonitoringExporterMetrics() (*push.Controller, error) {
)
}

func devStdOutExporter() (*push.Controller, error) {
func devStdOutExporter() (*basic.Controller, error) {
// export metrics to std out if local env is set.
if _, ok := os.LookupEnv("SKAFFOLD_EXPORT_TO_STDOUT"); ok {
return stdout.InstallNewPipeline([]stdout.Option{
stdout.WithQuantiles([]float64{0.5}),
_, controller, err := stdout.InstallNewPipeline([]stdout.Option{
stdout.WithPrettyPrint(),
stdout.WithWriter(os.Stdout),
}, nil)
return controller, err
}
return nil, nil
}
Expand All @@ -157,25 +158,25 @@ func createMetrics(ctx context.Context, meter skaffoldMeter) {
// A metric is uniquely identified by the metric name and the labels and corresponding values
// This random number is used as a label to differentiate the metrics per user so if two users
// run `skaffold build` at the same time they will both have their metrics recorded
randLabel := label.String("randomizer", strconv.Itoa(rand.Intn(75000)))
randLabel := attribute.String("randomizer", strconv.Itoa(rand.Intn(75000)))

m := global.Meter("skaffold")

// cloud monitoring only supports string type labels
labels := []label.KeyValue{
label.String("version", meter.Version),
label.String("os", meter.OS),
label.String("arch", meter.Arch),
label.String("command", meter.Command),
label.String("error", meter.ErrorCode.String()),
label.String("platform_type", meter.PlatformType),
label.String("config_count", strconv.Itoa(meter.ConfigCount)),
labels := []attribute.KeyValue{
attribute.String("version", meter.Version),
attribute.String("os", meter.OS),
attribute.String("arch", meter.Arch),
attribute.String("command", meter.Command),
attribute.String("error", meter.ErrorCode.String()),
attribute.String("platform_type", meter.PlatformType),
attribute.String("config_count", strconv.Itoa(meter.ConfigCount)),
}
sharedLabels := []label.KeyValue{
sharedLabels := []attribute.KeyValue{
randLabel,
}
if _, ok := allowedUsers[meter.User]; ok {
sharedLabels = append(sharedLabels, label.String("user", meter.User))
sharedLabels = append(sharedLabels, attribute.String("user", meter.User))
}
labels = append(labels, sharedLabels...)

Expand All @@ -201,24 +202,24 @@ func createMetrics(ctx context.Context, meter skaffoldMeter) {
}
}

func flagMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, randLabel label.KeyValue) {
func flagMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, randLabel attribute.KeyValue) {
flagCounter := metric.Must(m).NewInt64ValueRecorder("flags", metric.WithDescription("Tracks usage of enum flags"))
for k, v := range meter.EnumFlags {
labels := []label.KeyValue{
label.String("flag_name", k),
label.String("flag_value", v),
label.String("command", meter.Command),
label.String("error", meter.ErrorCode.String()),
labels := []attribute.KeyValue{
attribute.String("flag_name", k),
attribute.String("flag_value", v),
attribute.String("command", meter.Command),
attribute.String("error", meter.ErrorCode.String()),
randLabel,
}
flagCounter.Record(ctx, 1, labels...)
}
}

func commandMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, labels ...label.KeyValue) {
func commandMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, labels ...attribute.KeyValue) {
commandCounter := metric.Must(m).NewInt64ValueRecorder(meter.Command,
metric.WithDescription(fmt.Sprintf("Number of times %s is used", meter.Command)))
labels = append(labels, label.String("error", meter.ErrorCode.String()))
labels = append(labels, attribute.String("error", meter.ErrorCode.String()))
commandCounter.Record(ctx, 1, labels...)

if meter.Command == "dev" || meter.Command == "debug" {
Expand All @@ -238,42 +239,42 @@ func commandMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, la
for errorCode, count := range errorCounts {
iterationCounter.Record(ctx, int64(count),
append(labels,
label.String("intent", intention),
label.String("error", errorCode.String()),
attribute.String("intent", intention),
attribute.String("error", errorCode.String()),
)...)
}
}
}
}

func deployerMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, labels ...label.KeyValue) {
func deployerMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, labels ...attribute.KeyValue) {
deployerCounter := metric.Must(m).NewInt64ValueRecorder("deployer", metric.WithDescription("Deployers used"))
for _, deployer := range meter.Deployers {
deployerCounter.Record(ctx, 1, append(labels, label.String("deployer", deployer))...)
deployerCounter.Record(ctx, 1, append(labels, attribute.String("deployer", deployer))...)
}
if meter.HelmReleasesCount > 0 {
multiReleasesCounter := metric.Must(m).NewInt64ValueRecorder("helmReleases", metric.WithDescription("Multiple helm releases used"))
multiReleasesCounter.Record(ctx, 1, append(labels, label.Int("count", meter.HelmReleasesCount))...)
multiReleasesCounter.Record(ctx, 1, append(labels, attribute.Int("count", meter.HelmReleasesCount))...)
}
}

func builderMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, labels ...label.KeyValue) {
func builderMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, labels ...attribute.KeyValue) {
builderCounter := metric.Must(m).NewInt64ValueRecorder("builders", metric.WithDescription("Builders used"))
artifactCounter := metric.Must(m).NewInt64ValueRecorder("artifacts", metric.WithDescription("Number of artifacts used"))
dependenciesCounter := metric.Must(m).NewInt64ValueRecorder("artifact-dependencies", metric.WithDescription("Number of artifacts with dependencies"))
for builder, count := range meter.Builders {
bLabel := label.String("builder", builder)
bLabel := attribute.String("builder", builder)
builderCounter.Record(ctx, 1, append(labels, bLabel)...)
artifactCounter.Record(ctx, int64(count), append(labels, bLabel)...)
dependenciesCounter.Record(ctx, int64(meter.BuildDependencies[builder]), append(labels, bLabel)...)
}
}

func errorMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, labels ...label.KeyValue) {
func errorMetrics(ctx context.Context, meter skaffoldMeter, m metric.Meter, labels ...attribute.KeyValue) {
errCounter := metric.Must(m).NewInt64ValueRecorder("errors", metric.WithDescription("Skaffold errors"))
errCounter.Record(ctx, 1, append(labels, label.String("error", meter.ErrorCode.String()))...)
errCounter.Record(ctx, 1, append(labels, attribute.String("error", meter.ErrorCode.String()))...)

labels = append(labels, label.String("command", meter.Command))
labels = append(labels, attribute.String("command", meter.Command))

switch meter.ErrorCode {
case proto.StatusCode_UNKNOWN_ERROR:
Expand Down
31 changes: 14 additions & 17 deletions pkg/skaffold/instrumentation/export_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import (
"time"

"go.opentelemetry.io/otel/exporters/stdout"
"go.opentelemetry.io/otel/sdk/metric/controller/push"
"go.opentelemetry.io/otel/sdk/metric/controller/basic"

"github.com/GoogleContainerTools/skaffold/cmd/skaffold/app/cmd/statik"
"github.com/GoogleContainerTools/skaffold/proto/v1"
Expand Down Expand Up @@ -162,12 +162,12 @@ func TestExportMetrics(t *testing.T) {
if err != nil {
t.Error(err)
}
t.Override(&initExporter, func() (*push.Controller, error) {
return stdout.InstallNewPipeline([]stdout.Option{
stdout.WithQuantiles([]float64{0.5}),
t.Override(&initExporter, func() (*basic.Controller, error) {
_, controller, err := stdout.InstallNewPipeline([]stdout.Option{
stdout.WithPrettyPrint(),
stdout.WithWriter(tmpFile),
}, nil)
return controller, err
})
}
if len(test.savedMetrics) > 0 {
Expand Down Expand Up @@ -320,12 +320,12 @@ func TestUserMetricReported(t *testing.T) {
if err != nil {
t.Error(err)
}
t.Override(&initExporter, func() (*push.Controller, error) {
return stdout.InstallNewPipeline([]stdout.Option{
stdout.WithQuantiles([]float64{0.5}),
t.Override(&initExporter, func() (*basic.Controller, error) {
_, controller, err := stdout.InstallNewPipeline([]stdout.Option{
stdout.WithPrettyPrint(),
stdout.WithWriter(tmpFile),
}, nil)
return controller, err
})

_ = exportMetrics(context.Background(), tmp.Path(filename), test.meter)
Expand Down Expand Up @@ -459,15 +459,12 @@ func checkUser(t *testutil.T, user string, b []byte) {

// Derived from go.opentelemetry.io/otel/exporters/stdout/metric.go
type line struct {
Name string `json:"Name"`
Count interface{} `json:"Count,omitempty"`
Quantiles []quantile `json:"Quantiles,omitempty"`
Labels map[string]string
}

type quantile struct {
Quantile interface{} `json:"Quantile"`
Value interface{} `json:"Value"`
Name string `json:"Name"`
Min interface{} `json:"Min,omitempty"`
Max interface{} `json:"Max,omitempty"`
Sum interface{} `json:"Sum,omitempty"`
Count interface{} `json:"Count,omitempty"`
Labels map[string]string
}

func (l *line) initLine() {
Expand All @@ -484,5 +481,5 @@ func (l *line) initLine() {
}

func (l *line) value() interface{} {
return l.Quantiles[0].Value
return l.Max
}