176 lines
3.3 KiB
Go
176 lines
3.3 KiB
Go
package kafka_test
|
|
|
|
import (
|
|
"bytes"
|
|
"compress/gzip"
|
|
"io"
|
|
"testing"
|
|
|
|
"github.com/golang/snappy"
|
|
)
|
|
|
|
const totalPayloadSize = 10
|
|
|
|
func tryClose(w io.Writer) error {
|
|
if w, ok := w.(io.Closer); ok {
|
|
return w.Close()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func BenchmarkNoCompressionWrite(b *testing.B) {
|
|
w := io.Writer(io.Discard)
|
|
//payload := []byte("yes this is 25 bytes long")
|
|
payload := make([]byte, 10000)
|
|
|
|
b.ResetTimer()
|
|
for i := 0; i < 1024*1024*totalPayloadSize/4; i++ {
|
|
_, err := w.Write(payload)
|
|
if err != nil {
|
|
b.Error("error writing file")
|
|
}
|
|
}
|
|
|
|
err := tryClose(w)
|
|
if err != nil {
|
|
b.Error("error closing file")
|
|
}
|
|
}
|
|
|
|
func BenchmarkGZipCompressionWrite(b *testing.B) {
|
|
w := gzip.NewWriter(io.Discard)
|
|
//payload := []byte("yes this is 25 bytes long")
|
|
payload := make([]byte, 10000)
|
|
|
|
b.ResetTimer()
|
|
for i := 0; i < 1024*1024*totalPayloadSize/4; i++ {
|
|
_, err := w.Write(payload)
|
|
if err != nil {
|
|
b.Error("error writing file")
|
|
}
|
|
}
|
|
|
|
err := w.Close()
|
|
if err != nil {
|
|
b.Error("error closing file")
|
|
}
|
|
}
|
|
|
|
func BenchmarkSnappyCompressionWrite(b *testing.B) {
|
|
w := snappy.NewWriter(io.Discard)
|
|
//payload := []byte("yes this is 25 bytes long")
|
|
payload := make([]byte, 10000)
|
|
|
|
b.ResetTimer()
|
|
for i := 0; i < 1024*1024*totalPayloadSize/4; i++ {
|
|
_, err := w.Write(payload)
|
|
if err != nil {
|
|
b.Error("error writing file")
|
|
}
|
|
}
|
|
|
|
err := w.Close()
|
|
if err != nil {
|
|
b.Error("error closing file")
|
|
}
|
|
}
|
|
|
|
func BenchmarkNoCompressionRead(b *testing.B) {
|
|
var buf bytes.Buffer
|
|
|
|
w := io.Writer(&buf)
|
|
//payload := []byte("yes this is 25 bytes long")
|
|
payload := make([]byte, 10000)
|
|
|
|
for i := 0; i < 1024*1024*totalPayloadSize/4; i++ {
|
|
_, err := w.Write(payload)
|
|
if err != nil {
|
|
b.Error("error writing file")
|
|
}
|
|
}
|
|
|
|
err := tryClose(w)
|
|
if err != nil {
|
|
b.Error("error closing file")
|
|
}
|
|
|
|
//r, err := io.NewReader(&buf)
|
|
r := bytes.NewReader(payload)
|
|
if err != nil {
|
|
b.Error("error opening file")
|
|
}
|
|
|
|
b.ResetTimer()
|
|
if _, err := io.Copy(io.Discard, r); err != nil {
|
|
b.Error("error reading file")
|
|
}
|
|
|
|
// if err := r.Close(); err != nil {
|
|
// b.Error("error closing file")
|
|
// }
|
|
}
|
|
|
|
func BenchmarkGZipCompressionRead(b *testing.B) {
|
|
var buf bytes.Buffer
|
|
|
|
w := gzip.NewWriter(&buf)
|
|
//payload := []byte("yes this is 25 bytes long")
|
|
payload := make([]byte, 10000)
|
|
|
|
for i := 0; i < 1024*1024*totalPayloadSize/4; i++ {
|
|
_, err := w.Write(payload)
|
|
if err != nil {
|
|
b.Error("error writing file")
|
|
}
|
|
}
|
|
|
|
err := w.Close()
|
|
if err != nil {
|
|
b.Error("error closing file")
|
|
}
|
|
|
|
r, err := gzip.NewReader(&buf)
|
|
if err != nil {
|
|
b.Error("error opening file")
|
|
}
|
|
|
|
b.ResetTimer()
|
|
if _, err := io.Copy(io.Discard, r); err != nil {
|
|
b.Error("error reading file")
|
|
}
|
|
|
|
if err := r.Close(); err != nil {
|
|
b.Error("error closing file")
|
|
}
|
|
}
|
|
|
|
func BenchmarkSnappyCompressionRead(b *testing.B) {
|
|
var buf bytes.Buffer
|
|
|
|
w := snappy.NewWriter(&buf)
|
|
//payload := []byte("yes this is 25 bytes long")
|
|
payload := make([]byte, 10000)
|
|
|
|
for i := 0; i < 1024*1024*totalPayloadSize/4; i++ {
|
|
_, err := w.Write(payload)
|
|
if err != nil {
|
|
b.Error("error writing file")
|
|
}
|
|
}
|
|
|
|
err := w.Close()
|
|
if err != nil {
|
|
b.Error("error closing file")
|
|
}
|
|
|
|
r := snappy.NewReader(&buf)
|
|
if err != nil {
|
|
b.Error("error opening file")
|
|
}
|
|
|
|
b.ResetTimer()
|
|
if _, err := io.Copy(io.Discard, r); err != nil {
|
|
b.Error("error reading file")
|
|
}
|
|
}
|