Elasticsearch: Fix processing of raw_data with not-recognized time format (#78262)

* Elasticsearch: Fix non-standard time field in raw data queries

* Update snapshot tests

* Refactor
This commit is contained in:
Ivana Huckova
2023-11-20 12:01:41 +01:00
committed by GitHub
parent cfc67a9e2d
commit 28f4c3ed44
4 changed files with 108 additions and 1 deletions
@@ -601,6 +601,92 @@ func TestProcessRawDataResponse(t *testing.T) {
require.Equal(t, filterableConfig, *field.Config)
}
})
t.Run("gets correct time field from fields", func(t *testing.T) {
query := []byte(`
[
{
"refId": "A",
"metrics": [{ "type": "raw_data", "id": "1" }]
}
]
`)
response := []byte(`
{
"responses": [
{
"aggregations": {},
"hits": {
"hits": [
{
"_id": "fdsfs",
"_type": "_doc",
"_index": "mock-index",
"_source": {
"testtime": "06/24/2019",
"host": "djisaodjsoad",
"number": 1,
"line": "hello, i am a message",
"level": "debug",
"fields": { "lvl": "debug" }
},
"highlight": {
"message": [
"@HIGHLIGHT@hello@/HIGHLIGHT@, i am a @HIGHLIGHT@message@/HIGHLIGHT@"
]
},
"fields": {
"testtime": [ "2019-06-24T09:51:19.765Z" ]
}
},
{
"_id": "kdospaidopa",
"_type": "_doc",
"_index": "mock-index",
"_source": {
"testtime": "06/24/2019",
"host": "dsalkdakdop",
"number": 2,
"line": "hello, i am also message",
"level": "error",
"fields": { "lvl": "info" }
},
"highlight": {
"message": [
"@HIGHLIGHT@hello@/HIGHLIGHT@, i am a @HIGHLIGHT@message@/HIGHLIGHT@"
]
},
"fields": {
"testtime": [ "2019-06-24T09:52:19.765Z" ]
}
}
]
}
}
]
}
`)
result, err := queryDataTest(query, response)
require.NoError(t, err)
require.Len(t, result.response.Responses, 1)
frames := result.response.Responses["A"].Frames
require.Len(t, frames, 1)
logsFrame := frames[0]
logsFieldMap := make(map[string]*data.Field)
for _, field := range logsFrame.Fields {
logsFieldMap[field.Name] = field
}
t0 := time.Date(2019, time.June, 24, 9, 51, 19, 765000000, time.UTC)
t1 := time.Date(2019, time.June, 24, 9, 52, 19, 765000000, time.UTC)
require.Contains(t, logsFieldMap, "testtime")
require.Equal(t, data.FieldTypeNullableTime, logsFieldMap["testtime"].Type())
require.Equal(t, &t0, logsFieldMap["testtime"].At(0))
require.Equal(t, &t1, logsFieldMap["testtime"].At(1))
})
}
func TestProcessRawDocumentResponse(t *testing.T) {