mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
92 lines
2.7 KiB
Go
92 lines
2.7 KiB
Go
|
package elasticsearch
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
// To avoid compiler optimizations eliminating the function under test
|
||
|
// we are storing the result to a package level variable
|
||
|
var Result queryDataTestResult
|
||
|
|
||
|
func BenchmarkSimpleMetricResponse(b *testing.B) {
|
||
|
queriesBytes := getQueriesBytesFromTestsDataFile("metric_simple")
|
||
|
responseBytes := getResponseBytesFromTestsDataFile("metric_simple")
|
||
|
b.ResetTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
result, err := queryDataTest(queriesBytes, responseBytes)
|
||
|
require.NoError(b, err)
|
||
|
Result = result
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkComplexMetricResponse(b *testing.B) {
|
||
|
queriesBytes := getQueriesBytesFromTestsDataFile("metric_complex")
|
||
|
responseBytes := getResponseBytesFromTestsDataFile("metric_complex")
|
||
|
b.ResetTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
result, err := queryDataTest(queriesBytes, responseBytes)
|
||
|
require.NoError(b, err)
|
||
|
Result = result
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkMultiMetricResponse(b *testing.B) {
|
||
|
queriesBytes := getQueriesBytesFromTestsDataFile("metric_multi")
|
||
|
responseBytes := getResponseBytesFromTestsDataFile("metric_multi")
|
||
|
b.ResetTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
result, err := queryDataTest(queriesBytes, responseBytes)
|
||
|
require.NoError(b, err)
|
||
|
Result = result
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkRawDataResponse(b *testing.B) {
|
||
|
queriesBytes := getQueriesBytesFromTestsDataFile("raw_data")
|
||
|
responseBytes := getResponseBytesFromTestsDataFile("raw_data")
|
||
|
b.ResetTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
result, err := queryDataTest(queriesBytes, responseBytes)
|
||
|
require.NoError(b, err)
|
||
|
Result = result
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkRawDocumentResponse(b *testing.B) {
|
||
|
queriesBytes := getQueriesBytesFromTestsDataFile("raw_document")
|
||
|
responseBytes := getResponseBytesFromTestsDataFile("raw_document")
|
||
|
b.ResetTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
result, err := queryDataTest(queriesBytes, responseBytes)
|
||
|
require.NoError(b, err)
|
||
|
Result = result
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkLogsResponse(b *testing.B) {
|
||
|
queriesBytes := getQueriesBytesFromTestsDataFile("logs")
|
||
|
responseBytes := getResponseBytesFromTestsDataFile("logs")
|
||
|
b.ResetTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
result, err := queryDataTest(queriesBytes, responseBytes)
|
||
|
require.NoError(b, err)
|
||
|
Result = result
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func getQueriesBytesFromTestsDataFile(fileName string) []byte {
|
||
|
queriesName := filepath.Join("testdata_response", fileName+".queries.json")
|
||
|
queriesBytes, _ := os.ReadFile(filepath.Clean(queriesName))
|
||
|
return queriesBytes
|
||
|
}
|
||
|
|
||
|
func getResponseBytesFromTestsDataFile(fileName string) []byte {
|
||
|
responseName := filepath.Join("testdata_response", fileName+".response.json")
|
||
|
responseBytes, _ := os.ReadFile(filepath.Clean(responseName))
|
||
|
return responseBytes
|
||
|
}
|