@cryptotaxi247 / kubo / commits / b77d5aa13

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 +}*/