func()

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()
	}
}