Procházet zdrojové kódy

fix flate write pool size to work with best compression

Alexander Emelin před 8 roky
rodič
revize
eb457539f7
2 změnil soubory, kde provedl 23 přidání a 1 odebrání
  1. 1 1
      compression.go
  2. 22 0
      compression_test.go

+ 1 - 1
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)
 	}}

+ 22 - 0
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)