...

Source file src/github.com/vbatts/tar-split/tar/storage/getter_test.go

Documentation: github.com/vbatts/tar-split/tar/storage

     1  package storage
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"io"
     7  	"strings"
     8  	"testing"
     9  )
    10  
    11  func TestGetter(t *testing.T) {
    12  	fgp := NewBufferFileGetPutter()
    13  	files := map[string]map[string][]byte{
    14  		"file1.txt": {"foo": []byte{60, 60, 48, 48, 0, 0, 0, 0}},
    15  		"file2.txt": {"bar": []byte{45, 196, 22, 240, 0, 0, 0, 0}},
    16  	}
    17  	for n, b := range files {
    18  		for body, sum := range b {
    19  			_, csum, err := fgp.Put(n, bytes.NewBufferString(body))
    20  			if err != nil {
    21  				t.Error(err)
    22  			}
    23  			if !bytes.Equal(csum, sum) {
    24  				t.Errorf("checksum: expected 0x%x; got 0x%x", sum, csum)
    25  			}
    26  		}
    27  	}
    28  	for n, b := range files {
    29  		for body := range b {
    30  			r, err := fgp.Get(n)
    31  			if err != nil {
    32  				t.Error(err)
    33  			}
    34  			buf, err := io.ReadAll(r)
    35  			if err != nil {
    36  				t.Error(err)
    37  			}
    38  			if body != string(buf) {
    39  				t.Errorf("expected %q, got %q", body, string(buf))
    40  			}
    41  		}
    42  	}
    43  }
    44  
    45  func TestPutter(t *testing.T) {
    46  	fp := NewDiscardFilePutter()
    47  	// map[filename]map[body]crc64sum
    48  	files := map[string]map[string][]byte{
    49  		"file1.txt": {"foo": []byte{60, 60, 48, 48, 0, 0, 0, 0}},
    50  		"file2.txt": {"bar": []byte{45, 196, 22, 240, 0, 0, 0, 0}},
    51  		"file3.txt": {"baz": []byte{32, 68, 22, 240, 0, 0, 0, 0}},
    52  		"file4.txt": {"bif": []byte{48, 9, 150, 240, 0, 0, 0, 0}},
    53  	}
    54  	for n, b := range files {
    55  		for body, sum := range b {
    56  			_, csum, err := fp.Put(n, bytes.NewBufferString(body))
    57  			if err != nil {
    58  				t.Error(err)
    59  			}
    60  			if !bytes.Equal(csum, sum) {
    61  				t.Errorf("checksum on %q: expected %v; got %v", n, sum, csum)
    62  			}
    63  		}
    64  	}
    65  }
    66  
    67  func BenchmarkPutter(b *testing.B) {
    68  	files := []string{
    69  		strings.Repeat("foo", 1000),
    70  		strings.Repeat("bar", 1000),
    71  		strings.Repeat("baz", 1000),
    72  		strings.Repeat("fooz", 1000),
    73  		strings.Repeat("vbatts", 1000),
    74  		strings.Repeat("systemd", 1000),
    75  	}
    76  	for i := 0; i < b.N; i++ {
    77  		fgp := NewBufferFileGetPutter()
    78  		for n, body := range files {
    79  			if _, _, err := fgp.Put(fmt.Sprintf("%d", n), bytes.NewBufferString(body)); err != nil {
    80  				b.Fatal(err)
    81  			}
    82  		}
    83  	}
    84  }
    85  

View as plain text