diff --git a/pkg/ottl/e2e/e2e_test.go b/pkg/ottl/e2e/e2e_test.go
index 77c948211784..618aa8f4cb43 100644
--- a/pkg/ottl/e2e/e2e_test.go
+++ b/pkg/ottl/e2e/e2e_test.go
@@ -330,635 +330,11 @@ func Test_e2e_converters(t *testing.T) {
want func(tCtx ottllog.TransformContext)
}{
{
- statement: `set(${attributes["test"]}, Base64Decode("cGFzcw=="))`,
+ statement: `set(attributes[attributes["flags"]], attributes["total.string"])`,
want: func(tCtx ottllog.TransformContext) {
- tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
+ tCtx.GetLogRecord().Attributes().PutStr("A|B|C", "123456789")
},
},
- // {
- // statement: `set(attributes["test"], Decode("cGFzcw==", "base64"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Concat(["A","B"], ":"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "A:B")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ConvertCase(attributes["http.method"], "upper"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", http.MethodGet)
- // },
- // },
- // {
- // statement: `set(attributes["test"], ConvertCase("PASS", "lower"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ConvertCase("fooBar", "snake"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "foo_bar")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ConvertCase("foo_bar", "camel"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "FooBar")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ConvertAttributesToElementsXML("This is a log message!"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", `This is a log message!1`)
- // },
- // },
- // {
- // statement: `set(body, ConvertTextToElementsXML("foo"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Body().SetStr("foo")
- // },
- // },
- // {
- // statement: `set(body, ConvertTextToElementsXML("foobar", "/a", "custom"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Body().SetStr("foobar")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Double(1.0))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutDouble("test", 1.0)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Double("1"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutDouble("test", 1.0)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Double(true))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutDouble("test", 1.0)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Double(1))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutDouble("test", 1.0)
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where Time("10", "%M") - Time("01", "%M") < Duration("10m")`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ExtractPatterns("aa123bb", "(?P\\d+)"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // m.PutStr("numbers", "123")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ExtractGrokPatterns("http://user:password@example.com:80/path?query=string", "%{ELB_URI}", true))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // m.PutStr("url.scheme", "http")
- // m.PutStr("url.username", "user")
- // m.PutStr("url.domain", "example.com")
- // m.PutInt("url.port", 80)
- // m.PutStr("url.path", "/path")
- // m.PutStr("url.query", "query=string")
- // },
- // },
- // {
- // statement: `set(attributes["test"], FNV("pass"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutInt("test", 266877920130663416)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Format("%03d-%s", [7, "test"]))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "007-test")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Hour(Time("12", "%H")))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutInt("test", 12)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Hours(Duration("90m")))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutDouble("test", 1.5)
- // },
- // },
- // {
- // statement: `set(attributes["test"], InsertXML("", "/a", ""))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Int(1.0))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutInt("test", 1)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Int("1"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutInt("test", 1)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Int(true))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutInt("test", 1)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Int(1))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutInt("test", 1)
- // },
- // },
- // {
- // statement: `set(attributes["test"], GetXML("12", "/a//b"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "12")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Hex(1.0))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "3ff0000000000000")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Hex(true))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "01")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Hex(12))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "000000000000000c")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Hex("12"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "3132")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where IsBool(false)`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where IsDouble(1.0)`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where IsMap(attributes["foo"])`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where IsList(attributes["foo"]["slice"])`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where IsMatch("aa123bb", "\\d{3}")`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where IsString("")`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Len(attributes["foo"]))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutInt("test", 4)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Log(1))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutDouble("test", 0)
- // },
- // },
- // {
- // statement: `set(attributes["test"], MD5("pass"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "1a1dc91c907325c69271ddf0c944bc72")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Microseconds(Duration("1ms")))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutInt("test", 1000)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Milliseconds(Duration("1s")))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutInt("test", 1000)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Minutes(Duration("1h")))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutDouble("test", 60)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Nanoseconds(Duration("1ms")))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutInt("test", 1000000)
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where Now() - Now() < Duration("1h")`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ParseCSV("val1;val2;val3","header1|header2|header3",";","|","strict"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // m.PutStr("header1", "val1")
- // m.PutStr("header2", "val2")
- // m.PutStr("header3", "val3")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ParseCSV("val1,val2,val3","header1|header2|header3",headerDelimiter="|",mode="strict"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // m.PutStr("header1", "val1")
- // m.PutStr("header2", "val2")
- // m.PutStr("header3", "val3")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ParseJSON("{\"id\":1}"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // m.PutDouble("id", 1)
- // },
- // },
- // {
- // statement: `set(attributes["test"], ParseJSON("[\"value1\",\"value2\"]"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptySlice("test")
- // m.AppendEmpty().SetStr("value1")
- // m.AppendEmpty().SetStr("value2")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ParseKeyValue("k1=v1 k2=v2"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // m.PutStr("k1", "v1")
- // m.PutStr("k2", "v2")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ParseKeyValue("k1!v1_k2!v2", "!", "_"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // m.PutStr("k1", "v1")
- // m.PutStr("k2", "v2")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ParseKeyValue("k1!v1_k2!\"v2__!__v2\"", "!", "_"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // m.PutStr("k1", "v1")
- // m.PutStr("k2", "v2__!__v2")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ToKeyValueString(ParseKeyValue("k1=v1 k2=v2"), "=", " ", true))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "k1=v1 k2=v2")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ToKeyValueString(ParseKeyValue("k1:v1,k2:v2", ":" , ","), ":", ",", true))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "k1:v1,k2:v2")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ToKeyValueString(ParseKeyValue("k1=v1 k2=v2"), "!", "+", true))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "k1!v1+k2!v2")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ToKeyValueString(ParseKeyValue("k1=v1 k2=v2=v3"), "=", " ", true))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "k1=v1 k2=\"v2=v3\"")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ParseSimplifiedXML("1This is a log message!"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // attr := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // log := attr.PutEmptyMap("Log")
- // log.PutStr("id", "1")
- // log.PutStr("Message", "This is a log message!")
- // },
- // },
- // {
- // statement: `set(attributes["test"], ParseXML("This is a log message!"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // log := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // log.PutStr("tag", "Log")
-
- // attrs := log.PutEmptyMap("attributes")
- // attrs.PutStr("id", "1")
-
- // logChildren := log.PutEmptySlice("children")
-
- // message := logChildren.AppendEmpty().SetEmptyMap()
- // message.PutStr("tag", "Message")
- // message.PutStr("content", "This is a log message!")
- // },
- // },
- // {
- // statement: `set(attributes["test"], RemoveXML("This is a log message!", "/Log/Message"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", ``)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Seconds(Duration("1m")))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutDouble("test", 60)
- // },
- // },
- // {
- // statement: `set(attributes["test"], SHA1("pass"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684")
- // },
- // },
- // {
- // statement: `set(attributes["test"], SHA256("pass"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "d74ff0ee8da3b9806b18c877dbf29bbde50b5bd8e4dad7a3a725000feb82e8f1")
- // },
- // },
- // {
- // statement: `set(attributes["test"], SHA512("pass"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "5b722b307fce6c944905d132691d5e4a2214b7fe92b738920eb3fce3a90420a19511c3010a0e7712b054daef5b57bad59ecbd93b3280f210578f547f4aed4d25")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Sort(Split(attributes["flags"], "|"), "desc"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // s := tCtx.GetLogRecord().Attributes().PutEmptySlice("test")
- // s.AppendEmpty().SetStr("C")
- // s.AppendEmpty().SetStr("B")
- // s.AppendEmpty().SetStr("A")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Sort([true, false, false]))`,
- // want: func(tCtx ottllog.TransformContext) {
- // s := tCtx.GetLogRecord().Attributes().PutEmptySlice("test")
- // s.AppendEmpty().SetBool(false)
- // s.AppendEmpty().SetBool(false)
- // s.AppendEmpty().SetBool(true)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Sort([3, 6, 9], "desc"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // s := tCtx.GetLogRecord().Attributes().PutEmptySlice("test")
- // s.AppendEmpty().SetInt(9)
- // s.AppendEmpty().SetInt(6)
- // s.AppendEmpty().SetInt(3)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Sort([Double(1.5), Double(10.2), Double(2.3), Double(0.5)]))`,
- // want: func(tCtx ottllog.TransformContext) {
- // s := tCtx.GetLogRecord().Attributes().PutEmptySlice("test")
- // s.AppendEmpty().SetDouble(0.5)
- // s.AppendEmpty().SetDouble(1.5)
- // s.AppendEmpty().SetDouble(2.3)
- // s.AppendEmpty().SetDouble(10.2)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Sort([Int(11), Double(2.2), Double(-1)]))`,
- // want: func(tCtx ottllog.TransformContext) {
- // s := tCtx.GetLogRecord().Attributes().PutEmptySlice("test")
- // s.AppendEmpty().SetDouble(-1)
- // s.AppendEmpty().SetDouble(2.2)
- // s.AppendEmpty().SetInt(11)
- // },
- // },
- // {
- // statement: `set(attributes["test"], Sort([false, Int(11), Double(2.2), "three"]))`,
- // want: func(tCtx ottllog.TransformContext) {
- // s := tCtx.GetLogRecord().Attributes().PutEmptySlice("test")
- // s.AppendEmpty().SetInt(11)
- // s.AppendEmpty().SetDouble(2.2)
- // s.AppendEmpty().SetBool(false)
- // s.AppendEmpty().SetStr("three")
- // },
- // },
- // {
- // statement: `set(span_id, SpanID(0x0000000000000000))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().SetSpanID(pcommon.NewSpanIDEmpty())
- // },
- // },
- // {
- // statement: `set(attributes["test"], Split(attributes["flags"], "|"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // s := tCtx.GetLogRecord().Attributes().PutEmptySlice("test")
- // s.AppendEmpty().SetStr("A")
- // s.AppendEmpty().SetStr("B")
- // s.AppendEmpty().SetStr("C")
- // },
- // },
- // {
- // statement: `set(attributes["test"], String("test"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "test")
- // },
- // },
- // {
- // statement: `set(attributes["test"], String(attributes["http.method"]))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "get")
- // },
- // },
- // {
- // statement: `set(attributes["test"], String(span_id))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "[1,2,3,4,5,6,7,8]")
- // },
- // },
- // {
- // statement: `set(attributes["test"], String([1,2,3]))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "[1,2,3]")
- // },
- // },
- // {
- // statement: `set(attributes["test"], String(true))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "true")
- // },
- // },
- // {
- // statement: `set(attributes["test"], Substring("pass", 0, 2))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pa")
- // },
- // },
- // {
- // statement: `set(trace_id, TraceID(0x00000000000000000000000000000000))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().SetTraceID(pcommon.NewTraceIDEmpty())
- // },
- // },
- // {
- // statement: `set(time, TruncateTime(time, Duration("1s")))`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().SetTimestamp(pcommon.NewTimestampFromTime(TestLogTimestamp.AsTime().Truncate(time.Second)))
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where UnixMicro(time) > 0`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where UnixMilli(time) > 0`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where UnixNano(time) > 0`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where UnixSeconds(time) > 0`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "pass") where IsString(UUID())`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "\\")`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "\\")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "\\\\")`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "\\\\")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "\\\\\\")`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "\\\\\\")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "\\\\\\\\")`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", "\\\\\\\\")
- // },
- // },
- // {
- // statement: `set(attributes["test"], "\"")`,
- // want: func(tCtx ottllog.TransformContext) {
- // tCtx.GetLogRecord().Attributes().PutStr("test", `"`)
- // },
- // },
- // {
- // statement: `keep_keys(attributes["foo"], ["\\", "bar"])`,
- // want: func(tCtx ottllog.TransformContext) {
- // // keep_keys should see two arguments
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("foo")
- // m.PutStr("bar", "pass")
- // },
- // },
- // {
- // statement: `set(attributes["test"], UserAgent("curl/7.81.0"))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // m.PutStr("user_agent.original", "curl/7.81.0")
- // m.PutStr("user_agent.name", "curl")
- // m.PutStr("user_agent.version", "7.81.0")
- // },
- // },
- // {
- // statement: `set(attributes["test"], SliceToMap(attributes["things"], ["name"]))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // thing1 := m.PutEmptyMap("foo")
- // thing1.PutStr("name", "foo")
- // thing1.PutInt("value", 2)
-
- // thing2 := m.PutEmptyMap("bar")
- // thing2.PutStr("name", "bar")
- // thing2.PutInt("value", 5)
- // },
- // },
- // {
- // statement: `set(attributes["test"], SliceToMap(attributes["things"], ["name"], ["value"]))`,
- // want: func(tCtx ottllog.TransformContext) {
- // m := tCtx.GetLogRecord().Attributes().PutEmptyMap("test")
- // m.PutInt("foo", 2)
- // m.PutInt("bar", 5)
- // },
- // },
}
for _, tt := range tests {
diff --git a/pkg/ottl/expression.go b/pkg/ottl/expression.go
index a2e8d29e63c4..91d7cb7bdc32 100644
--- a/pkg/ottl/expression.go
+++ b/pkg/ottl/expression.go
@@ -143,6 +143,11 @@ func (g exprGetter[K]) Get(ctx context.Context, tCtx K) (any, error) {
default:
return nil, fmt.Errorf("type, %T, does not support int indexing", result)
}
+ case k.Path != nil:
+ // getter, err := p.newGetter(k.Path)
+ // if err != nil {
+ // return nil, err
+ // }
default:
return nil, fmt.Errorf("neither map nor slice index were set; this is an error in OTTL")
}
diff --git a/pkg/ottl/functions.go b/pkg/ottl/functions.go
index 1199423c81f3..184077053bd0 100644
--- a/pkg/ottl/functions.go
+++ b/pkg/ottl/functions.go
@@ -492,17 +492,17 @@ func (p *Parser[K]) buildArg(argVal value, argType reflect.Type) (any, error) {
}
return arg, nil
}
- if argVal.ExpressionPath != nil {
- np, err := p.newPath(argVal.ExpressionPath)
- if err != nil {
- return nil, err
- }
- arg, err := p.parsePath(np)
- if err != nil {
- return nil, err
- }
- return arg, nil
- }
+ // if argVal.ExpressionPath != nil {
+ // np, err := p.newPath(argVal.ExpressionPath)
+ // if err != nil {
+ // return nil, err
+ // }
+ // arg, err := p.parsePath(np)
+ // if err != nil {
+ // return nil, err
+ // }
+ // return arg, nil
+ // }
return nil, fmt.Errorf("must be a path")
case strings.HasPrefix(name, "Getter"):
arg, err := p.newGetter(argVal)
diff --git a/pkg/ottl/grammar.go b/pkg/ottl/grammar.go
index 393ca2a100f8..6e810195c7f6 100644
--- a/pkg/ottl/grammar.go
+++ b/pkg/ottl/grammar.go
@@ -234,7 +234,6 @@ func (a *argument) accept(v grammarVisitor) {
// mathExpression, function call, or literal.
type value struct {
IsNil *isNil `parser:"( @'nil'"`
- ExpressionPath *path `parser:"| '$''{' @@ '}'"`
Literal *mathExprLiteral `parser:"| @@ (?! OpAddSub | OpMultDiv)"`
MathExpression *mathExpression `parser:"| @@"`
Bytes *byteSlice `parser:"| @Bytes"`
@@ -261,9 +260,6 @@ func (v *value) accept(vis grammarVisitor) {
i.accept(vis)
}
}
- if v.ExpressionPath != nil {
- vis.visitPath(v.ExpressionPath)
- }
}
// path represents a telemetry path mathExpression.
@@ -281,7 +277,8 @@ type field struct {
type key struct {
String *string `parser:"'[' (@String "`
- Int *int64 `parser:"| @Int) ']'"`
+ Int *int64 `parser:"| @Int"`
+ Path *path `parser:"| @@ ) ']'"`
}
type list struct {
@@ -490,7 +487,6 @@ func buildLexer() *lexer.StatefulDefinition {
{Name: `LBrace`, Pattern: `\{`},
{Name: `RBrace`, Pattern: `\}`},
{Name: `Colon`, Pattern: `\:`},
- {Name: `Dollar`, Pattern: `\$`},
{Name: `Punct`, Pattern: `[,.\[\]]`},
{Name: `Uppercase`, Pattern: `[A-Z][A-Z0-9_]*`},
{Name: `Lowercase`, Pattern: `[a-z][a-z0-9_]*`},
diff --git a/pkg/ottl/lexer_test.go b/pkg/ottl/lexer_test.go
index 927dab112e84..87aac86da80c 100644
--- a/pkg/ottl/lexer_test.go
+++ b/pkg/ottl/lexer_test.go
@@ -130,14 +130,14 @@ func Test_lexer(t *testing.T) {
{"String", `"bar"`},
{"RBrace", "}"},
}},
- {"Expression path", `${foo["foo"]}`, false, []result{
- {"Dollar", "$"},
- {"LBrace", "{"},
- {"Lowercase", "foo"},
+ {"Expression path", `attributes[attributes["foo"]]`, false, []result{
+ {"Lowercase", "attributes"},
+ {"Punct", "["},
+ {"Lowercase", "attributes"},
{"Punct", "["},
{"String", `"foo"`},
{"Punct", "]"},
- {"RBrace", "}"},
+ {"Punct", "]"},
}},
}