golang.org/x/build@v0.0.0-20240506185731-218518f32b70/pargzip/pargzip_test.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package pargzip 6 7 import ( 8 "bytes" 9 "compress/gzip" 10 "io" 11 "strings" 12 "testing" 13 "time" 14 ) 15 16 func TestWriter(t *testing.T) { 17 var in bytes.Buffer 18 big := strings.Repeat("a", 4<<10) 19 for in.Len() < 20<<20 { 20 for i := 0; i < 256; i++ { 21 in.WriteByte(byte(i)) 22 in.WriteString(big) 23 } 24 } 25 t.Logf("input size = %v", in.Len()) 26 var zbuf bytes.Buffer 27 zw := NewWriter(&zbuf) 28 zw.ChunkSize = 1 << 20 29 zw.Parallel = 4 30 t0 := time.Now() 31 if n, err := io.Copy(zw, bytes.NewReader(in.Bytes())); err != nil { 32 t.Fatalf("Copy: %v", err) 33 } else { 34 t.Logf("Copied %d bytes", n) 35 } 36 if err := zw.Close(); err != nil { 37 t.Fatalf("Close: %v", err) 38 } 39 td := time.Since(t0) 40 t.Logf("Compressed size: %v (%0.2f%%) in %v", zbuf.Len(), float64(zbuf.Len())/float64(in.Len())*100, td) 41 42 var back bytes.Buffer 43 zr, _ := gzip.NewReader(bytes.NewReader(zbuf.Bytes())) 44 if _, err := io.Copy(&back, zr); err != nil { 45 t.Fatalf("uncompress Copy: %v", err) 46 } 47 if !bytes.Equal(in.Bytes(), back.Bytes()) { 48 t.Error("decompression failed.") 49 } 50 t.Logf("correctly read back %d bytes", back.Len()) 51 }