Skip to content

Commit 5311461

Browse files
rockdabootTylerHelmuthedmocosta
authored andcommitted
[pkg/ottl] Introduce profiles based e2e tests (open-telemetry#40931)
#### Description Introduce OTTL e2e tests based on profiles. The tests uncovered an issue in accessAttributesKey(), which is fixed in this PR. The e2e test have been requested [here](open-telemetry#39416 (comment)) by @TylerHelmuth. #### Link to tracking issue Fixes open-telemetry#40738 #### THIS PR WILL ONLY WORK ON TOP OF open-telemetry#39416. --------- Co-authored-by: Tyler Helmuth <[email protected]> Co-authored-by: Edmo Vamerlatti Costa <[email protected]>
1 parent 4e474c3 commit 5311461

File tree

3 files changed

+1779
-1
lines changed

3 files changed

+1779
-1
lines changed

.chloggen/ottl-e2e-profiles.yaml

Lines changed: 27 additions & 0 deletions
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: pkg/ottl
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Fix an issue where the attribute values were amended in the profiles dictionary.
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: [40738]
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: [user]

pkg/ottl/contexts/internal/ctxprofile/profile.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,11 +348,29 @@ func accessAttributesKey[K Context](key []ottl.Key[K]) ottl.StandardGetSetter[K]
348348
if err != nil {
349349
return err
350350
}
351-
v := pcommon.NewValueEmpty()
351+
v := getAttributeValue(tCtx, *newKey)
352352
if err = ctxutil.SetIndexableValue[K](ctx, tCtx, v, val, key[1:]); err != nil {
353353
return err
354354
}
355355
return pprofile.PutAttribute(tCtx.GetProfilesDictionary().AttributeTable(), tCtx.GetProfile(), *newKey, v)
356356
},
357357
}
358358
}
359+
360+
func getAttributeValue[K ProfileContext](tCtx K, key string) pcommon.Value {
361+
// Find the index of the attribute in the profile's attribute indices
362+
// and return the corresponding value from the attribute table.
363+
table := tCtx.GetProfilesDictionary().AttributeTable()
364+
indices := tCtx.GetProfile().AttributeIndices().AsRaw()
365+
366+
for _, tableIndex := range indices {
367+
attr := table.At(int(tableIndex))
368+
if attr.Key() == key {
369+
v := pcommon.NewValueEmpty()
370+
attr.Value().CopyTo(v)
371+
return v
372+
}
373+
}
374+
375+
return pcommon.NewValueEmpty()
376+
}

0 commit comments

Comments
 (0)