Files
cloud-services/pkg/kafka/compression_test.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")
}
}