diff --git a/exporter/awscloudwatchlogsexporter/exporter_test.go b/exporter/awscloudwatchlogsexporter/exporter_test.go index 950ee1060bbf..b3beb77bcb7b 100644 --- a/exporter/awscloudwatchlogsexporter/exporter_test.go +++ b/exporter/awscloudwatchlogsexporter/exporter_test.go @@ -32,6 +32,13 @@ func init() { type mockPusher struct { mock.Mock } +type mockHost struct { + component.Host +} + +func (m *mockHost) GetExtensions() map[component.ID]component.Component { + return nil +} func (p *mockPusher) AddLogEntry(_ *cwlogs.Event) error { args := p.Called(nil) @@ -509,7 +516,14 @@ func TestNewExporterWithoutRegionErr(t *testing.T) { factory := NewFactory() expCfg := factory.CreateDefaultConfig().(*Config) expCfg.MaxRetries = 0 + expCfg.Region = "" // Ensure the region is not set + exp, err := newCwLogsExporter(expCfg, exportertest.NewNopSettings()) - assert.Nil(t, exp) - assert.Error(t, err) + assert.NoError(t, err) // The exporter creation should not fail + assert.NotNil(t, exp) // The exporter should be created + + // Now try to start the exporter + err = exp.Start(context.Background(), &mockHost{}) + assert.Error(t, err) // The start should fail due to missing region + assert.Contains(t, err.Error(), "NoAwsRegion") } diff --git a/exporter/awsxrayexporter/awsxray.go b/exporter/awsxrayexporter/awsxray.go index 07ec1230bde6..2f6432da1a23 100644 --- a/exporter/awsxrayexporter/awsxray.go +++ b/exporter/awsxrayexporter/awsxray.go @@ -44,17 +44,10 @@ func newTracesExporter( typeLog := zap.String("type", set.ID.Type().String()) nameLog := zap.String("name", set.ID.String()) logger := set.Logger - awsConfig, session, err := awsutil.GetAWSConfigSession(logger, cn, &cfg.AWSSessionSettings) - if err != nil { - return nil, err - } - xrayClient := awsxray.NewXRayClient(logger, awsConfig, set.BuildInfo, session) - sender := telemetry.NewNopSender() - if cfg.TelemetryConfig.Enabled { - opts := telemetry.ToOptions(cfg.TelemetryConfig, session, &cfg.AWSSessionSettings) - opts = append(opts, telemetry.WithLogger(set.Logger)) - sender = registry.Register(set.ID, cfg.TelemetryConfig, xrayClient, opts...) - } + + var xrayClient awsxray.XRayClient + var sender telemetry.Sender = telemetry.NewNopSender() + return exporterhelper.NewTracesExporter( context.TODO(), set, @@ -99,7 +92,19 @@ func newTracesExporter( } return err }, - exporterhelper.WithStart(func(_ context.Context, host component.Host) error { + exporterhelper.WithStart(func(ctx context.Context, host component.Host) error { + awsConfig, session, err := awsutil.GetAWSConfigSession(logger, cn, &cfg.AWSSessionSettings) + if err != nil { + return err + } + xrayClient = awsxray.NewXRayClient(logger, awsConfig, set.BuildInfo, session) + + if cfg.TelemetryConfig.Enabled { + opts := telemetry.ToOptions(cfg.TelemetryConfig, session, &cfg.AWSSessionSettings) + opts = append(opts, telemetry.WithLogger(set.Logger)) + sender = registry.Register(set.ID, cfg.TelemetryConfig, xrayClient, opts...) + } + sender.Start() if cfg.MiddlewareID != nil { awsmiddleware.TryConfigure(logger, host, *cfg.MiddlewareID, awsmiddleware.SDKv1(xrayClient.Handlers())) diff --git a/exporter/awsxrayexporter/awsxray_test.go b/exporter/awsxrayexporter/awsxray_test.go index 4a76aee04928..28df48f42d26 100644 --- a/exporter/awsxrayexporter/awsxray_test.go +++ b/exporter/awsxrayexporter/awsxray_test.go @@ -206,6 +206,14 @@ func BenchmarkForTracesExporter(b *testing.B) { } } +type mockHost struct { + component.Host +} + +func (m *mockHost) GetExtensions() map[component.ID]component.Component { + return nil +} + func initializeTracesExporter(t testing.TB, exporterConfig *Config, registry telemetry.Registry) exporter.Traces { t.Helper() mconn := new(awsutil.Conn) @@ -213,9 +221,12 @@ func initializeTracesExporter(t testing.TB, exporterConfig *Config, registry tel if err != nil { panic(err) } + err = traceExporter.Start(context.Background(), &mockHost{}) + if err != nil { + panic(err) + } return traceExporter } - func generateConfig(t testing.TB) *Config { t.Setenv("AWS_ACCESS_KEY_ID", "AKIASSWVJUY4PZXXXXXX") t.Setenv("AWS_SECRET_ACCESS_KEY", "XYrudg2H87u+ADAAq19Wqx3D41a09RsTXXXXXXXX")