From 69b02d6f903602e76b2986e8e032a6c7f76c8e90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20L=C3=B6nnblad?= Date: Mon, 13 Jan 2020 11:00:01 -0300 Subject: [PATCH 1/2] Added handling of HTTP code 409 when parsing trace status on OCHTTP --- go.mod | 1 - go.sum | 1 + plugin/ochttp/trace.go | 3 +++ plugin/ochttp/trace_test.go | 4 ++++ stats/view/aggregation_data.go | 4 ++-- stats/view/view_to_metric_test.go | 16 ++++++++-------- 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 139157cd3..c867df5f5 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,6 @@ require ( golang.org/x/net v0.0.0-20190620200207-3b0461eec859 golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd // indirect golang.org/x/text v0.3.2 // indirect - google.golang.org/appengine v1.4.0 // indirect google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb // indirect google.golang.org/grpc v1.20.1 ) diff --git a/go.sum b/go.sum index ed2a1d844..01c02972c 100644 --- a/go.sum +++ b/go.sum @@ -67,6 +67,7 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/plugin/ochttp/trace.go b/plugin/ochttp/trace.go index 53e71305a..ed3a5db56 100644 --- a/plugin/ochttp/trace.go +++ b/plugin/ochttp/trace.go @@ -204,7 +204,10 @@ func TraceStatus(httpStatusCode int, statusLine string) trace.Status { code = trace.StatusCodeUnavailable case http.StatusOK: code = trace.StatusCodeOK + case http.StatusConflict: + code = trace.StatusCodeAlreadyExists } + return trace.Status{Code: code, Message: codeToStr[code]} } diff --git a/plugin/ochttp/trace_test.go b/plugin/ochttp/trace_test.go index 759103781..615c271eb 100644 --- a/plugin/ochttp/trace_test.go +++ b/plugin/ochttp/trace_test.go @@ -677,6 +677,10 @@ func TestStatusUnitTest(t *testing.T) { {403, trace.Status{Code: trace.StatusCodePermissionDenied, Message: `PERMISSION_DENIED`}}, {301, trace.Status{Code: trace.StatusCodeOK, Message: `OK`}}, {501, trace.Status{Code: trace.StatusCodeUnimplemented, Message: `UNIMPLEMENTED`}}, + {409, trace.Status{Code: trace.StatusCodeAlreadyExists, Message: `ALREADY_EXISTS`}}, + {429, trace.Status{Code: trace.StatusCodeResourceExhausted, Message: `RESOURCE_EXHAUSTED`}}, + {503, trace.Status{Code: trace.StatusCodeUnavailable, Message: `UNAVAILABLE`}}, + {504, trace.Status{Code: trace.StatusCodeDeadlineExceeded, Message: `DEADLINE_EXCEEDED`}}, } for _, tt := range tests { diff --git a/stats/view/aggregation_data.go b/stats/view/aggregation_data.go index f331d456e..12fd404d3 100644 --- a/stats/view/aggregation_data.go +++ b/stats/view/aggregation_data.go @@ -242,8 +242,8 @@ func (a *DistributionData) toPoint(metricType metricdata.Type, t time.Time) metr bucketOptions := &metricdata.BucketOptions{Bounds: a.bounds} val := &metricdata.Distribution{ - Count: a.Count, - Sum: a.Sum(), + Count: a.Count, + Sum: a.Sum(), SumOfSquaredDeviation: a.SumOfSquaredDev, BucketOptions: bucketOptions, Buckets: buckets, diff --git a/stats/view/view_to_metric_test.go b/stats/view/view_to_metric_test.go index 18c877117..57fec52a9 100644 --- a/stats/view/view_to_metric_test.go +++ b/stats/view/view_to_metric_test.go @@ -264,8 +264,8 @@ func Test_ViewToMetric(t *testing.T) { TimeSeries: []*metricdata.TimeSeries{ {Points: []metricdata.Point{ {Value: &metricdata.Distribution{ - Count: 2, - Sum: 6.0, + Count: 2, + Sum: 6.0, SumOfSquaredDeviation: 2, BucketOptions: buckOpt, Buckets: []metricdata.Bucket{ @@ -292,8 +292,8 @@ func Test_ViewToMetric(t *testing.T) { Points: []metricdata.Point{ { Value: &metricdata.Distribution{ - Count: 2, - Sum: 6.9, + Count: 2, + Sum: 6.9, SumOfSquaredDeviation: 7.605000000000001, BucketOptions: buckOpt, Buckets: []metricdata.Bucket{ @@ -551,8 +551,8 @@ func TestViewToMetric_OutOfOrderWithZeroBuckets(t *testing.T) { TimeSeries: []*metricdata.TimeSeries{ {Points: []metricdata.Point{ {Value: &metricdata.Distribution{ - Count: 3, - Sum: 9.0, + Count: 3, + Sum: 9.0, SumOfSquaredDeviation: 8, BucketOptions: &metricdata.BucketOptions{ Bounds: []float64{2, 10}, @@ -588,8 +588,8 @@ func TestViewToMetric_OutOfOrderWithZeroBuckets(t *testing.T) { TimeSeries: []*metricdata.TimeSeries{ {Points: []metricdata.Point{ {Value: &metricdata.Distribution{ - Count: 3, - Sum: 9.0, + Count: 3, + Sum: 9.0, SumOfSquaredDeviation: 8, BucketOptions: &metricdata.BucketOptions{ Bounds: []float64{5, 10}, From ec353da06b277590d01215e1fa3586b768cf6a58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20L=C3=B6nnblad?= Date: Mon, 13 Jan 2020 13:13:42 -0300 Subject: [PATCH 2/2] Reverted the change of stats/view/aggregation_data.go and stats/view/view_to_metric_test.go --- stats/view/aggregation_data.go | 4 ++-- stats/view/view_to_metric_test.go | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/stats/view/aggregation_data.go b/stats/view/aggregation_data.go index 12fd404d3..f331d456e 100644 --- a/stats/view/aggregation_data.go +++ b/stats/view/aggregation_data.go @@ -242,8 +242,8 @@ func (a *DistributionData) toPoint(metricType metricdata.Type, t time.Time) metr bucketOptions := &metricdata.BucketOptions{Bounds: a.bounds} val := &metricdata.Distribution{ - Count: a.Count, - Sum: a.Sum(), + Count: a.Count, + Sum: a.Sum(), SumOfSquaredDeviation: a.SumOfSquaredDev, BucketOptions: bucketOptions, Buckets: buckets, diff --git a/stats/view/view_to_metric_test.go b/stats/view/view_to_metric_test.go index 57fec52a9..18c877117 100644 --- a/stats/view/view_to_metric_test.go +++ b/stats/view/view_to_metric_test.go @@ -264,8 +264,8 @@ func Test_ViewToMetric(t *testing.T) { TimeSeries: []*metricdata.TimeSeries{ {Points: []metricdata.Point{ {Value: &metricdata.Distribution{ - Count: 2, - Sum: 6.0, + Count: 2, + Sum: 6.0, SumOfSquaredDeviation: 2, BucketOptions: buckOpt, Buckets: []metricdata.Bucket{ @@ -292,8 +292,8 @@ func Test_ViewToMetric(t *testing.T) { Points: []metricdata.Point{ { Value: &metricdata.Distribution{ - Count: 2, - Sum: 6.9, + Count: 2, + Sum: 6.9, SumOfSquaredDeviation: 7.605000000000001, BucketOptions: buckOpt, Buckets: []metricdata.Bucket{ @@ -551,8 +551,8 @@ func TestViewToMetric_OutOfOrderWithZeroBuckets(t *testing.T) { TimeSeries: []*metricdata.TimeSeries{ {Points: []metricdata.Point{ {Value: &metricdata.Distribution{ - Count: 3, - Sum: 9.0, + Count: 3, + Sum: 9.0, SumOfSquaredDeviation: 8, BucketOptions: &metricdata.BucketOptions{ Bounds: []float64{2, 10}, @@ -588,8 +588,8 @@ func TestViewToMetric_OutOfOrderWithZeroBuckets(t *testing.T) { TimeSeries: []*metricdata.TimeSeries{ {Points: []metricdata.Point{ {Value: &metricdata.Distribution{ - Count: 3, - Sum: 9.0, + Count: 3, + Sum: 9.0, SumOfSquaredDeviation: 8, BucketOptions: &metricdata.BucketOptions{ Bounds: []float64{5, 10},