Skip to content

Commit 129e6e7

Browse files
authored
[receiver/opencensus] refactor the code for maintenance and lifecycle tests (#31648)
**Description:** Simplify the code of the opencensus receiver to make it more maintainable, reduce leaks and pass lifecycle tests. **Link to tracking Issue:** Fixes #31643
1 parent 80ebb76 commit 129e6e7

File tree

8 files changed

+247
-205
lines changed

8 files changed

+247
-205
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Use this changelog template to create an entry for release notes.
2+
3+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
4+
change_type: bug_fix
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver)
7+
component: opencensusreceiver
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Refactor the opencensusreceiver to pass lifecycle tests and avoid leaking gRPC connections.
11+
12+
# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
13+
issues: [31643]
14+
15+
# (Optional) One or more lines of additional information to render under the primary note.
16+
# These lines will be padded with 2 spaces and then inserted directly into the document.
17+
# Use pipe (|) for multiline entries.
18+
subtext:
19+
20+
# If your change doesn't affect end users or the exported elements of any package,
21+
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
22+
# Optional: The change log or logs in which this entry should be included.
23+
# e.g. '[user]' or '[user, api]'
24+
# Include 'user' if the change is relevant to end users.
25+
# Include 'api' if there is a change to a library API.
26+
# Default: '[user]'
27+
change_logs: []

receiver/opencensusreceiver/factory.go

+2-14
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,10 @@ func createTracesReceiver(
4747
cfg component.Config,
4848
nextConsumer consumer.Traces,
4949
) (receiver.Traces, error) {
50-
var err error
5150
r := receivers.GetOrAdd(cfg, func() component.Component {
5251
rCfg := cfg.(*Config)
53-
var recv *ocReceiver
54-
recv, err = newOpenCensusReceiver(string(rCfg.NetAddr.Transport), rCfg.NetAddr.Endpoint, nil, nil, set, rCfg.buildOptions()...)
55-
return recv
52+
return newOpenCensusReceiver(rCfg, nil, nil, set, rCfg.buildOptions()...)
5653
})
57-
if err != nil {
58-
return nil, err
59-
}
6054
r.Unwrap().(*ocReceiver).traceConsumer = nextConsumer
6155

6256
return r, nil
@@ -68,16 +62,10 @@ func createMetricsReceiver(
6862
cfg component.Config,
6963
nextConsumer consumer.Metrics,
7064
) (receiver.Metrics, error) {
71-
var err error
7265
r := receivers.GetOrAdd(cfg, func() component.Component {
7366
rCfg := cfg.(*Config)
74-
var recv *ocReceiver
75-
recv, err = newOpenCensusReceiver(string(rCfg.NetAddr.Transport), rCfg.NetAddr.Endpoint, nil, nil, set, rCfg.buildOptions()...)
76-
return recv
67+
return newOpenCensusReceiver(rCfg, nil, nil, set, rCfg.buildOptions()...)
7768
})
78-
if err != nil {
79-
return nil, err
80-
}
8169
r.Unwrap().(*ocReceiver).metricsConsumer = nextConsumer
8270

8371
return r, nil

receiver/opencensusreceiver/factory_test.go

+8-9
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,12 @@ func TestCreateTracesReceiver(t *testing.T) {
8686
for _, tt := range tests {
8787
t.Run(tt.name, func(t *testing.T) {
8888
tr, err := createTracesReceiver(ctx, set, tt.cfg, consumertest.NewNop())
89+
require.NoError(t, err)
90+
err = tr.Start(context.Background(), componenttest.NewNopHost())
8991
if (err != nil) != tt.wantErr {
9092
t.Errorf("factory.CreateTracesReceiver() error = %v, wantErr %v", err, tt.wantErr)
91-
return
92-
}
93-
if tr != nil {
94-
require.NoError(t, tr.Start(context.Background(), componenttest.NewNopHost()))
95-
require.NoError(t, tr.Shutdown(context.Background()))
9693
}
94+
require.NoError(t, tr.Shutdown(context.Background()))
9795
})
9896
}
9997
}
@@ -152,14 +150,15 @@ func TestCreateMetricsReceiver(t *testing.T) {
152150
for _, tt := range tests {
153151
t.Run(tt.name, func(t *testing.T) {
154152
tc, err := createMetricsReceiver(context.Background(), set, tt.cfg, consumertest.NewNop())
153+
require.NoError(t, err)
154+
err = tc.Start(context.Background(), componenttest.NewNopHost())
155+
defer func() {
156+
require.NoError(t, tc.Shutdown(context.Background()))
157+
}()
155158
if (err != nil) != tt.wantErr {
156159
t.Errorf("factory.CreateMetricsReceiver() error = %v, wantErr %v", err, tt.wantErr)
157160
return
158161
}
159-
if tc != nil {
160-
require.NoError(t, tc.Start(context.Background(), componenttest.NewNopHost()))
161-
require.NoError(t, tc.Shutdown(context.Background()))
162-
}
163162
})
164163
}
165164
}

receiver/opencensusreceiver/generated_component_test.go

+13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

receiver/opencensusreceiver/internal/ocmetrics/opencensus_test.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -357,11 +357,8 @@ func ocReceiverOnGRPCServer(t *testing.T, sr consumer.Metrics, set receiver.Crea
357357
ln, err := net.Listen("tcp", "localhost:")
358358
require.NoError(t, err, "Failed to find an available address to run the gRPC server: %v", err)
359359

360-
doneFnList := []func(){func() { ln.Close() }}
361360
done := func() {
362-
for _, doneFn := range doneFnList {
363-
doneFn()
364-
}
361+
_ = ln.Close()
365362
}
366363

367364
oci, err := New(sr, set)

receiver/opencensusreceiver/metadata.yaml

+1-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,4 @@ status:
1313
- redhat
1414
- sumo
1515
codeowners:
16-
active: [open-telemetry/collector-approvers]
17-
tests:
18-
config:
19-
skip_lifecycle: true
16+
active: [open-telemetry/collector-approvers]

0 commit comments

Comments
 (0)