Skip to content

Commit 29eafb6

Browse files
jade-guiton-ddopentelemetrybot
authored andcommitted
Generate replaces automatically in builder-integration-test (#11793)
This PR removes the manually maintained `replace` statements in `cmd/builder/test/core.builder.yaml` and generates them automatically in `cmd/builder/test/test.sh`. This ensures that the builder integration test properly uses the local version of core collector modules, even if a `replace` statement is forgotten. This is especially important in release PRs where dependencies have not-yet-valid version numbers (see tracking issue for context). I believe a better implementation of this long-term may be to commit a `go.work` file to the repository as the single source of truth for `replace`s, and let the `go` commands run by `ocb` take it into account automatically. (This would also avoid needing to maintain the `replace`s in every `go.mod`, which can be annoying when `make crosslink` is not sufficient.) But as there were [objections the last time this was discussed](open-telemetry/opentelemetry-collector-contrib#21972 (comment)), I decided to leave this as a future discussion. Fixes #11607 We can simulate a Release PR by setting the `exporter` import in `debugexporter` to an invalid version like `0.999.0`. With the new script, this causes no problems, showing that the build uses the local version without fetching from the proxy. Filtering the `exporter` module from the replace statements by adding this to the script: ```bash core_mods=$(echo "$core_mods" | grep -v "/exporter$") ``` makes `ocb` output the expected `unknown revision` error.
1 parent 4fc50a8 commit 29eafb6

File tree

2 files changed

+10
-65
lines changed

2 files changed

+10
-65
lines changed

cmd/builder/test/core.builder.yaml

Lines changed: 0 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -12,67 +12,3 @@ receivers:
1212
exporters:
1313
- gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.116.0
1414

15-
replaces:
16-
- go.opentelemetry.io/collector => ${WORKSPACE_DIR}
17-
- go.opentelemetry.io/collector/client => ${WORKSPACE_DIR}/client
18-
- go.opentelemetry.io/collector/component => ${WORKSPACE_DIR}/component
19-
- go.opentelemetry.io/collector/component/componenttest => ${WORKSPACE_DIR}/component/componenttest
20-
- go.opentelemetry.io/collector/component/componentstatus => ${WORKSPACE_DIR}/component/componentstatus
21-
- go.opentelemetry.io/collector/config/configauth => ${WORKSPACE_DIR}/config/configauth
22-
- go.opentelemetry.io/collector/config/configcompression => ${WORKSPACE_DIR}/config/configcompression
23-
- go.opentelemetry.io/collector/config/configgrpc => ${WORKSPACE_DIR}/config/configgrpc
24-
- go.opentelemetry.io/collector/config/confighttp => ${WORKSPACE_DIR}/config/confighttp
25-
- go.opentelemetry.io/collector/config/confignet => ${WORKSPACE_DIR}/config/confignet
26-
- go.opentelemetry.io/collector/config/configopaque => ${WORKSPACE_DIR}/config/configopaque
27-
- go.opentelemetry.io/collector/config/configretry => ${WORKSPACE_DIR}/config/configretry
28-
- go.opentelemetry.io/collector/config/configtelemetry => ${WORKSPACE_DIR}/config/configtelemetry
29-
- go.opentelemetry.io/collector/config/configtls => ${WORKSPACE_DIR}/config/configtls
30-
- go.opentelemetry.io/collector/config/internal => ${WORKSPACE_DIR}/config/internal
31-
- go.opentelemetry.io/collector/confmap => ${WORKSPACE_DIR}/confmap
32-
- go.opentelemetry.io/collector/confmap/provider/envprovider => ${WORKSPACE_DIR}/confmap/provider/envprovider
33-
- go.opentelemetry.io/collector/confmap/provider/fileprovider => ${WORKSPACE_DIR}/confmap/provider/fileprovider
34-
- go.opentelemetry.io/collector/confmap/provider/httpprovider => ${WORKSPACE_DIR}/confmap/provider/httpprovider
35-
- go.opentelemetry.io/collector/confmap/provider/httpsprovider => ${WORKSPACE_DIR}/confmap/provider/httpsprovider
36-
- go.opentelemetry.io/collector/confmap/provider/yamlprovider => ${WORKSPACE_DIR}/confmap/provider/yamlprovider
37-
- go.opentelemetry.io/collector/consumer => ${WORKSPACE_DIR}/consumer
38-
- go.opentelemetry.io/collector/consumer/consumererror => ${WORKSPACE_DIR}/consumer/consumererror
39-
- go.opentelemetry.io/collector/consumer/consumererror/consumererrorprofiles => ${WORKSPACE_DIR}/consumer/consumererror/consumererrorprofiles
40-
- go.opentelemetry.io/collector/consumer/consumererror/xconsumererror => ${WORKSPACE_DIR}/consumer/consumererror/xconsumererror
41-
- go.opentelemetry.io/collector/consumer/xconsumer => ${WORKSPACE_DIR}/consumer/xconsumer
42-
- go.opentelemetry.io/collector/consumer/consumertest => ${WORKSPACE_DIR}/consumer/consumertest
43-
- go.opentelemetry.io/collector/connector => ${WORKSPACE_DIR}/connector
44-
- go.opentelemetry.io/collector/connector/connectortest => ${WORKSPACE_DIR}/connector/connectortest
45-
- go.opentelemetry.io/collector/connector/xconnector => ${WORKSPACE_DIR}/connector/xconnector
46-
- go.opentelemetry.io/collector/exporter => ${WORKSPACE_DIR}/exporter
47-
- go.opentelemetry.io/collector/exporter/debugexporter => ${WORKSPACE_DIR}/exporter/debugexporter
48-
- go.opentelemetry.io/collector/exporter/xexporter => ${WORKSPACE_DIR}/exporter/xexporter
49-
- go.opentelemetry.io/collector/exporter/exportertest => ${WORKSPACE_DIR}/exporter/exportertest
50-
- go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper => ${WORKSPACE_DIR}/exporter/exporterhelper/xexporterhelper
51-
- go.opentelemetry.io/collector/extension => ${WORKSPACE_DIR}/extension
52-
- go.opentelemetry.io/collector/extension/auth => ${WORKSPACE_DIR}/extension/auth
53-
- go.opentelemetry.io/collector/extension/auth/authtest => ${WORKSPACE_DIR}/extension/auth/authtest
54-
- go.opentelemetry.io/collector/extension/experimental/storage => ${WORKSPACE_DIR}/extension/experimental/storage
55-
- go.opentelemetry.io/collector/extension/extensioncapabilities => ${WORKSPACE_DIR}/extension/extensioncapabilities
56-
- go.opentelemetry.io/collector/extension/extensiontest => ${WORKSPACE_DIR}/extension/extensiontest
57-
- go.opentelemetry.io/collector/extension/zpagesextension => ${WORKSPACE_DIR}/extension/zpagesextension
58-
- go.opentelemetry.io/collector/featuregate => ${WORKSPACE_DIR}/featuregate
59-
- go.opentelemetry.io/collector/internal/memorylimiter => ${WORKSPACE_DIR}/internal/memorylimiter
60-
- go.opentelemetry.io/collector/internal/fanoutconsumer => ${WORKSPACE_DIR}/internal/fanoutconsumer
61-
- go.opentelemetry.io/collector/internal/sharedcomponent => ${WORKSPACE_DIR}/internal/sharedcomponent
62-
- go.opentelemetry.io/collector/otelcol => ${WORKSPACE_DIR}/otelcol
63-
- go.opentelemetry.io/collector/otelcol/otelcoltest => ${WORKSPACE_DIR}/otelcol/otelcoltest
64-
- go.opentelemetry.io/collector/pdata => ${WORKSPACE_DIR}/pdata
65-
- go.opentelemetry.io/collector/pdata/pprofile => ${WORKSPACE_DIR}/pdata/pprofile
66-
- go.opentelemetry.io/collector/pdata/testdata => ${WORKSPACE_DIR}/pdata/testdata
67-
- go.opentelemetry.io/collector/pipeline => ${WORKSPACE_DIR}/pipeline
68-
- go.opentelemetry.io/collector/pipeline/xpipeline => ${WORKSPACE_DIR}/pipeline/xpipeline
69-
- go.opentelemetry.io/collector/processor => ${WORKSPACE_DIR}/processor
70-
- go.opentelemetry.io/collector/processor/processortest => ${WORKSPACE_DIR}/processor/processortest
71-
- go.opentelemetry.io/collector/processor/xprocessor => ${WORKSPACE_DIR}/processor/xprocessor
72-
- go.opentelemetry.io/collector/receiver => ${WORKSPACE_DIR}/receiver
73-
- go.opentelemetry.io/collector/receiver/otlpreceiver => ${WORKSPACE_DIR}/receiver/otlpreceiver
74-
- go.opentelemetry.io/collector/receiver/xreceiver => ${WORKSPACE_DIR}/receiver/xreceiver
75-
- go.opentelemetry.io/collector/receiver/receivertest => ${WORKSPACE_DIR}/receiver/receivertest
76-
- go.opentelemetry.io/collector/scraper => ${WORKSPACE_DIR}/scraper
77-
- go.opentelemetry.io/collector/semconv => ${WORKSPACE_DIR}/semconv
78-
- go.opentelemetry.io/collector/service => ${WORKSPACE_DIR}/service

cmd/builder/test/test.sh

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ test_build_config() {
3333
echo "Starting test '${test}' at $(date)" >> "${out}/test.log"
3434

3535
final_build_config=$(basename "${build_config}")
36-
"${WORKSPACE_DIR}/.tools/envsubst" < "$build_config" > "${out}/${final_build_config}"
36+
"${WORKSPACE_DIR}/.tools/envsubst" -o "${out}/${final_build_config}" -i <(cat "$build_config" "$replaces")
3737
if ! go run . --config "${out}/${final_build_config}" --output-path "${out}" > "${out}/builder.log" 2>&1; then
3838
echo "❌ FAIL ${test}. Failed to compile the test ${test}. Build logs:"
3939
cat "${out}/builder.log"
@@ -113,6 +113,15 @@ tests="core"
113113
base=$(mktemp -d)
114114
echo "Running the tests in ${base}"
115115

116+
replaces="$base/replaces"
117+
# Get path of all core modules, in sorted order, without the initial dot
118+
core_mods=$(cd ../.. && find . -type f -name "go.mod" -exec dirname {} \; | sort | sed 's/.//')
119+
echo "replaces:" >> "$replaces"
120+
for mod in $core_mods; do
121+
echo " - go.opentelemetry.io/collector$mod => \${WORKSPACE_DIR}$mod" >> "$replaces"
122+
done
123+
echo "Wrote replace statements to $replaces"
124+
116125
failed=false
117126

118127
for test in $tests

0 commit comments

Comments
 (0)