@@ -17,9 +17,7 @@ package testbed
1717import (
1818 "encoding/binary"
1919 "fmt"
20- "io"
2120 "log"
22- "math/rand"
2321 "os"
2422 "strconv"
2523 "time"
@@ -216,12 +214,12 @@ func (dp *PerfTestDataProvider) GenerateLogs() (pdata.Logs, bool) {
216214type GoldenDataProvider struct {
217215 tracePairsFile string
218216 spanPairsFile string
219- random io.Reader
220217 batchesGenerated * atomic.Uint64
221218 dataItemsGenerated * atomic.Uint64
222- resourceSpans []* otlptrace.ResourceSpans
223- spansIndex int
224- spansMap map [string ]* otlptrace.Span
219+
220+ tracesGenerated []pdata.Traces
221+ tracesIndex int
222+ spansMap map [string ]* otlptrace.Span
225223
226224 metricPairsFile string
227225 metricsGenerated []pdata.Metrics
@@ -230,13 +228,11 @@ type GoldenDataProvider struct {
230228
231229// NewGoldenDataProvider creates a new instance of GoldenDataProvider which generates test data based
232230// on the pairwise combinations specified in the tracePairsFile and spanPairsFile input variables.
233- // The supplied randomSeed is used to initialize the random number generator used in generating tracing IDs.
234- func NewGoldenDataProvider (tracePairsFile string , spanPairsFile string , metricPairsFile string , randomSeed int64 ) * GoldenDataProvider {
231+ func NewGoldenDataProvider (tracePairsFile string , spanPairsFile string , metricPairsFile string ) * GoldenDataProvider {
235232 return & GoldenDataProvider {
236233 tracePairsFile : tracePairsFile ,
237234 spanPairsFile : spanPairsFile ,
238235 metricPairsFile : metricPairsFile ,
239- random : io .Reader (rand .New (rand .NewSource (randomSeed ))),
240236 }
241237}
242238
@@ -246,27 +242,22 @@ func (dp *GoldenDataProvider) SetLoadGeneratorCounters(batchesGenerated *atomic.
246242}
247243
248244func (dp * GoldenDataProvider ) GenerateTraces () (pdata.Traces , bool ) {
249- if dp .resourceSpans == nil {
245+ if dp .tracesGenerated == nil {
250246 var err error
251- dp .resourceSpans , err = goldendataset .GenerateResourceSpans (dp .tracePairsFile , dp .spanPairsFile , dp . random )
247+ dp .tracesGenerated , err = goldendataset .GenerateTraces (dp .tracePairsFile , dp .spanPairsFile )
252248 if err != nil {
253249 log .Printf ("cannot generate traces: %s" , err )
254- dp .resourceSpans = make ([] * otlptrace. ResourceSpans , 0 )
250+ dp .tracesGenerated = nil
255251 }
256252 }
257253 dp .batchesGenerated .Inc ()
258- if dp .spansIndex >= len (dp .resourceSpans ) {
259- return pdata .TracesFromOtlp (make ([]* otlptrace.ResourceSpans , 0 )), true
260- }
261- resourceSpans := make ([]* otlptrace.ResourceSpans , 1 )
262- resourceSpans [0 ] = dp .resourceSpans [dp .spansIndex ]
263- dp .spansIndex ++
264- spanCount := uint64 (0 )
265- for _ , libSpans := range resourceSpans [0 ].InstrumentationLibrarySpans {
266- spanCount += uint64 (len (libSpans .Spans ))
254+ if dp .tracesIndex >= len (dp .tracesGenerated ) {
255+ return pdata .NewTraces (), true
267256 }
268- dp .dataItemsGenerated .Add (spanCount )
269- return pdata .TracesFromOtlp (resourceSpans ), false
257+ td := dp .tracesGenerated [dp .tracesIndex ]
258+ dp .tracesIndex ++
259+ dp .dataItemsGenerated .Add (uint64 (td .SpanCount ()))
260+ return td , false
270261}
271262
272263func (dp * GoldenDataProvider ) GenerateMetrics () (pdata.Metrics , bool ) {
@@ -277,8 +268,8 @@ func (dp *GoldenDataProvider) GenerateMetrics() (pdata.Metrics, bool) {
277268 log .Printf ("cannot generate metrics: %s" , err )
278269 }
279270 }
280- numMetricsGenerated := len ( dp .metricsGenerated )
281- if dp .metricsIndex == numMetricsGenerated {
271+ dp .batchesGenerated . Inc ( )
272+ if dp .metricsIndex == len ( dp . metricsGenerated ) {
282273 return pdata.Metrics {}, true
283274 }
284275 pdm := dp .metricsGenerated [dp .metricsIndex ]
@@ -294,7 +285,11 @@ func (dp *GoldenDataProvider) GenerateLogs() (pdata.Logs, bool) {
294285
295286func (dp * GoldenDataProvider ) GetGeneratedSpan (traceID pdata.TraceID , spanID pdata.SpanID ) * otlptrace.Span {
296287 if dp .spansMap == nil {
297- dp .spansMap = populateSpansMap (dp .resourceSpans )
288+ var resourceSpansList []* otlptrace.ResourceSpans
289+ for _ , td := range dp .tracesGenerated {
290+ resourceSpansList = append (resourceSpansList , pdata .TracesToOtlp (td )... )
291+ }
292+ dp .spansMap = populateSpansMap (resourceSpansList )
298293 }
299294 key := traceIDAndSpanIDToString (traceID , spanID )
300295 return dp .spansMap [key ]
0 commit comments