...
1
16
17 package testing
18
19 import (
20 "fmt"
21 "sync"
22 )
23
24
25 type MemStore struct {
26 mem map[string][]byte
27 sync.Mutex
28 }
29
30
31 func NewMemStore() *MemStore {
32 return &MemStore{mem: make(map[string][]byte)}
33 }
34
35
36 func (mstore *MemStore) Write(key string, data []byte) error {
37 mstore.Lock()
38 defer mstore.Unlock()
39 mstore.mem[key] = data
40 return nil
41 }
42
43
44 func (mstore *MemStore) Read(key string) ([]byte, error) {
45 mstore.Lock()
46 defer mstore.Unlock()
47 data, ok := mstore.mem[key]
48 if !ok {
49 return nil, fmt.Errorf("checkpoint is not found")
50 }
51 return data, nil
52 }
53
54
55 func (mstore *MemStore) Delete(key string) error {
56 mstore.Lock()
57 defer mstore.Unlock()
58 delete(mstore.mem, key)
59 return nil
60 }
61
62
63 func (mstore *MemStore) List() ([]string, error) {
64 mstore.Lock()
65 defer mstore.Unlock()
66 keys := make([]string, 0)
67 for key := range mstore.mem {
68 keys = append(keys, key)
69 }
70 return keys, nil
71 }
72
View as plain text