in metricsgenreceiver/receiver.go [43:100]
func newMetricsGenReceiver(cfg *Config, set receiver.Settings) (*MetricsGenReceiver, error) {
obsreport, err := receiverhelper.NewObsReport(receiverhelper.ObsReportSettings{
ReceiverID: set.ID,
ReceiverCreateSettings: set,
})
if err != nil {
return nil, err
}
r := rand.New(rand.NewSource(cfg.Seed))
nowish := time.Now().Truncate(time.Second)
if cfg.StartTime.IsZero() {
cfg.StartTime = nowish.Add(-cfg.StartNowMinus)
}
if cfg.EndTime.IsZero() {
cfg.EndTime = nowish.Add(-cfg.EndNowMinus)
}
scenarios := make([]Scenario, 0, len(cfg.Scenarios))
for _, scn := range cfg.Scenarios {
metrics, err := metricstmpl.RenderMetricsTemplate(scn.Path, scn.TemplateVars)
if err != nil {
return nil, err
}
dp.ForEachDataPoint(&metrics, func(res pcommon.Resource, is pcommon.InstrumentationScope, m pmetric.Metric, dp dp.DataPoint) {
dp.SetStartTimestamp(pcommon.NewTimestampFromTime(cfg.StartTime))
if scn.AggregationTemporalityOverride() != 0 {
switch m.Type() {
case pmetric.MetricTypeSum:
m.Sum().SetAggregationTemporality(scn.AggregationTemporalityOverride())
case pmetric.MetricTypeHistogram:
m.Histogram().SetAggregationTemporality(scn.AggregationTemporalityOverride())
case pmetric.MetricTypeExponentialHistogram:
m.ExponentialHistogram().SetAggregationTemporality(scn.AggregationTemporalityOverride())
default:
// no-op
}
}
})
resources, err := metricstmpl.GetResources(scn.Path, cfg.StartTime, scn.Scale, scn.TemplateVars, r)
if err != nil {
return nil, err
}
scenarios = append(scenarios, Scenario{
config: scn,
metricsTemplate: &metrics,
resources: resources,
})
}
return &MetricsGenReceiver{
cfg: cfg,
settings: set,
obsreport: obsreport,
rand: r,
scenarios: scenarios,
}, nil
}