in receiver/loadgenreceiver/metrics.go [65:105]
func createMetricsReceiver(
ctx context.Context,
set receiver.Settings,
config component.Config,
consumer consumer.Metrics,
) (receiver.Metrics, error) {
genConfig := config.(*Config)
parser := pmetric.JSONUnmarshaler{}
var err error
sampleMetrics := demoMetrics
if genConfig.Metrics.JsonlFile != "" {
sampleMetrics, err = os.ReadFile(string(genConfig.Metrics.JsonlFile))
if err != nil {
return nil, err
}
}
var items []pmetric.Metrics
scanner := bufio.NewScanner(bytes.NewReader(sampleMetrics))
scanner.Buffer(make([]byte, 0, maxScannerBufSize), maxScannerBufSize)
for scanner.Scan() {
metricBytes := scanner.Bytes()
lineMetrics, err := parser.UnmarshalMetrics(metricBytes)
if err != nil {
return nil, err
}
items = append(items, lineMetrics)
}
if err := scanner.Err(); err != nil {
return nil, err
}
return &metricsGenerator{
cfg: genConfig,
logger: set.Logger,
consumer: consumer,
samples: list.NewLoopingList(items, genConfig.Metrics.MaxReplay),
}, nil
}