func createMetricsReceiver()

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
}