@@ -16,13 +16,13 @@ package stackdriver
1616
1717import (
1818 "context"
19+ "fmt"
1920 "net"
2021 "sync"
2122 "testing"
2223 "time"
2324
24- "go.opencensus.io/stats"
25- "go.opencensus.io/stats/view"
25+ "go.opencensus.io/metric/metricdata"
2626 "google.golang.org/api/option"
2727 "google.golang.org/grpc"
2828
@@ -42,32 +42,30 @@ func TestStatsAndMetricsEquivalence(t *testing.T) {
4242
4343 startTime := time .Unix (1000 , 0 )
4444 startTimePb := & timestamp.Timestamp {Seconds : 1000 }
45- mLatencyMs := stats .Float64 ("latency" , "The latency for various methods" , "ms" )
46- v := & view.View {
45+ md := metricdata.Descriptor {
4746 Name : "ocagent.io/latency" ,
4847 Description : "The latency of the various methods" ,
49- Aggregation : view . Count () ,
50- Measure : mLatencyMs ,
48+ Unit : "ms" ,
49+ Type : metricdata . TypeCumulativeInt64 ,
5150 }
5251 metricDescriptor := & metricspb.MetricDescriptor {
5352 Name : "ocagent.io/latency" ,
5453 Description : "The latency of the various methods" ,
55- Unit : "1 " ,
54+ Unit : "ms " ,
5655 Type : metricspb .MetricDescriptor_CUMULATIVE_INT64 ,
5756 }
5857 seenResources := make (map [* resourcepb.Resource ]* monitoredrespb.MonitoredResource )
5958
60- // Generate some view.Data and metrics.
61- var vdl []* view. Data
59+ // Generate some metricdata.Metric and metrics proto .
60+ var metrics []* metricdata. Metric
6261 var metricPbs []* metricspb.Metric
6362 for i := 0 ; i < 100 ; i ++ {
64- vd := & view.Data {
65- Start : startTime ,
66- End : startTime .Add (time .Duration (1 + i ) * time .Second ),
67- View : v ,
68- Rows : []* view.Row {
63+ metric := & metricdata.Metric {
64+ Descriptor : md ,
65+ TimeSeries : []* metricdata.TimeSeries {
6966 {
70- Data : & view.CountData {Value : int64 (4 * (i + 2 ))},
67+ StartTime : startTime ,
68+ Points : []metricdata.Point {metricdata .NewInt64Point (startTime .Add (time .Duration (1 + i )* time .Second ), int64 (4 * (i + 2 )))},
7169 },
7270 },
7371 }
@@ -85,35 +83,39 @@ func TestStatsAndMetricsEquivalence(t *testing.T) {
8583 },
8684 },
8785 }
88- vdl = append (vdl , vd )
86+ metrics = append (metrics , metric )
8987 metricPbs = append (metricPbs , metricPb )
9088 }
9189
9290 // Now perform some exporting.
93- for i , vd := range vdl {
91+ for i , metric := range metrics {
9492 se := & statsExporter {
9593 o : Options {ProjectID : "equivalence" , MapResource : defaultMapResource },
9694 }
9795
9896 ctx := context .Background ()
99- sMD , err := se .viewToCreateMetricDescriptorRequest ( ctx , vd . View )
97+ sMD , err := se .metricToMpbMetricDescriptor ( metric )
10098 if err != nil {
101- t .Errorf ("#%d: Stats.viewToMetricDescriptor : %v" , i , err )
99+ t .Errorf ("#%d: Stats.metricToMpbMetricDescriptor : %v" , i , err )
102100 }
103- pMD , err := se .protoMetricDescriptorToCreateMetricDescriptorRequest (ctx , metricPbs [i ], nil )
101+ sMDR := & monitoringpb.CreateMetricDescriptorRequest {
102+ Name : fmt .Sprintf ("projects/%s" , se .o .ProjectID ),
103+ MetricDescriptor : sMD ,
104+ }
105+ pMDR , err := se .protoMetricDescriptorToCreateMetricDescriptorRequest (ctx , metricPbs [i ], nil )
104106 if err != nil {
105107 t .Errorf ("#%d: Stats.protoMetricDescriptorToMetricDescriptor: %v" , i , err )
106108 }
107- if diff := cmpMDReq (pMD , sMD ); diff != "" {
108- t .Fatalf ("MetricDescriptor Mismatch -FromMetrics +FromStats : %s" , diff )
109+ if diff := cmpMDReq (pMDR , sMDR ); diff != "" {
110+ t .Fatalf ("MetricDescriptor Mismatch -FromMetricsPb +FromMetrics : %s" , diff )
109111 }
110112
111- vdl := [] * view. Data { vd }
112- sctreql := se .makeReq ( vdl , maxTimeSeriesPerUpload )
113+ stss , _ := se . metricToMpbTs ( ctx , metric )
114+ sctreql := se .combineTimeSeriesToCreateTimeSeriesRequest ( stss )
113115 tsl , _ := se .protoMetricToTimeSeries (ctx , se .getResource (nil , metricPbs [i ], seenResources ), metricPbs [i ], nil )
114116 pctreql := se .combineTimeSeriesToCreateTimeSeriesRequest (tsl )
115117 if diff := cmpTSReqs (pctreql , sctreql ); diff != "" {
116- t .Fatalf ("TimeSeries Mismatch -FromMetrics +FromStats : %s" , diff )
118+ t .Fatalf ("TimeSeries Mismatch -FromMetricsPb +FromMetrics : %s" , diff )
117119 }
118120 }
119121}
@@ -123,8 +125,8 @@ func TestStatsAndMetricsEquivalence(t *testing.T) {
123125// that the Stackdriver Metrics Proto client then sends to, as it would
124126// send to Google Stackdriver backends.
125127//
126- // This test ensures that the final responses sent by direct stats(view.Data ) exporting
127- // are exactly equal to those from view.Data -->OpenCensus-Proto.Metrics exporting.
128+ // This test ensures that the final responses sent by direct stats(metricdata.Metric ) exporting
129+ // are exactly equal to those from metricdata.Metric -->OpenCensus-Proto.Metrics exporting.
128130func TestEquivalenceStatsVsMetricsUploads (t * testing.T ) {
129131 server , addr , doneFn := createFakeServer (t )
130132 defer doneFn ()
@@ -154,90 +156,87 @@ func TestEquivalenceStatsVsMetricsUploads(t *testing.T) {
154156
155157 startTime := time .Unix (1000 , 0 )
156158 startTimePb := & timestamp.Timestamp {Seconds : 1000 }
157- mLatencyMs := stats .Float64 ("latency" , "The latency for various methods" , "ms" )
158- mConnections := stats .Int64 ("connections" , "The count of various connections at a point in time" , "1" )
159- mTimeMs := stats .Float64 ("time" , "Counts time in milliseconds" , "ms" )
160-
161- // Generate the view.Data.
162- var vdl []* view.Data
163- vdl = append (vdl ,
164- & view.Data {
165- Start : startTime ,
166- End : startTime .Add (time .Duration (1 ) * time .Second ),
167- View : & view.View {
159+
160+ // Generate the metricdata.Metric.
161+ metrics := []* metricdata.Metric {
162+ {
163+ Descriptor : metricdata.Descriptor {
168164 Name : "ocagent.io/calls" ,
169165 Description : "The number of the various calls" ,
170- Aggregation : view . Count () ,
171- Measure : mLatencyMs ,
166+ Unit : "1" ,
167+ Type : metricdata . TypeCumulativeInt64 ,
172168 },
173- Rows : []* view. Row {
169+ TimeSeries : []* metricdata. TimeSeries {
174170 {
175- Data : & view.CountData {Value : int64 (8 )},
171+ StartTime : startTime ,
172+ Points : []metricdata.Point {metricdata .NewInt64Point (startTime .Add (time .Duration (1 )* time .Second ), 8 )},
176173 },
177174 },
178175 },
179- & view.Data {
180- Start : startTime ,
181- End : startTime .Add (time .Duration (2 ) * time .Second ),
182- View : & view.View {
176+ {
177+ Descriptor : metricdata.Descriptor {
183178 Name : "ocagent.io/latency" ,
184179 Description : "The latency of the various methods" ,
185- Aggregation : view .Distribution (100 , 500 , 1000 , 2000 , 4000 , 8000 , 16000 ),
186- Measure : mLatencyMs ,
180+
181+ Unit : "ms" ,
182+ Type : metricdata .TypeCumulativeDistribution ,
187183 },
188- Rows : []* view. Row {
184+ TimeSeries : []* metricdata. TimeSeries {
189185 {
190- Data : & view.DistributionData {
191- Count : 1 ,
192- Min : 100 ,
193- Max : 500 ,
194- Mean : 125.9 ,
195- CountPerBucket : []int64 {0 , 1 , 0 , 0 , 0 , 0 , 0 },
186+ StartTime : startTime ,
187+ Points : []metricdata.Point {
188+ metricdata .NewDistributionPoint (
189+ startTime .Add (time .Duration (2 )* time .Second ),
190+ & metricdata.Distribution {
191+ Count : 1 ,
192+ Sum : 125.9 ,
193+ Buckets : []metricdata.Bucket {{Count : 0 }, {Count : 1 }, {Count : 0 }, {Count : 0 }, {Count : 0 }, {Count : 0 }, {Count : 0 }},
194+ BucketOptions : & metricdata.BucketOptions {Bounds : []float64 {100 , 500 , 1000 , 2000 , 4000 , 8000 , 16000 }},
195+ }),
196196 },
197197 },
198198 },
199199 },
200- & view.Data {
201- Start : startTime ,
202- End : startTime .Add (time .Duration (3 ) * time .Second ),
203- View : & view.View {
200+ {
201+ Descriptor : metricdata.Descriptor {
204202 Name : "ocagent.io/connections" ,
205203 Description : "The count of various connections instantaneously" ,
206- Aggregation : view . LastValue () ,
207- Measure : mConnections ,
204+ Unit : "1" ,
205+ Type : metricdata . TypeGaugeInt64 ,
208206 },
209- Rows : []* view.Row {
210- {Data : & view.LastValueData {Value : 99 }},
207+ TimeSeries : []* metricdata.TimeSeries {
208+ {
209+ Points : []metricdata.Point {metricdata .NewInt64Point (startTime .Add (time .Duration (3 )* time .Second ), 99 )},
210+ },
211211 },
212212 },
213- & view.Data {
214- Start : startTime ,
215- End : startTime .Add (time .Duration (1 ) * time .Second ),
216- View : & view.View {
213+ {
214+ Descriptor : metricdata.Descriptor {
217215 Name : "ocagent.io/uptime" ,
218216 Description : "The total uptime at any instance" ,
219- Aggregation : view . Sum () ,
220- Measure : mTimeMs ,
217+ Unit : "ms" ,
218+ Type : metricdata . TypeCumulativeFloat64 ,
221219 },
222- Rows : []* view.Row {
223- {Data : & view.SumData {Value : 199903.97 }},
220+ TimeSeries : []* metricdata.TimeSeries {
221+ {
222+ StartTime : startTime ,
223+ Points : []metricdata.Point {metricdata .NewFloat64Point (startTime .Add (time .Duration (1 )* time .Second ), 199903.97 )},
224+ },
224225 },
225- })
226-
227- for _ , vd := range vdl {
228- // Export the view.Data to the Stackdriver backend.
229- se .ExportView (vd )
226+ },
230227 }
228+
229+ se .ExportMetrics (context .Background (), metrics )
231230 se .Flush ()
232231
233232 // Examining the stackdriver metrics that are available.
234- var stackdriverTimeSeriesFromStats []* monitoringpb.CreateTimeSeriesRequest
233+ var stackdriverTimeSeriesFromMetrics []* monitoringpb.CreateTimeSeriesRequest
235234 server .forEachStackdriverTimeSeries (func (sdt * monitoringpb.CreateTimeSeriesRequest ) {
236- stackdriverTimeSeriesFromStats = append (stackdriverTimeSeriesFromStats , sdt )
235+ stackdriverTimeSeriesFromMetrics = append (stackdriverTimeSeriesFromMetrics , sdt )
237236 })
238- var stackdriverMetricDescriptorsFromStats []* monitoringpb.CreateMetricDescriptorRequest
237+ var stackdriverMetricDescriptorsFromMetrics []* monitoringpb.CreateMetricDescriptorRequest
239238 server .forEachStackdriverMetricDescriptor (func (sdmd * monitoringpb.CreateMetricDescriptorRequest ) {
240- stackdriverMetricDescriptorsFromStats = append (stackdriverMetricDescriptorsFromStats , sdmd )
239+ stackdriverMetricDescriptorsFromMetrics = append (stackdriverMetricDescriptorsFromMetrics , sdmd )
241240 })
242241
243242 // Reset the stackdriverTimeSeries to enable fresh collection
@@ -340,24 +339,23 @@ func TestEquivalenceStatsVsMetricsUploads(t *testing.T) {
340339 se .ExportMetricsProto (context .Background (), nil , nil , metricPbs )
341340 se .Flush ()
342341
343- var stackdriverTimeSeriesFromMetrics []* monitoringpb.CreateTimeSeriesRequest
342+ var stackdriverTimeSeriesFromMetricsPb []* monitoringpb.CreateTimeSeriesRequest
344343 server .forEachStackdriverTimeSeries (func (sdt * monitoringpb.CreateTimeSeriesRequest ) {
345- stackdriverTimeSeriesFromMetrics = append (stackdriverTimeSeriesFromMetrics , sdt )
344+ stackdriverTimeSeriesFromMetricsPb = append (stackdriverTimeSeriesFromMetricsPb , sdt )
346345 })
347-
348- var stackdriverMetricDescriptorsFromMetrics []* monitoringpb.CreateMetricDescriptorRequest
346+ var stackdriverMetricDescriptorsFromMetricsPb []* monitoringpb.CreateMetricDescriptorRequest
349347 server .forEachStackdriverMetricDescriptor (func (sdmd * monitoringpb.CreateMetricDescriptorRequest ) {
350- stackdriverMetricDescriptorsFromMetrics = append (stackdriverMetricDescriptorsFromMetrics , sdmd )
348+ stackdriverMetricDescriptorsFromMetricsPb = append (stackdriverMetricDescriptorsFromMetricsPb , sdmd )
351349 })
352350
353351 // The results should be equal now
354- if diff := cmpTSReqs (stackdriverTimeSeriesFromMetrics , stackdriverTimeSeriesFromStats ); diff != "" {
355- t .Fatalf ("Unexpected CreateTimeSeriesRequests -FromMetrics +FromStats : %s" , diff )
352+ if diff := cmpTSReqs (stackdriverTimeSeriesFromMetricsPb , stackdriverTimeSeriesFromMetrics ); diff != "" {
353+ t .Fatalf ("Unexpected CreateTimeSeriesRequests -FromMetricsPb +FromMetrics : %s" , diff )
356354 }
357355
358356 // Examining the metric descriptors too.
359- if diff := cmpMDReqs (stackdriverMetricDescriptorsFromMetrics , stackdriverMetricDescriptorsFromStats ); diff != "" {
360- t .Fatalf ("Unexpected CreateMetricDescriptorRequests -FromMetrics +FromStats : %s" , diff )
357+ if diff := cmpMDReqs (stackdriverMetricDescriptorsFromMetricsPb , stackdriverMetricDescriptorsFromMetrics ); diff != "" {
358+ t .Fatalf ("Unexpected CreateMetricDescriptorRequests -FromMetricsPb +FromMetrics : %s" , diff )
361359 }
362360}
363361
0 commit comments