From eb457539f79ede89177f341a17d63c4188f25767 Mon Sep 17 00:00:00 2001 From: Alexander Emelin Date: Wed, 25 Jan 2017 02:15:04 +0300 Subject: [PATCH 1/2] fix flate write pool size to work with best compression --- compression.go | 2 +- compression_test.go | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/compression.go b/compression.go index 49a243b..813ffb1 100644 --- a/compression.go +++ b/compression.go @@ -19,7 +19,7 @@ const ( ) var ( - flateWriterPools [maxCompressionLevel - minCompressionLevel]sync.Pool + flateWriterPools [maxCompressionLevel - minCompressionLevel + 1]sync.Pool flateReaderPool = sync.Pool{New: func() interface{} { return flate.NewReader(nil) }} diff --git a/compression_test.go b/compression_test.go index 659cf42..9678d1d 100644 --- a/compression_test.go +++ b/compression_test.go @@ -41,6 +41,28 @@ func textMessages(num int) [][]byte { return messages } +func TestCompressNoContextTakeover(t *testing.T) { + for level := minCompressionLevel; level <= maxCompressionLevel; level++ { + message := textMessages(1)[0] + c := fakeNetConn{Reader: nil, Writer: ioutil.Discard} + f := compressNoContextTakeover(c, level) + n, err := f.Write(message) + if err != nil { + t.Errorf("Error writing using compressNoContextTakeover on level %d: %v", level, err) + return + } + if n != len(message) { + t.Errorf("Error writing using compressNoContextTakeover on level %d: not enough bytes written", level) + return + } + err = f.Close() + if err != nil { + t.Errorf("Error closing writer on level %d: %v", level, err) + return + } + } +} + func BenchmarkWriteNoCompression(b *testing.B) { w := ioutil.Discard c := newConn(fakeNetConn{Reader: nil, Writer: w}, false, 1024, 1024) From ac61189060b7d06ca1e8c9d48ff4e2da8a7f5c4b Mon Sep 17 00:00:00 2001 From: Alexander Emelin Date: Wed, 25 Jan 2017 02:34:04 +0300 Subject: [PATCH 2/2] remove test as HuffmanOnly compression level not defined in Go < 1.7 --- compression_test.go | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/compression_test.go b/compression_test.go index 9678d1d..659cf42 100644 --- a/compression_test.go +++ b/compression_test.go @@ -41,28 +41,6 @@ func textMessages(num int) [][]byte { return messages } -func TestCompressNoContextTakeover(t *testing.T) { - for level := minCompressionLevel; level <= maxCompressionLevel; level++ { - message := textMessages(1)[0] - c := fakeNetConn{Reader: nil, Writer: ioutil.Discard} - f := compressNoContextTakeover(c, level) - n, err := f.Write(message) - if err != nil { - t.Errorf("Error writing using compressNoContextTakeover on level %d: %v", level, err) - return - } - if n != len(message) { - t.Errorf("Error writing using compressNoContextTakeover on level %d: not enough bytes written", level) - return - } - err = f.Close() - if err != nil { - t.Errorf("Error closing writer on level %d: %v", level, err) - return - } - } -} - func BenchmarkWriteNoCompression(b *testing.B) { w := ioutil.Discard c := newConn(fakeNetConn{Reader: nil, Writer: w}, false, 1024, 1024)