2023-06-20 07:55:12 +02:00
|
|
|
package elasticsearch
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
|
2024-06-17 22:28:15 +02:00
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/app/vlinsert/insertutils"
|
2023-06-20 07:55:12 +02:00
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil"
|
|
|
|
)
|
|
|
|
|
|
|
|
func BenchmarkReadBulkRequest(b *testing.B) {
|
|
|
|
b.Run("gzip:off", func(b *testing.B) {
|
|
|
|
benchmarkReadBulkRequest(b, false)
|
|
|
|
})
|
|
|
|
b.Run("gzip:on", func(b *testing.B) {
|
|
|
|
benchmarkReadBulkRequest(b, true)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func benchmarkReadBulkRequest(b *testing.B, isGzip bool) {
|
|
|
|
data := `{"create":{"_index":"filebeat-8.8.0"}}
|
|
|
|
{"@timestamp":"2023-06-06T04:48:11.735Z","log":{"offset":71770,"file":{"path":"/var/log/auth.log"}},"message":"foobar"}
|
|
|
|
{"create":{"_index":"filebeat-8.8.0"}}
|
|
|
|
{"@timestamp":"2023-06-06T04:48:12.735Z","message":"baz"}
|
|
|
|
{"create":{"_index":"filebeat-8.8.0"}}
|
|
|
|
{"message":"xyz","@timestamp":"2023-06-06T04:48:13.735Z","x":"y"}
|
|
|
|
`
|
|
|
|
if isGzip {
|
|
|
|
data = compressData(data)
|
|
|
|
}
|
|
|
|
dataBytes := bytesutil.ToUnsafeBytes(data)
|
|
|
|
|
|
|
|
timeField := "@timestamp"
|
2024-10-30 14:13:56 +01:00
|
|
|
msgFields := []string{"message"}
|
2024-06-17 22:28:15 +02:00
|
|
|
blp := &insertutils.BenchmarkLogMessageProcessor{}
|
2023-06-20 07:55:12 +02:00
|
|
|
|
|
|
|
b.ReportAllocs()
|
|
|
|
b.SetBytes(int64(len(data)))
|
|
|
|
b.RunParallel(func(pb *testing.PB) {
|
|
|
|
r := &bytes.Reader{}
|
|
|
|
for pb.Next() {
|
|
|
|
r.Reset(dataBytes)
|
2024-10-30 14:13:56 +01:00
|
|
|
_, err := readBulkRequest(r, isGzip, timeField, msgFields, blp)
|
2023-06-20 07:55:12 +02:00
|
|
|
if err != nil {
|
2023-10-25 21:24:01 +02:00
|
|
|
panic(fmt.Errorf("unexpected error: %w", err))
|
2023-06-20 07:55:12 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|