Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

receiver_creator: don't embed endpoint field in unsupported configs #18641

Merged
merged 2 commits into from
Feb 27, 2023

Conversation

rmfitzpatrick
Copy link
Contributor

Description:
Fixing a bug - These changes add embedded config endpoint field validation to the receiver creator so that it doesn't try to set the field for a config that doesn't support it. Also including a small refactor of the expansion logic to support more formats like those of the prometheus receiver.

Link to tracking Issue:
#7381

Testing:
Updates existing observer handler tests to be more exhaustive than mock method call validation checks and adds more coverage for expansion suite.

Documentation:
Updated readme to describe the updated behavior.

@runforesight
Copy link

runforesight bot commented Feb 14, 2023

Foresight Summary

    
Major Impacts

build-and-test-windows duration(9 seconds) has decreased 41 minutes 10 seconds compared to main branch avg(41 minutes 19 seconds).
View More Details

✅  telemetrygen workflow has finished in 1 minute 8 seconds (1 minute 57 seconds less than main branch avg.) and finished at 15th Feb, 2023.


Job Failed Steps Tests
build-dev -     🔗  N/A See Details
publish-latest -     🔗  N/A See Details
publish-stable -     🔗  N/A See Details

✅  check-links workflow has finished in 1 minute 28 seconds (1 minute 5 seconds less than main branch avg.) and finished at 15th Feb, 2023.


Job Failed Steps Tests
changed files -     🔗  N/A See Details
check-links -     🔗  N/A See Details

✅  build-and-test workflow has finished in 42 minutes 23 seconds (23 minutes 9 seconds less than main branch avg.) and finished at 15th Feb, 2023.


Job Failed Steps Tests
unittest-matrix (1.19, internal) -     🔗  ✅ 561  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, internal) -     🔗  ✅ 561  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, processor) -     🔗  ✅ 1528  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, processor) -     🔗  ✅ 1528  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, extension) -     🔗  ✅ 537  ❌ 0  ⏭ 0    🔗 See Details
correctness-metrics -     🔗  ✅ 2  ❌ 0  ⏭ 0    🔗 See Details
correctness-traces -     🔗  ✅ 17  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, receiver-0) -     🔗  ✅ 2574  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, receiver-0) -     🔗  ✅ 2574  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, exporter) -     🔗  ✅ 2455  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, exporter) -     🔗  ✅ 2455  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, receiver-1) -     🔗  ✅ 1933  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, extension) -     🔗  ✅ 537  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, other) -     🔗  ✅ 4687  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, receiver-1) -     🔗  ✅ 1933  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, other) -     🔗  ✅ 4687  ❌ 0  ⏭ 0    🔗 See Details
integration-tests -     🔗  ✅ 55  ❌ 0  ⏭ 0    🔗 See Details
setup-environment -     🔗  N/A See Details
lint-matrix (receiver-1) -     🔗  N/A See Details
lint-matrix (processor) -     🔗  N/A See Details
lint-matrix (receiver-0) -     🔗  N/A See Details
lint-matrix (extension) -     🔗  N/A See Details
lint-matrix (exporter) -     🔗  N/A See Details
checks -     🔗  N/A See Details
build-examples -     🔗  N/A See Details
lint-matrix (internal) -     🔗  N/A See Details
check-collector-module-version -     🔗  N/A See Details
lint-matrix (other) -     🔗  N/A See Details
check-codeowners -     🔗  N/A See Details
lint -     🔗  N/A See Details
unittest (1.20) -     🔗  N/A See Details
unittest (1.19) -     🔗  N/A See Details
cross-compile (darwin, amd64) -     🔗  N/A See Details
cross-compile (darwin, arm64) -     🔗  N/A See Details
cross-compile (linux, 386) -     🔗  N/A See Details
cross-compile (linux, amd64) -     🔗  N/A See Details
cross-compile (linux, arm) -     🔗  N/A See Details
cross-compile (linux, arm64) -     🔗  N/A See Details
cross-compile (linux, ppc64le) -     🔗  N/A See Details
cross-compile (windows, 386) -     🔗  N/A See Details
cross-compile (windows, amd64) -     🔗  N/A See Details
build-package (deb) -     🔗  N/A See Details
build-package (rpm) -     🔗  N/A See Details
windows-msi -     🔗  N/A See Details
publish-check -     🔗  N/A See Details
publish-dev -     🔗  N/A See Details
publish-stable -     🔗  N/A See Details

