From 341b33f465480abc13817c7320c6b21388f7a317 Mon Sep 17 00:00:00 2001 From: Adriel Perkins Date: Wed, 10 Jul 2024 12:03:10 -0400 Subject: [PATCH] [mdatagen] fix generated comp test for extensions and unused imports in templates (#10477) #### Description When upgrading beyond `v0.101.0` of `mdatagen` I ran into issues upgrading when running `golanglint-ci` because of unused imports. Namely, in `component_tests` the `component` was removed from [this commit](https://github.com/open-telemetry/opentelemetry-collector/compare/v0.101.0...v0.102.0?diff=split&w=#diff-abf7cf477183f2c7e2f9425655bea3a2e2060eaba8fb6aa9c9a9558017c21f1e) which was not caught by tests (it appears we only test receiver components & not others). The logic that generates tests for extensions, where I caught this error, ends up with a `generated_component_test` that does not use `component` in the package at all. I would've thought the contrib repo would've detected this issue since they also use `mdatagen` and there are extensions there + golangci-lint. I haven't dug into the why it wasn't caught there yet. > This is just a quick fix for extensions. I suspect this issue may pop up in other components as time goes on. Long term is more tests for other components. #### Testing I ran this locally against my own repo where the issue originally showed & ensured the value would be templated out appropriately. ![image](https://github.com/open-telemetry/opentelemetry-collector/assets/25961386/f82abb28-7b78-401f-8875-cb2c66f5cf9b) --- .chloggen/fix-component-tests.yaml | 25 +++++++++++++++++++ cmd/mdatagen/templates/component_test.go.tmpl | 2 +- cmd/mdatagen/templates/telemetry_test.go.tmpl | 2 -- 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 .chloggen/fix-component-tests.yaml diff --git a/.chloggen/fix-component-tests.yaml b/.chloggen/fix-component-tests.yaml new file mode 100644 index 00000000000..5f9543f0561 --- /dev/null +++ b/.chloggen/fix-component-tests.yaml @@ -0,0 +1,25 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: bug_fix + +# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver) +component: mdatagen + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: fix generated comp test for extensions and unused imports in templates + +# One or more tracking issues or pull requests related to the change +issues: [10477] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [] diff --git a/cmd/mdatagen/templates/component_test.go.tmpl b/cmd/mdatagen/templates/component_test.go.tmpl index 45deb99e545..bfc70c2b751 100644 --- a/cmd/mdatagen/templates/component_test.go.tmpl +++ b/cmd/mdatagen/templates/component_test.go.tmpl @@ -16,7 +16,7 @@ import ( {{- end }} "github.com/stretchr/testify/require" - {{- if not (and .Tests.SkipLifecycle .Tests.SkipShutdown) }} + {{- if and (not (and .Tests.SkipLifecycle .Tests.SkipShutdown)) (not isExtension) }} "go.opentelemetry.io/collector/component" {{- end }} "go.opentelemetry.io/collector/component/componenttest" diff --git a/cmd/mdatagen/templates/telemetry_test.go.tmpl b/cmd/mdatagen/templates/telemetry_test.go.tmpl index 244a0c92a0b..0663d3a0790 100644 --- a/cmd/mdatagen/templates/telemetry_test.go.tmpl +++ b/cmd/mdatagen/templates/telemetry_test.go.tmpl @@ -7,8 +7,6 @@ import ( "github.com/stretchr/testify/require" "go.opentelemetry.io/otel/metric" - sdkmetric "go.opentelemetry.io/otel/sdk/metric" - "go.opentelemetry.io/otel/sdk/metric/metricdata" embeddedmetric "go.opentelemetry.io/otel/metric/embedded" noopmetric "go.opentelemetry.io/otel/metric/noop" "go.opentelemetry.io/otel/trace"