1
0
Fork 0
forked from mirrors/tar-split

tar/storage: show gzip usage in a test

This commit is contained in:
Vincent Batts 2015-02-24 15:57:14 -05:00
parent eafa1b9426
commit 2d70b98f6e

View file

@ -2,6 +2,7 @@ package storage
import ( import (
"bytes" "bytes"
"compress/gzip"
"io" "io"
"testing" "testing"
) )
@ -39,6 +40,9 @@ func TestJsonPackerUnpacker(t *testing.T) {
} }
}() }()
// >> packer_test.go:43: uncompressed: 266
//t.Errorf("uncompressed: %d", len(b.Bytes()))
b = bytes.NewBuffer(b.Bytes()) b = bytes.NewBuffer(b.Bytes())
entries := Entries{} entries := Entries{}
func() { func() {
@ -58,5 +62,69 @@ func TestJsonPackerUnpacker(t *testing.T) {
if len(entries) != len(e) { if len(entries) != len(e) {
t.Errorf("expected %d entries, got %d", len(e), len(entries)) t.Errorf("expected %d entries, got %d", len(e), len(entries))
} }
}
// you can use a compress Reader/Writer and make nice savings.
//
// For these two tests that are using the same set, it the difference of 266
// bytes uncompressed vs 138 bytes compressed.
func TestGzip(t *testing.T) {
e := []Entry{
Entry{
Type: SegmentType,
Payload: []byte("how"),
},
Entry{
Type: SegmentType,
Payload: []byte("y'all"),
},
Entry{
Type: FileType,
Name: "./hurr.txt",
Payload: []byte("deadbeef"),
},
Entry{
Type: SegmentType,
Payload: []byte("doin"),
},
}
buf := []byte{}
b := bytes.NewBuffer(buf)
gzW := gzip.NewWriter(b)
jp := NewJsonPacker(gzW)
for i := range e {
if _, err := jp.AddEntry(e[i]); err != nil {
t.Error(err)
}
}
gzW.Close()
// >> packer_test.go:99: compressed: 138
//t.Errorf("compressed: %d", len(b.Bytes()))
b = bytes.NewBuffer(b.Bytes())
gzR, err := gzip.NewReader(b)
if err != nil {
t.Fatal(err)
}
entries := Entries{}
func() {
jup := NewJsonUnpacker(gzR)
for {
entry, err := jup.Next()
if err != nil {
if err == io.EOF {
break
}
t.Error(err)
}
entries = append(entries, *entry)
t.Logf("got %#v", entry)
}
}()
if len(entries) != len(e) {
t.Errorf("expected %d entries, got %d", len(e), len(entries))
}
} }