mirror of
https://github.com/SigNoz/signoz.git
synced 2026-03-12 08:13:19 +00:00
* feat: json Body Keys * feat: telemetry types * feat: change ExtractBodyPaths * chore: minor comment change * chore: func rename, file rename * chore: change table names * chore: reflect changes from the overhaul * test: fixing test 1 * fix: test TestQueryToKeys * fix: test TestPrepareLogsQuery * chore: remove db * chore: go mod * chore: changes based on review * chore: changes based on review * fix: in LIKE operation * chore: addressed few changes * revert: test file * fix: comparison fix * test: add TestBuildListLogsJSONIndexesQuery * fix: in test TestBuildListLogsJSONIndexesQuery * fix: pull promoted paths in single db call * fix: reducing db calls * test: fix TestBuildListLogsJSONIndexesQuery * fix: test TestConditionForJSONBodySearch * fix: lint try 1 * chore: review changes based on cursor * fix: use enums only --------- Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com> Co-authored-by: Nityananda Gohain <nityanandagohain@gmail.com>
98 lines
3.0 KiB
Go
98 lines
3.0 KiB
Go
package querybuilder
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/SigNoz/signoz/pkg/types/telemetrytypes"
|
|
)
|
|
|
|
func TestQueryToKeys(t *testing.T) {
|
|
testCases := []struct {
|
|
query string
|
|
expectedKeys []telemetrytypes.FieldKeySelector
|
|
}{
|
|
{
|
|
query: `service.name="redis"`,
|
|
expectedKeys: []telemetrytypes.FieldKeySelector{
|
|
{
|
|
Name: "service.name",
|
|
Signal: telemetrytypes.SignalUnspecified,
|
|
FieldContext: telemetrytypes.FieldContextUnspecified,
|
|
FieldDataType: telemetrytypes.FieldDataTypeUnspecified,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
query: `resource.service.name="redis"`,
|
|
expectedKeys: []telemetrytypes.FieldKeySelector{
|
|
{
|
|
Name: "service.name",
|
|
Signal: telemetrytypes.SignalUnspecified,
|
|
FieldContext: telemetrytypes.FieldContextResource,
|
|
FieldDataType: telemetrytypes.FieldDataTypeUnspecified,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
query: `service.name="redis" AND http.status_code=200`,
|
|
expectedKeys: []telemetrytypes.FieldKeySelector{
|
|
{
|
|
Name: "service.name",
|
|
Signal: telemetrytypes.SignalUnspecified,
|
|
FieldContext: telemetrytypes.FieldContextUnspecified,
|
|
FieldDataType: telemetrytypes.FieldDataTypeUnspecified,
|
|
},
|
|
{
|
|
Name: "http.status_code",
|
|
Signal: telemetrytypes.SignalUnspecified,
|
|
FieldContext: telemetrytypes.FieldContextUnspecified,
|
|
FieldDataType: telemetrytypes.FieldDataTypeUnspecified,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
query: `has(payload.user_ids, 123)`,
|
|
expectedKeys: []telemetrytypes.FieldKeySelector{
|
|
{
|
|
Name: "payload.user_ids",
|
|
Signal: telemetrytypes.SignalUnspecified,
|
|
FieldContext: telemetrytypes.FieldContextUnspecified,
|
|
FieldDataType: telemetrytypes.FieldDataTypeUnspecified,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
query: `body.user_ids[*] = 123`,
|
|
expectedKeys: []telemetrytypes.FieldKeySelector{
|
|
{
|
|
Name: "user_ids[*]",
|
|
Signal: telemetrytypes.SignalUnspecified,
|
|
FieldContext: telemetrytypes.FieldContextBody,
|
|
FieldDataType: telemetrytypes.FieldDataTypeUnspecified,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
keys := QueryStringToKeysSelectors(testCase.query)
|
|
if len(keys) != len(testCase.expectedKeys) {
|
|
t.Fatalf("Expected %d keys, got %d", len(testCase.expectedKeys), len(keys))
|
|
}
|
|
for i, key := range keys {
|
|
if key.Name != testCase.expectedKeys[i].Name {
|
|
t.Fatalf("Expected key %v, got %v", testCase.expectedKeys[i], key)
|
|
}
|
|
if key.Signal != testCase.expectedKeys[i].Signal {
|
|
t.Fatalf("Expected signal %v, got %v", testCase.expectedKeys[i].Signal, key.Signal)
|
|
}
|
|
if key.FieldContext != testCase.expectedKeys[i].FieldContext {
|
|
t.Fatalf("Expected field context %v, got %v", testCase.expectedKeys[i].FieldContext, key.FieldContext)
|
|
}
|
|
if key.FieldDataType != testCase.expectedKeys[i].FieldDataType {
|
|
t.Fatalf("Expected field data type %v, got %v", testCase.expectedKeys[i].FieldDataType, key.FieldDataType)
|
|
}
|
|
}
|
|
}
|
|
}
|