hamt: reinstate a useful debug function
License: MIT Signed-off-by: Zach Ramsay <zach.ramsay@gmail.com>
zramsay committed
Jun 1, 2017 at 13:58 UTC
b77d5aa13d8eb44336601b24d0ed8e81eec9074a
1 file changed
+102
unixfs/hamt/hamt_stress_test.go
+102
@@ -186,3 +186,105 @@ func genOpSet(seed int64, keep, temp []string) []testOp {
186
}
187
}
188
}
189
+
190
+// executes the given op set with a repl to allow easier debugging
191
+/*func debugExecuteOpSet(ds dag.DAGService, width int, ops []testOp) (*HamtShard, error) {
192
+
193
+ s, err := NewHamtShard(ds, width)
194
+ if err != nil {
195
+ return nil, err
196
+ }
197
+
198
+ e := ft.EmptyDirNode()
199
+ ds.Add(e)
200
+ ctx := context.TODO()
201
+
202
+ run := 0
203
+
204
+ opnames := map[int]string{
205
+ opAdd: "add",
206
+ opDel: "del",
207
+ }
208
+
209
+mainloop:
210
+ for i := 0; i < len(ops); i++ {
211
+ o := ops[i]
212
+
213
+ fmt.Printf("Op %d: %s %s\n", i, opnames[o.Op], o.Val)
214
+ for run == 0 {
215
+ cmd := readCommand()
216
+ parts := strings.Split(cmd, " ")
217
+ switch parts[0] {
218
+ case "":
219
+ run = 1
220
+ case "find":
221
+ _, err := s.Find(ctx, parts[1])
222
+ if err == nil {
223
+ fmt.Println("success")
224
+ } else {
225
+ fmt.Println(err)
226
+ }
227
+ case "run":
228
+ if len(parts) > 1 {
229
+ n, err := strconv.Atoi(parts[1])
230
+ if err != nil {
231
+ panic(err)
232
+ }
233
+
234
+ run = n
235
+ } else {
236
+ run = -1
237
+ }
238
+ case "lookop":
239
+ for k = 0; k < len(ops); k++ {
240
+ if ops[k].Val == parts[1] {
241
+ fmt.Printf(" Op %d: %s %s\n", k, opnames[ops[k].Op], parts[1])
242
+ }
243
+ }
244
+ case "restart":
245
+ var err error
246
+ s, err = NewHamtShard(ds, width)
247
+ if err != nil {
248
+ panic(err)
249
+ }
250
+ i = -1
251
+ continue mainloop
252
+ case "print":
253
+ nd, err := s.Node()
254
+ if err != nil {
255
+ panic(err)
256
+ }
257
+ printDag(ds, nd.(*dag.ProtoNode), 0)
258
+ }
259
+ }
260
+ run--
261
+
262
+ switch o.Op {
263
+ case opAdd:
264
+ err := s.Set(ctx, o.Val, e)
265
+ if err != nil {
266
+ return nil, fmt.Errorf("inserting %s: %s", o.Val, err)
267
+ }
268
+ case opDel:
269
+ fmt.Println("deleting: ", o.Val)
270
+ err := s.Remove(ctx, o.Val)
271
+ if err != nil {
272
+ return nil, fmt.Errorf("deleting %s: %s", o.Val, err)
273
+ }
274
+ case opFind:
275
+ _, err := s.Find(ctx, o.Val)
276
+ if err != nil {
277
+ return nil, fmt.Errorf("finding %s: %s", o.Val, err)
278
+ }
279
+ }
280
+ }
281
+
282
+ return s, nil
283
+}
284
+
285
+func readCommand() string {
286
+ fmt.Print("> ")
287
+ scan := bufio.NewScanner(os.Stdin)
288
+ scan.Scan()
289
+ return scan.Text()
290
+}*/