mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* don't iterate over first column as it is a time column already * don't iterate over first column as it was handled earlier * add more flexibility to run the commands * Update pkg/tsdb/influxdb/influxql/converter/converter.go Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com> --------- Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>
59 lines
2.2 KiB
Go
59 lines
2.2 KiB
Go
package influxql
|
|
|
|
import (
|
|
_ "embed"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/grafana/grafana/pkg/tsdb/influxdb/influxql/buffered"
|
|
"github.com/grafana/grafana/pkg/tsdb/influxdb/influxql/querydata"
|
|
"github.com/grafana/grafana/pkg/tsdb/influxdb/models"
|
|
)
|
|
|
|
// TEST_MODE=buffered RES_FORMAT=time_series go test -benchmem -run=^$ -memprofile buffered_mem.out -count=10 -bench ^BenchmarkParseJson github.com/grafana/grafana/pkg/tsdb/influxdb/influxql | tee buffered.txt
|
|
// TEST_MODE=stream RES_FORMAT=time_series go test -benchmem -run=^$ -memprofile stream_mem.out -count=10 -bench ^BenchmarkParseJson github.com/grafana/grafana/pkg/tsdb/influxdb/influxql | tee stream.txt
|
|
// TEST_MODE=buffered RES_FORMAT=table go test -benchmem -run=^$ -memprofile buffered_table_mem.out -cpuprofile buffered_table_cpu.out -count=10 -bench ^BenchmarkParseJson github.com/grafana/grafana/pkg/tsdb/influxdb/influxql | tee buffered_table.txt
|
|
// TEST_MODE=stream RES_FORMAT=table go test -benchmem -run=^$ -memprofile stream_table_mem.out -cpuprofile stream_table_cpu.out -count=10 -bench ^BenchmarkParseJson github.com/grafana/grafana/pkg/tsdb/influxdb/influxql | tee stream_table.txt
|
|
// go tool pprof -http=localhost:9999 memprofile.out
|
|
// benchstat buffered.txt stream.txt
|
|
// benchstat buffered_table.txt stream_table.txt
|
|
func BenchmarkParseJson(b *testing.B) {
|
|
filePath := "testdata/many_columns.json"
|
|
bytes, err := os.ReadFile(filePath)
|
|
if err != nil {
|
|
panic(fmt.Sprintf("cannot read the file: %s", filePath))
|
|
}
|
|
|
|
testMode := os.Getenv("TEST_MODE")
|
|
resFormat := os.Getenv("RES_FORMAT")
|
|
if testMode == "" {
|
|
testMode = "stream"
|
|
}
|
|
|
|
query := &models.Query{
|
|
RawQuery: "Test raw query",
|
|
UseRawQuery: true,
|
|
ResultFormat: resFormat,
|
|
}
|
|
b.ResetTimer()
|
|
|
|
for n := 0; n < b.N; n++ {
|
|
buf := io.NopCloser(strings.NewReader(string(bytes)))
|
|
var result *backend.DataResponse
|
|
switch testMode {
|
|
case "buffered":
|
|
result = buffered.ResponseParse(buf, 200, query)
|
|
case "stream":
|
|
result = querydata.ResponseParse(buf, 200, query)
|
|
}
|
|
require.NotNil(b, result.Frames)
|
|
require.NoError(b, result.Error)
|
|
}
|
|
}
|