✅  load-tests workflow has finished in 7 minutes 53 seconds (9 minutes 4 seconds less than main branch avg.) and finished at 15th Feb, 2023.


Job Failed Steps Tests
loadtest (TestIdleMode) -     🔗  ✅ 1  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestTraceAttributesProcessor) -     🔗  ✅ 3  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestMetric10kDPS|TestMetricsFromFile) -     🔗  ✅ 6  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestTraceNoBackend10kSPS|TestTrace1kSPSWithAttrs) -     🔗  ✅ 8  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestMetricResourceProcessor|TestTrace10kSPS) -     🔗  ✅ 12  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestTraceBallast1kSPSWithAttrs|TestTraceBallast1kSPSAddAttrs) -     🔗  ✅ 10  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestBallastMemory|TestLog10kDPS) -     🔗  ✅ 18  ❌ 0  ⏭ 0    🔗 See Details
setup-environment -     🔗  N/A See Details

✅  prometheus-compliance-tests workflow has finished in 12 minutes 37 seconds (⚠️ 3 minutes 43 seconds more than main branch avg.) and finished at 15th Feb, 2023.


Job Failed Steps Tests
prometheus-compliance-tests -     🔗  ✅ 21  ❌ 0  ⏭ 0    🔗 See Details

✅  e2e-tests workflow has finished in 12 minutes 50 seconds (3 minutes 35 seconds less than main branch avg.) and finished at 15th Feb, 2023.


Job Failed Steps Tests
kubernetes-test -     🔗  N/A See Details

⭕  build-and-test-windows workflow has finished in 9 seconds (41 minutes 10 seconds less than main branch avg.) and finished at 25th Feb, 2023.


Job Failed Steps Tests
windows-unittest-matrix -     🔗  N/A See Details
windows-unittest -     🔗  N/A See Details

✅  changelog workflow has finished in 2 minutes 15 seconds and finished at 25th Feb, 2023.


Job Failed Steps Tests
changelog -     🔗  N/A See Details

🔎 See details on Foresight

*You can configure Foresight comments in your organization settings page.

@@ -57,6 +57,14 @@ func (mh *mockHostFactories) GetExtensions() map[component.ID]component.Componen
return mh.extensions
}

var portRule = func(s string) rule {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The linter required this change since newRuleOrPanic() was always used with the same argument.

Copy link
Contributor

@atoulme atoulme left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@atoulme atoulme added the ready to merge Code review completed; ready to merge by maintainers label Feb 25, 2023
Copy link
Contributor

@MovieStoreGuy MovieStoreGuy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Howdy!

These changes can be improved as highlighted by my comments but I sense there is some urgency on getting these out so I'm fine if you wish to follow up in a future PR.

Comment on lines +101 to +102
require.Error(t, mr.lastError)
require.EqualError(t, mr.lastError, test.expectedError)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line 101 isn't needed since it is tested with 102.

assert.Equal(t, 0, handler.receiversByEndpointID.Size())
require.Error(t, mr.lastError)
require.EqualError(t, mr.lastError, test.expectedError)
require.Nil(t, mr.startedComponent)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would leave this as assert instead of require since there is no risk of panicing and it is nice to know all errors within one test.

require.NotNil(t, v)
actualConfig = v.cfg
default:
t.Fatalf("unexpected startedComponent: %T", v)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe there is require.Fail(...) that you can use here instead of calling t directly, helps keep the test output consistent.

@@ -69,3 +71,59 @@ func Test_loadAndCreateRuntimeReceiver(t *testing.T) {
}())
})
}

func TestValidateSetEndpointFromConfig(t *testing.T) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would consider breaking this test up into a test table so that you can use assert instead of require to help surface errors within the same test run instead of requiring incremental changes that could conflict with each other.

@djaglowski djaglowski merged commit 2f8e6f7 into open-telemetry:main Feb 27, 2023
newly12 pushed a commit to newly12/opentelemetry-collector-contrib that referenced this pull request Feb 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready to merge Code review completed; ready to merge by maintainers receiver/receivercreator
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants