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
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