-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstore_test.go
130 lines (109 loc) · 2.76 KB
/
store_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package main
import (
"bytes"
"fmt"
"io"
"testing"
)
func newStore() *Store {
opts := StoreOpts{
PathTransformFunc: CASPathTransformFunc,
}
return NewStore(opts)
}
func teardown(t *testing.T, store *Store) {
if err := store.Clear(); err != nil {
t.Error(err)
}
}
func TestTransformPathFunc(t *testing.T) {
key := "greatestintheworld"
pathKey := CASPathTransformFunc(key)
expectedFileName := "abb9f44788eef303f9290238437fe418cd166c8e"
expectedPathName := "abb9f/44788/eef30/3f929/02384/37fe4/18cd1/66c8e"
if pathKey.pathName != expectedPathName {
t.Errorf("Actual: %s, Expected: %s", pathKey.pathName, expectedPathName)
}
if pathKey.FileName != expectedFileName {
t.Errorf("Actual: %s, Expected: %s", pathKey.pathName, expectedFileName)
}
}
func TestStore(t *testing.T) {
store := newStore()
defer teardown(t, store)
key := "lowlevellearning"
data := []byte("Some jpg file")
// Writing Data
err := store.Write(key, bytes.NewReader(data))
if err != nil {
t.Error(err)
}
if exists := store.Has(key); !exists {
t.Errorf("Key: %s not found", key)
}
fmt.Printf("Key: %s exists\n", key)
// Reading Data
r, err := store.Read(key)
b, _ := io.ReadAll(r)
if string(b) != string(data) {
t.Errorf("Actual: %s, Expected: %s", string(b), string(data))
}
fmt.Printf("Key: %s, Data: %s\n", key, string(b))
// Deleting the key and its contents
del_err := store.Delete(key)
if del_err != nil {
t.Error(del_err)
}
fmt.Printf("Successfully deleted the key: %s", key)
}
func TestStoreMultipleKeys(t *testing.T) {
store := newStore()
defer teardown(t, store)
keyArr := make([]string, 0, 10)
for i := 0; i < 10; i++ {
keyArr = append(keyArr, fmt.Sprintf("newkey_%d", i))
}
data := []byte("Distributed file systems is amazing")
// Writing Multiple Keys
for i := 0; i < 10; i++ {
key := keyArr[i]
err := store.Write(key, bytes.NewReader(data))
if err != nil {
t.Error(err)
}
}
// Checking if all the keys exist
for i := 0; i < 10; i++ {
key := keyArr[i]
if exists := store.Has(key); !exists {
t.Errorf("Key: %s not found", key)
}
fmt.Printf("Key: %s exists\n", key)
}
// Reading all the keys
for i := 0; i < 10; i++ {
key := keyArr[i]
r, _ := store.Read(key)
b, _ := io.ReadAll(r)
if string(b) != string(data) {
t.Errorf("Actual: %s, Expected: %s", string(b), string(data))
}
fmt.Printf("Key: %s, Data: %s\n", key, string(b))
}
// Deleting all the keys
for i := 0; i < 10; i++ {
key := keyArr[i]
del_err := store.Delete(key)
if del_err != nil {
t.Error(del_err)
}
fmt.Printf("Successfully deleted the key: %s", key)
}
// Verifying that the keys don't exist anymore
for i := 0; i < 10; i++ {
key := keyArr[i]
if exists := store.Has(key); exists {
t.Errorf("Key: %s still exists", key)
}
}
}