Skip to content

Commit

Permalink
[chore][exporter/azuredataexplorerexporter] Enable goleak check (open…
Browse files Browse the repository at this point in the history
…-telemetry#30768)

**Description:** <Describe what has changed.>
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
This change enables `goleak` checks for the [Azure Data Explorer
Exporter](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/azuredataexplorerexporter).
This is a test only update, adding some `Close` calls that were missing
and causing leaks.
  
**Link to tracking Issue:** <Issue number if applicable>
open-telemetry#30438

**Testing:** <Describe what testing was performed and which tests were
added.>
All tests are passing, including added goleak check.
  • Loading branch information
crobert-1 authored and cparkins committed Feb 1, 2024
1 parent 46e926d commit e33c498
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 7 deletions.
24 changes: 17 additions & 7 deletions exporter/azuredataexplorerexporter/adx_exporter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,24 @@ func TestNewExporter(t *testing.T) {
LogTableMapping: "otellogs_mapping",
TraceTableMapping: "oteltraces_mapping",
}
texp, err := newExporter(&c, logger, metricsType, component.NewDefaultBuildInfo().Version)
mexp, err := newExporter(&c, logger, metricsType, component.NewDefaultBuildInfo().Version)
assert.NoError(t, err)
assert.NotNil(t, texp)
texp, err = newExporter(&c, logger, logsType, component.NewDefaultBuildInfo().Version)
assert.NotNil(t, mexp)
assert.NoError(t, mexp.Close(context.Background()))

lexp, err := newExporter(&c, logger, logsType, component.NewDefaultBuildInfo().Version)
assert.NoError(t, err)
assert.NotNil(t, texp)
texp, err = newExporter(&c, logger, tracesType, component.NewDefaultBuildInfo().Version)
assert.NotNil(t, lexp)
assert.NoError(t, lexp.Close(context.Background()))

texp, err := newExporter(&c, logger, tracesType, component.NewDefaultBuildInfo().Version)
assert.NoError(t, err)
assert.NotNil(t, texp)
texp, err = newExporter(&c, logger, 5, component.NewDefaultBuildInfo().Version)
assert.NoError(t, texp.Close(context.Background()))

fexp, err := newExporter(&c, logger, 5, component.NewDefaultBuildInfo().Version)
assert.Error(t, err)
assert.Nil(t, texp)
assert.Nil(t, fexp)
}

func TestMetricsDataPusherStreaming(t *testing.T) {
Expand All @@ -67,6 +73,7 @@ func TestMetricsDataPusherStreaming(t *testing.T) {
assert.NotNil(t, adxDataProducer)
err := adxDataProducer.metricsDataPusher(context.Background(), createMetricsData(10))
assert.Error(t, err)
assert.NoError(t, adxDataProducer.Close(context.Background()))
}

func TestMetricsDataPusherQueued(t *testing.T) {
Expand All @@ -85,6 +92,7 @@ func TestMetricsDataPusherQueued(t *testing.T) {
assert.NotNil(t, adxDataProducer)
err := adxDataProducer.metricsDataPusher(context.Background(), createMetricsData(10))
assert.Error(t, err)
assert.NoError(t, adxDataProducer.Close(context.Background()))
}

func TestLogsDataPusher(t *testing.T) {
Expand All @@ -103,6 +111,7 @@ func TestLogsDataPusher(t *testing.T) {
assert.NotNil(t, adxDataProducer)
err := adxDataProducer.logsDataPusher(context.Background(), createLogsData())
assert.Error(t, err)
assert.NoError(t, adxDataProducer.Close(context.Background()))
}

func TestTracesDataPusher(t *testing.T) {
Expand All @@ -121,6 +130,7 @@ func TestTracesDataPusher(t *testing.T) {
assert.NotNil(t, adxDataProducer)
err := adxDataProducer.tracesDataPusher(context.Background(), createTracesData())
assert.Error(t, err)
assert.NoError(t, adxDataProducer.Close(context.Background()))
}

func TestClose(t *testing.T) {
Expand Down
1 change: 1 addition & 0 deletions exporter/azuredataexplorerexporter/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ require (
go.opentelemetry.io/collector/pdata v1.0.2-0.20240130181942-9c7177496fd5
go.opentelemetry.io/otel/metric v1.22.0
go.opentelemetry.io/otel/trace v1.22.0
go.uber.org/goleak v1.3.0
go.uber.org/zap v1.26.0
)

Expand Down
1 change: 1 addition & 0 deletions exporter/azuredataexplorerexporter/go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions exporter/azuredataexplorerexporter/package_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package azuredataexplorerexporter

import (
"testing"

"go.uber.org/goleak"
)

// The IgnoreTopFunction call prevents catching the leak generated by opencensus
// defaultWorker.Start which at this time is part of the package's init call.
// See https://github.com/census-instrumentation/opencensus-go/issues/1191 for more information.
func TestMain(m *testing.M) {
goleak.VerifyTestMain(m, goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"))
}

0 comments on commit e33c498

Please sign in to comment.