@@ -22,13 +22,13 @@ import (
2222 "log"
2323 "math/rand"
2424 "strconv"
25- "sync/atomic"
2625 "time"
2726
2827 metricspb "github.com/census-instrumentation/opencensus-proto/gen-go/metrics/v1"
2928 resourcepb "github.com/census-instrumentation/opencensus-proto/gen-go/resource/v1"
3029 tracepb "github.com/census-instrumentation/opencensus-proto/gen-go/trace/v1"
3130 "github.com/golang/protobuf/ptypes/timestamp"
31+ "go.uber.org/atomic"
3232
3333 "go.opentelemetry.io/collector/consumer/pdata"
3434 "go.opentelemetry.io/collector/internal/data"
@@ -37,53 +37,53 @@ import (
3737 "go.opentelemetry.io/collector/translator/internaldata"
3838)
3939
40- //DataProvider defines the interface for generators of test data used to drive various end-to-end tests.
40+ // DataProvider defines the interface for generators of test data used to drive various end-to-end tests.
4141type DataProvider interface {
42- //SetLoadGeneratorCounters supplies pointers to LoadGenerator counters.
43- //The data provider implementation should increment these as it generates data.
44- SetLoadGeneratorCounters (batchesGenerated * uint64 , dataItemsGenerated * uint64 )
45- //GenerateTraces returns an internal Traces instance with an OTLP ResourceSpans slice populated with test data.
42+ // SetLoadGeneratorCounters supplies pointers to LoadGenerator counters.
43+ // The data provider implementation should increment these as it generates data.
44+ SetLoadGeneratorCounters (batchesGenerated * atomic. Uint64 , dataItemsGenerated * atomic. Uint64 )
45+ // GenerateTraces returns an internal Traces instance with an OTLP ResourceSpans slice populated with test data.
4646 GenerateTraces () (pdata.Traces , bool )
47- //GenerateTracesOld returns a slice of OpenCensus Span instances populated with test data.
47+ // GenerateTracesOld returns a slice of OpenCensus Span instances populated with test data.
4848 GenerateTracesOld () ([]* tracepb.Span , bool )
49- //GenerateMetrics returns an internal MetricData instance with an OTLP ResourceMetrics slice of test data.
49+ // GenerateMetrics returns an internal MetricData instance with an OTLP ResourceMetrics slice of test data.
5050 GenerateMetrics () (data.MetricData , bool )
51- //GenerateMetricsOld returns a slice of OpenCensus Metric instances populated with test data.
51+ // GenerateMetricsOld returns a slice of OpenCensus Metric instances populated with test data.
5252 GenerateMetricsOld () ([]* metricspb.Metric , bool )
53- //GetGeneratedSpan returns the generated Span matching the provided traceId and spanId or else nil if no match found.
53+ // GetGeneratedSpan returns the generated Span matching the provided traceId and spanId or else nil if no match found.
5454 GetGeneratedSpan (traceID []byte , spanID []byte ) * otlptrace.Span
5555}
5656
57- //PerfTestDataProvider in an implementation of the DataProvider for use in performance tests.
58- //Tracing IDs are based on the incremented batch and data items counters.
57+ // PerfTestDataProvider in an implementation of the DataProvider for use in performance tests.
58+ // Tracing IDs are based on the incremented batch and data items counters.
5959type PerfTestDataProvider struct {
6060 options LoadOptions
61- batchesGenerated * uint64
62- dataItemsGenerated * uint64
61+ batchesGenerated * atomic. Uint64
62+ dataItemsGenerated * atomic. Uint64
6363}
6464
65- //NewPerfTestDataProvider creates an instance of PerfTestDataProvider which generates test data based on the sizes
66- //specified in the supplied LoadOptions.
65+ // NewPerfTestDataProvider creates an instance of PerfTestDataProvider which generates test data based on the sizes
66+ // specified in the supplied LoadOptions.
6767func NewPerfTestDataProvider (options LoadOptions ) * PerfTestDataProvider {
6868 return & PerfTestDataProvider {
6969 options : options ,
7070 }
7171}
7272
73- func (dp * PerfTestDataProvider ) SetLoadGeneratorCounters (batchesGenerated * uint64 , dataItemsGenerated * uint64 ) {
73+ func (dp * PerfTestDataProvider ) SetLoadGeneratorCounters (batchesGenerated * atomic. Uint64 , dataItemsGenerated * atomic. Uint64 ) {
7474 dp .batchesGenerated = batchesGenerated
7575 dp .dataItemsGenerated = dataItemsGenerated
7676}
7777
7878func (dp * PerfTestDataProvider ) GenerateTracesOld () ([]* tracepb.Span , bool ) {
7979
8080 var spans []* tracepb.Span
81- traceID := atomic . AddUint64 ( dp .batchesGenerated , 1 )
81+ traceID := dp .batchesGenerated . Inc ( )
8282 for i := 0 ; i < dp .options .ItemsPerBatch ; i ++ {
8383
8484 startTime := time .Now ()
8585
86- spanID := atomic . AddUint64 ( dp .dataItemsGenerated , 1 )
86+ spanID := dp .dataItemsGenerated . Inc ( )
8787
8888 // Create a span.
8989 span := & tracepb.Span {
@@ -126,13 +126,13 @@ func (dp *PerfTestDataProvider) GenerateTraces() (pdata.Traces, bool) {
126126 spans := ilss .At (0 ).Spans ()
127127 spans .Resize (dp .options .ItemsPerBatch )
128128
129- traceID := atomic . AddUint64 ( dp .batchesGenerated , 1 )
129+ traceID := dp .batchesGenerated . Inc ( )
130130 for i := 0 ; i < dp .options .ItemsPerBatch ; i ++ {
131131
132132 startTime := time .Now ()
133133 endTime := startTime .Add (time .Duration (time .Millisecond ))
134134
135- spanID := atomic . AddUint64 ( dp .dataItemsGenerated , 1 )
135+ spanID := dp .dataItemsGenerated . Inc ( )
136136
137137 span := spans .At (i )
138138
@@ -192,7 +192,7 @@ func (dp *PerfTestDataProvider) GenerateMetricsOld() ([]*metricspb.Metric, bool)
192192 Resource : resource ,
193193 }
194194
195- batchIndex := atomic . AddUint64 ( dp .batchesGenerated , 1 )
195+ batchIndex := dp .batchesGenerated . Inc ( )
196196
197197 // Generate data points for the metric. We generate timeseries each containing
198198 // a single data points. This is the most typical payload composition since
@@ -201,7 +201,7 @@ func (dp *PerfTestDataProvider) GenerateMetricsOld() ([]*metricspb.Metric, bool)
201201 timeseries := & metricspb.TimeSeries {}
202202
203203 startTime := time .Now ()
204- value := atomic . AddUint64 ( dp .dataItemsGenerated , 1 )
204+ value := dp .dataItemsGenerated . Inc ( )
205205
206206 // Create a data point.
207207 point := & metricspb.Point {
@@ -248,14 +248,14 @@ func (dp *PerfTestDataProvider) GenerateMetrics() (data.MetricData, bool) {
248248 metricDescriptor .SetDescription ("Load Generator Counter #" + strconv .Itoa (i ))
249249 metricDescriptor .SetType (pdata .MetricTypeInt64 )
250250
251- batchIndex := atomic . AddUint64 ( dp .batchesGenerated , 1 )
251+ batchIndex := dp .batchesGenerated . Inc ( )
252252
253253 // Generate data points for the metric.
254254 metric .Int64DataPoints ().Resize (dataPointsPerMetric )
255255 for j := 0 ; j < dataPointsPerMetric ; j ++ {
256256 dataPoint := metric .Int64DataPoints ().At (j )
257257 dataPoint .SetStartTime (pdata .TimestampUnixNano (uint64 (time .Now ().UnixNano ())))
258- value := atomic . AddUint64 ( dp .dataItemsGenerated , 1 )
258+ value := dp .dataItemsGenerated . Inc ( )
259259 dataPoint .SetValue (int64 (value ))
260260 dataPoint .LabelsMap ().InitFromMap (map [string ]string {
261261 "item_index" : "item_" + strconv .Itoa (j ),
@@ -283,22 +283,22 @@ func timeToTimestamp(t time.Time) *timestamp.Timestamp {
283283 }
284284}
285285
286- //GoldenDataProvider is an implementation of DataProvider for use in correctness tests.
287- //Provided data from the "Golden" dataset generated using pairwise combinatorial testing techniques.
286+ // GoldenDataProvider is an implementation of DataProvider for use in correctness tests.
287+ // Provided data from the "Golden" dataset generated using pairwise combinatorial testing techniques.
288288type GoldenDataProvider struct {
289289 tracePairsFile string
290290 spanPairsFile string
291291 random io.Reader
292- batchesGenerated * uint64
293- dataItemsGenerated * uint64
292+ batchesGenerated * atomic. Uint64
293+ dataItemsGenerated * atomic. Uint64
294294 resourceSpans []* otlptrace.ResourceSpans
295295 spansIndex int
296296 spansMap map [string ]* otlptrace.Span
297297}
298298
299- //NewGoldenDataProvider creates a new instance of GoldenDataProvider which generates test data based
300- //on the pairwise combinations specified in the tracePairsFile and spanPairsFile input variables.
301- //The supplied randomSeed is used to initialize the random number generator used in generating tracing IDs.
299+ // NewGoldenDataProvider creates a new instance of GoldenDataProvider which generates test data based
300+ // on the pairwise combinations specified in the tracePairsFile and spanPairsFile input variables.
301+ // The supplied randomSeed is used to initialize the random number generator used in generating tracing IDs.
302302func NewGoldenDataProvider (tracePairsFile string , spanPairsFile string , randomSeed int64 ) * GoldenDataProvider {
303303 return & GoldenDataProvider {
304304 tracePairsFile : tracePairsFile ,
@@ -307,7 +307,7 @@ func NewGoldenDataProvider(tracePairsFile string, spanPairsFile string, randomSe
307307 }
308308}
309309
310- func (dp * GoldenDataProvider ) SetLoadGeneratorCounters (batchesGenerated * uint64 , dataItemsGenerated * uint64 ) {
310+ func (dp * GoldenDataProvider ) SetLoadGeneratorCounters (batchesGenerated * atomic. Uint64 , dataItemsGenerated * atomic. Uint64 ) {
311311 dp .batchesGenerated = batchesGenerated
312312 dp .dataItemsGenerated = dataItemsGenerated
313313}
@@ -321,7 +321,7 @@ func (dp *GoldenDataProvider) GenerateTraces() (pdata.Traces, bool) {
321321 dp .resourceSpans = make ([]* otlptrace.ResourceSpans , 0 )
322322 }
323323 }
324- atomic . AddUint64 ( dp .batchesGenerated , 1 )
324+ dp .batchesGenerated . Inc ( )
325325 if dp .spansIndex >= len (dp .resourceSpans ) {
326326 return pdata .TracesFromOtlp (make ([]* otlptrace.ResourceSpans , 0 )), true
327327 }
@@ -332,7 +332,7 @@ func (dp *GoldenDataProvider) GenerateTraces() (pdata.Traces, bool) {
332332 for _ , libSpans := range resourceSpans [0 ].InstrumentationLibrarySpans {
333333 spanCount += uint64 (len (libSpans .Spans ))
334334 }
335- atomic . AddUint64 ( dp .dataItemsGenerated , spanCount )
335+ dp .dataItemsGenerated . Add ( spanCount )
336336 return pdata .TracesFromOtlp (resourceSpans ), false
337337}
338338
0 commit comments