in exporter/collector/integrationtest/cmd/recordfixtures/main.go [150:195]
func (fr fixtureRecorder) recordMetrics(ctx context.Context, t *FakeTesting, startTime, endTime time.Time) {
for _, test := range testcases.MetricsTestCases {
if test.Skip {
continue
}
testServer, err := cloudmock.NewMetricTestServer()
if err != nil {
panic(err)
}
//nolint:errcheck
go testServer.Serve()
require.NoError(t, fr.checkDuplicate(test))
func() {
metrics := test.LoadOTLPMetricsInput(t, startTime, endTime)
inMemoryOTelExporter, err := integrationtest.NewInMemoryOTelExporter()
testServerExporter := integrationtest.NewMetricTestExporter(ctx, t, testServer, test.CreateCollectorMetricConfig(), inMemoryOTelExporter.MeterProvider)
require.NoError(t, err)
//nolint:errcheck
defer inMemoryOTelExporter.Shutdown(ctx)
err = testServerExporter.PushMetrics(ctx, metrics)
if !test.ExpectErr {
require.NoError(t, err, "failed to export metrics to local test server")
} else {
require.Error(t, err, "didn't record expected error")
}
require.NoError(t, testServerExporter.Shutdown(ctx))
selfObsMetrics, err := inMemoryOTelExporter.Proto(ctx)
require.NoError(t, err)
fixture := &protos.MetricExpectFixture{
CreateMetricDescriptorRequests: testServer.CreateMetricDescriptorRequests(),
CreateTimeSeriesRequests: testServer.CreateTimeSeriesRequests(),
CreateServiceTimeSeriesRequests: testServer.CreateServiceTimeSeriesRequests(),
SelfObservabilityMetrics: selfObsMetrics,
UserAgent: testcases.UserAgentRemoveRuntimeInfo(testServer.UserAgent()),
}
test.SaveRecordedMetricFixtures(t, fixture)
}()
testServer.Shutdown()
}
}