Skip to content

Commit 29a2582

Browse files
committed
chore: fix tests to properly update test config components alongside nrdot
1 parent fbfe83d commit 29a2582

3 files changed

Lines changed: 86 additions & 14 deletions

File tree

cmd/nrdot-collector-builder/internal/manifest/config.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func isStableVersion(version string) bool {
110110
}
111111

112112
func isCompatibleWithNrComponent(nrComponentVersion, betaVersion string) bool {
113-
return semver.Compare(nrComponentVersion, betaVersion) >= 0
113+
return semver.MajorMinor(nrComponentVersion) == semver.MajorMinor(betaVersion)
114114
}
115115

116116
func isCompatibleWithNrVersions(nrdotVersion, nrForkContribVersion, betaVersion string) bool {
@@ -150,12 +150,19 @@ func (c *Config) SetVersions() error {
150150
if isOtelCoreComponent(component.GoMod) {
151151
if isStableVersion(componentVersion) {
152152
versions.StableCoreVersion = componentVersion
153-
} else if isCompatibleWithNrVersions(versions.NrdotVersion, versions.NrForkContribVersion, componentVersion) {
154-
versions.BetaCoreVersion = componentVersion
153+
} else {
154+
if isCompatibleWithNrVersions(versions.NrdotVersion, versions.NrForkContribVersion, componentVersion) {
155+
versions.BetaCoreVersion = componentVersion
156+
} else {
157+
return fmt.Errorf("beta core version %s incompatible with nrdot %s or nr-fork %s", componentVersion, versions.NrdotVersion, versions.NrForkContribVersion)
158+
}
155159
}
156160
}
157161

158-
if isOtelContribComponent(component.GoMod) && !isStableVersion(componentVersion) && isCompatibleWithNrVersions(versions.NrdotVersion, versions.NrForkContribVersion, componentVersion) {
162+
if isOtelContribComponent(component.GoMod) && !isStableVersion(componentVersion) {
163+
if !isCompatibleWithNrVersions(versions.NrdotVersion, versions.NrForkContribVersion, componentVersion) {
164+
return fmt.Errorf("contrib version %s incompatible with nrdot %s or nr-fork %s", componentVersion, versions.NrdotVersion, versions.NrForkContribVersion)
165+
}
159166
versions.BetaContribVersion = componentVersion
160167
}
161168

cmd/nrdot-collector-builder/internal/manifest/config_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -177,12 +177,12 @@ func TestIsCompatibleWithNrComponent(t *testing.T) {
177177
name: "different minor versions - nrdot higher",
178178
nrdotVersion: "v0.143.0",
179179
betaVersion: "v0.142.5",
180-
expectedMatch: true,
180+
expectedMatch: false,
181181
},
182182
{
183183
name: "different minor versions - beta higher",
184184
nrdotVersion: "v0.142.0",
185-
betaVersion: "v0.142.1",
185+
betaVersion: "v0.143.0",
186186
expectedMatch: false,
187187
},
188188
{
@@ -195,7 +195,7 @@ func TestIsCompatibleWithNrComponent(t *testing.T) {
195195
name: "different patch versions - beta higher",
196196
nrdotVersion: "v0.142.3",
197197
betaVersion: "v0.142.5",
198-
expectedMatch: false,
198+
expectedMatch: true,
199199
},
200200
{
201201
name: "edge case - large version numbers",
@@ -231,7 +231,7 @@ func TestIsCompatibleWithNrVersions(t *testing.T) {
231231
expectedMatch: true,
232232
},
233233
{
234-
name: "all versions populated, beta higher than one",
234+
name: "all versions populated, beta minor version higher than one",
235235
nrdotVersion: "v0.141.0",
236236
nrForkContribVersion: "v0.142.0",
237237
betaVersion: "v0.142.0",
@@ -245,7 +245,7 @@ func TestIsCompatibleWithNrVersions(t *testing.T) {
245245
expectedMatch: true,
246246
},
247247
{
248-
name: "nrdotVersion empty, beta higher",
248+
name: "nrdotVersion empty, beta minor version higher",
249249
nrdotVersion: "",
250250
nrForkContribVersion: "v0.141.0",
251251
betaVersion: "v0.142.0",
@@ -291,7 +291,7 @@ func TestIsCompatibleWithNrVersions(t *testing.T) {
291291
nrdotVersion: "v0.142.0",
292292
nrForkContribVersion: "v0.142.0",
293293
betaVersion: "v0.142.5",
294-
expectedMatch: false,
294+
expectedMatch: true,
295295
},
296296
}
297297

cmd/nrdot-collector-builder/internal/manifest/main_test.go

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,35 +116,81 @@ func TestCopyAndUpdateConfigModules_Nrdot(t *testing.T) {
116116
{GoMod: "github.com/newrelic/nrdot-collector-components/processor/adaptivetelemetryprocessor v0.142.2"},
117117
}
118118
updates := map[string]VersionUpdate{
119-
"github.com/newrelic/nrdot-collector-components": {BetaVersion: "v0.147.0"},
119+
"go.opentelemetry.io/collector": {BetaVersion: "v0.147.0", StableVersion: "v1.53.0"},
120+
"github.com/open-telemetry/opentelemetry-collector-contrib": {BetaVersion: "v0.147.0"},
121+
"github.com/newrelic/nrdot-collector-components": {BetaVersion: "v0.147.0"},
120122
}
121123
result, err := CopyAndUpdateConfigModules(cfg, updates)
122124
assert.NoError(t, err)
123125
assert.Equal(t, "github.com/newrelic/nrdot-collector-components/processor/adaptivetelemetryprocessor v0.147.0", result.Processors[0].GoMod)
124126
}
125127

128+
func TestCopyAndUpdateConfigModules_NrdotWithoutUpstream(t *testing.T) {
129+
cfg := newTestCfg()
130+
cfg.Processors = []Module{
131+
{GoMod: "github.com/newrelic/nrdot-collector-components/processor/adaptivetelemetryprocessor v0.142.2"},
132+
}
133+
// Expect failure if only nrdot is advanced without upstream components
134+
updates := map[string]VersionUpdate{
135+
"github.com/newrelic/nrdot-collector-components": {BetaVersion: "v0.147.0"},
136+
}
137+
_, err := CopyAndUpdateConfigModules(cfg, updates)
138+
assert.Error(t, err)
139+
}
140+
141+
func TestCopyAndUpdateConfigModules_UpstreamWithoutNrdot(t *testing.T) {
142+
cfg := newTestCfg()
143+
cfg.Processors = []Module{
144+
{GoMod: "github.com/newrelic/nrdot-collector-components/processor/adaptivetelemetryprocessor v0.142.2"},
145+
}
146+
// Expect failure if upstream components are advanced without nrdot
147+
updates := map[string]VersionUpdate{
148+
"go.opentelemetry.io/collector": {BetaVersion: "v0.147.0", StableVersion: "v1.53.0"},
149+
"github.com/open-telemetry/opentelemetry-collector-contrib": {BetaVersion: "v0.147.0"},
150+
}
151+
_, err := CopyAndUpdateConfigModules(cfg, updates)
152+
assert.Error(t, err)
153+
}
154+
126155
func TestCopyAndUpdateConfigModules_NrForkContrib(t *testing.T) {
127156
cfg := newTestCfg()
128157
cfg.Receivers = []Module{
129-
{GoMod: "github.com/newrelic-forks/opentelemetry-collector-contrib/receiver/nrsqlserverreceiver v0.154.4"},
158+
{GoMod: "github.com/newrelic-forks/opentelemetry-collector-contrib/receiver/nrsqlserverreceiver v0.142.4"},
130159
}
131160
updates := map[string]VersionUpdate{
161+
"go.opentelemetry.io/collector": {BetaVersion: "v0.155.0", StableVersion: "v1.61.0"},
162+
"github.com/open-telemetry/opentelemetry-collector-contrib": {BetaVersion: "v0.155.0"},
132163
"github.com/newrelic-forks/opentelemetry-collector-contrib": {BetaVersion: "v0.155.0"},
133164
}
134165
result, err := CopyAndUpdateConfigModules(cfg, updates)
135166
assert.NoError(t, err)
136167
assert.Equal(t, "github.com/newrelic-forks/opentelemetry-collector-contrib/receiver/nrsqlserverreceiver v0.155.0", result.Receivers[0].GoMod)
137168
}
138169

170+
func TestCopyAndUpdateConfigModules_NrForkContribWithoutUpstream(t *testing.T) {
171+
cfg := newTestCfg()
172+
cfg.Receivers = []Module{
173+
{GoMod: "github.com/newrelic-forks/opentelemetry-collector-contrib/receiver/nrsqlserverreceiver v0.154.4"},
174+
}
175+
// Expect failure if only fork components are advanced without upstream
176+
updates := map[string]VersionUpdate{
177+
"github.com/newrelic-forks/opentelemetry-collector-contrib": {BetaVersion: "v0.155.0"},
178+
}
179+
_, err := CopyAndUpdateConfigModules(cfg, updates)
180+
assert.Error(t, err)
181+
}
182+
139183
func TestCopyAndUpdateConfigModules_NrdotAndNrFork(t *testing.T) {
140184
cfg := newTestCfg()
141185
cfg.Processors = []Module{
142-
{GoMod: "github.com/newrelic/nrdot-collector-components/processor/adaptivetelemetryprocessor v0.154.0"},
186+
{GoMod: "github.com/newrelic/nrdot-collector-components/processor/adaptivetelemetryprocessor v0.142.0"},
143187
}
144188
cfg.Receivers = []Module{
145-
{GoMod: "github.com/newrelic-forks/opentelemetry-collector-contrib/receiver/nrsqlserverreceiver v0.154.4"},
189+
{GoMod: "github.com/newrelic-forks/opentelemetry-collector-contrib/receiver/nrsqlserverreceiver v0.142.2"},
146190
}
147191
updates := map[string]VersionUpdate{
192+
"go.opentelemetry.io/collector": {BetaVersion: "v0.155.0", StableVersion: "v1.53.0"},
193+
"github.com/open-telemetry/opentelemetry-collector-contrib": {BetaVersion: "v0.155.0"},
148194
"github.com/newrelic/nrdot-collector-components": {BetaVersion: "v0.155.0"},
149195
"github.com/newrelic-forks/opentelemetry-collector-contrib": {BetaVersion: "v0.155.0"},
150196
}
@@ -154,6 +200,25 @@ func TestCopyAndUpdateConfigModules_NrdotAndNrFork(t *testing.T) {
154200
assert.Equal(t, "github.com/newrelic-forks/opentelemetry-collector-contrib/receiver/nrsqlserverreceiver v0.155.0", result.Receivers[0].GoMod)
155201
}
156202

203+
func TestCopyAndUpdateConfigModules_NrdotAndNrForkMisaligned(t *testing.T) {
204+
cfg := newTestCfg()
205+
cfg.Processors = []Module{
206+
{GoMod: "github.com/newrelic/nrdot-collector-components/processor/adaptivetelemetryprocessor v0.142.0"},
207+
}
208+
cfg.Receivers = []Module{
209+
{GoMod: "github.com/newrelic-forks/opentelemetry-collector-contrib/receiver/nrsqlserverreceiver v0.142.2"},
210+
}
211+
// Updating one component to incorrect minor should
212+
updates := map[string]VersionUpdate{
213+
"go.opentelemetry.io/collector": {BetaVersion: "v0.155.0", StableVersion: "v1.53.0"},
214+
"github.com/open-telemetry/opentelemetry-collector-contrib": {BetaVersion: "v0.155.0"},
215+
"github.com/newrelic/nrdot-collector-components": {BetaVersion: "v0.155.0"},
216+
"github.com/newrelic-forks/opentelemetry-collector-contrib": {BetaVersion: "v0.156.4"},
217+
}
218+
_, err := CopyAndUpdateConfigModules(cfg, updates)
219+
assert.Error(t, err)
220+
}
221+
157222
func TestCopyAndUpdateConfigModules_NoMatchUnchanged(t *testing.T) {
158223
cfg := newTestCfg()
159224
cfg.Receivers = []Module{

0 commit comments

Comments
 (0)