MCPcopy Create free account
hub / github.com/CPChain/chain / testParallelDBFuncs

Function testParallelDBFuncs

database/db_test.go:106–164  ·  view source on GitHub ↗
(db database.Database, t *testing.T)

Source from the content-addressed store, hash-verified

104}
105
106func testParallelDBFuncs(db database.Database, t *testing.T) {
107 const n = 8
108 var pending sync.WaitGroup
109
110 // put
111 pending.Add(n)
112 for i := 0; i < n; i++ {
113 go func(key string) {
114 defer pending.Done()
115 err := db.Put([]byte(key), []byte("v"+key))
116 if err != nil {
117 t.Fatal("put failed: " + err.Error())
118 }
119 }(strconv.Itoa(i))
120 }
121 pending.Wait()
122
123 // get
124 pending.Add(n)
125 for i := 0; i < n; i++ {
126 go func(key string) {
127 defer pending.Done()
128 data, err := db.Get([]byte(key))
129 if err != nil {
130 t.Fatal("get failed: " + err.Error())
131 }
132 if !bytes.Equal(data, []byte("v"+key)) {
133 t.Fatal(fmt.Sprintf("get failed, got %q expected %q", []byte(data), []byte("v"+key)))
134 }
135 }(strconv.Itoa(i))
136 }
137 pending.Wait()
138
139 // delete
140 pending.Add(n)
141 for i := 0; i < n; i++ {
142 go func(key string) {
143 defer pending.Done()
144 err := db.Delete([]byte(key))
145 if err != nil {
146 t.Fatal("delete failed: " + err.Error())
147 }
148 }(strconv.Itoa(i))
149 }
150 pending.Wait()
151
152 // check deletion
153 pending.Add(n)
154 for i := 0; i < n; i++ {
155 go func(key string) {
156 defer pending.Done()
157 _, err := db.Get([]byte(key))
158 if err == nil {
159 t.Fatal("get succeeded")
160 }
161 }(strconv.Itoa(i))
162 }
163 pending.Wait()

Callers 3

TestLDBParallelFuncsFunction · 0.85

Calls 8

WaitMethod · 0.80
AddMethod · 0.65
PutMethod · 0.65
FatalMethod · 0.65
ErrorMethod · 0.65
GetMethod · 0.65
EqualMethod · 0.65
DeleteMethod · 0.65

Tested by

no test coverage detected