github.com/mckael/restic@v0.8.3/internal/walk/walk_test.go (about) 1 package walk_test 2 3 import ( 4 "context" 5 "os" 6 "path/filepath" 7 "strings" 8 "testing" 9 "time" 10 11 "github.com/restic/restic/internal/archiver" 12 "github.com/restic/restic/internal/pipe" 13 "github.com/restic/restic/internal/repository" 14 "github.com/restic/restic/internal/restic" 15 rtest "github.com/restic/restic/internal/test" 16 "github.com/restic/restic/internal/walk" 17 ) 18 19 func TestWalkTree(t *testing.T) { 20 repo, cleanup := repository.TestRepository(t) 21 defer cleanup() 22 23 dirs, err := filepath.Glob(rtest.TestWalkerPath) 24 rtest.OK(t, err) 25 26 // archive a few files 27 arch := archiver.New(repo) 28 sn, _, err := arch.Snapshot(context.TODO(), nil, dirs, nil, "localhost", nil, time.Now()) 29 rtest.OK(t, err) 30 31 // flush repo, write all packs 32 rtest.OK(t, repo.Flush(context.Background())) 33 34 // start tree walker 35 treeJobs := make(chan walk.TreeJob) 36 go walk.Tree(context.TODO(), repo, *sn.Tree, treeJobs) 37 38 // start filesystem walker 39 fsJobs := make(chan pipe.Job) 40 resCh := make(chan pipe.Result, 1) 41 42 f := func(string, os.FileInfo) bool { 43 return true 44 } 45 go pipe.Walk(context.TODO(), dirs, f, fsJobs, resCh) 46 47 for { 48 // receive fs job 49 fsJob, fsChOpen := <-fsJobs 50 rtest.Assert(t, !fsChOpen || fsJob != nil, 51 "received nil job from filesystem: %v %v", fsJob, fsChOpen) 52 if fsJob != nil { 53 rtest.OK(t, fsJob.Error()) 54 } 55 56 var path string 57 fsEntries := 1 58 switch j := fsJob.(type) { 59 case pipe.Dir: 60 path = j.Path() 61 fsEntries = len(j.Entries) 62 case pipe.Entry: 63 path = j.Path() 64 } 65 66 // receive tree job 67 treeJob, treeChOpen := <-treeJobs 68 treeEntries := 1 69 70 rtest.OK(t, treeJob.Error) 71 72 if treeJob.Tree != nil { 73 treeEntries = len(treeJob.Tree.Nodes) 74 } 75 76 rtest.Assert(t, fsChOpen == treeChOpen, 77 "one channel closed too early: fsChOpen %v, treeChOpen %v", 78 fsChOpen, treeChOpen) 79 80 if !fsChOpen || !treeChOpen { 81 break 82 } 83 84 rtest.Assert(t, filepath.Base(path) == filepath.Base(treeJob.Path), 85 "paths do not match: %q != %q", filepath.Base(path), filepath.Base(treeJob.Path)) 86 87 rtest.Assert(t, fsEntries == treeEntries, 88 "wrong number of entries: %v != %v", fsEntries, treeEntries) 89 } 90 } 91 92 type delayRepo struct { 93 repo restic.Repository 94 delay time.Duration 95 } 96 97 func (d delayRepo) LoadTree(ctx context.Context, id restic.ID) (*restic.Tree, error) { 98 time.Sleep(d.delay) 99 return d.repo.LoadTree(ctx, id) 100 } 101 102 var repoFixture = filepath.Join("testdata", "walktree-test-repo.tar.gz") 103 104 var walktreeTestItems = []string{ 105 "testdata/0/0/0/0", 106 "testdata/0/0/0/1", 107 "testdata/0/0/0/10", 108 "testdata/0/0/0/100", 109 "testdata/0/0/0/101", 110 "testdata/0/0/0/102", 111 "testdata/0/0/0/103", 112 "testdata/0/0/0/104", 113 "testdata/0/0/0/105", 114 "testdata/0/0/0/106", 115 "testdata/0/0/0/107", 116 "testdata/0/0/0/108", 117 "testdata/0/0/0/109", 118 "testdata/0/0/0/11", 119 "testdata/0/0/0/110", 120 "testdata/0/0/0/111", 121 "testdata/0/0/0/112", 122 "testdata/0/0/0/113", 123 "testdata/0/0/0/114", 124 "testdata/0/0/0/115", 125 "testdata/0/0/0/116", 126 "testdata/0/0/0/117", 127 "testdata/0/0/0/118", 128 "testdata/0/0/0/119", 129 "testdata/0/0/0/12", 130 "testdata/0/0/0/120", 131 "testdata/0/0/0/121", 132 "testdata/0/0/0/122", 133 "testdata/0/0/0/123", 134 "testdata/0/0/0/124", 135 "testdata/0/0/0/125", 136 "testdata/0/0/0/126", 137 "testdata/0/0/0/127", 138 "testdata/0/0/0/13", 139 "testdata/0/0/0/14", 140 "testdata/0/0/0/15", 141 "testdata/0/0/0/16", 142 "testdata/0/0/0/17", 143 "testdata/0/0/0/18", 144 "testdata/0/0/0/19", 145 "testdata/0/0/0/2", 146 "testdata/0/0/0/20", 147 "testdata/0/0/0/21", 148 "testdata/0/0/0/22", 149 "testdata/0/0/0/23", 150 "testdata/0/0/0/24", 151 "testdata/0/0/0/25", 152 "testdata/0/0/0/26", 153 "testdata/0/0/0/27", 154 "testdata/0/0/0/28", 155 "testdata/0/0/0/29", 156 "testdata/0/0/0/3", 157 "testdata/0/0/0/30", 158 "testdata/0/0/0/31", 159 "testdata/0/0/0/32", 160 "testdata/0/0/0/33", 161 "testdata/0/0/0/34", 162 "testdata/0/0/0/35", 163 "testdata/0/0/0/36", 164 "testdata/0/0/0/37", 165 "testdata/0/0/0/38", 166 "testdata/0/0/0/39", 167 "testdata/0/0/0/4", 168 "testdata/0/0/0/40", 169 "testdata/0/0/0/41", 170 "testdata/0/0/0/42", 171 "testdata/0/0/0/43", 172 "testdata/0/0/0/44", 173 "testdata/0/0/0/45", 174 "testdata/0/0/0/46", 175 "testdata/0/0/0/47", 176 "testdata/0/0/0/48", 177 "testdata/0/0/0/49", 178 "testdata/0/0/0/5", 179 "testdata/0/0/0/50", 180 "testdata/0/0/0/51", 181 "testdata/0/0/0/52", 182 "testdata/0/0/0/53", 183 "testdata/0/0/0/54", 184 "testdata/0/0/0/55", 185 "testdata/0/0/0/56", 186 "testdata/0/0/0/57", 187 "testdata/0/0/0/58", 188 "testdata/0/0/0/59", 189 "testdata/0/0/0/6", 190 "testdata/0/0/0/60", 191 "testdata/0/0/0/61", 192 "testdata/0/0/0/62", 193 "testdata/0/0/0/63", 194 "testdata/0/0/0/64", 195 "testdata/0/0/0/65", 196 "testdata/0/0/0/66", 197 "testdata/0/0/0/67", 198 "testdata/0/0/0/68", 199 "testdata/0/0/0/69", 200 "testdata/0/0/0/7", 201 "testdata/0/0/0/70", 202 "testdata/0/0/0/71", 203 "testdata/0/0/0/72", 204 "testdata/0/0/0/73", 205 "testdata/0/0/0/74", 206 "testdata/0/0/0/75", 207 "testdata/0/0/0/76", 208 "testdata/0/0/0/77", 209 "testdata/0/0/0/78", 210 "testdata/0/0/0/79", 211 "testdata/0/0/0/8", 212 "testdata/0/0/0/80", 213 "testdata/0/0/0/81", 214 "testdata/0/0/0/82", 215 "testdata/0/0/0/83", 216 "testdata/0/0/0/84", 217 "testdata/0/0/0/85", 218 "testdata/0/0/0/86", 219 "testdata/0/0/0/87", 220 "testdata/0/0/0/88", 221 "testdata/0/0/0/89", 222 "testdata/0/0/0/9", 223 "testdata/0/0/0/90", 224 "testdata/0/0/0/91", 225 "testdata/0/0/0/92", 226 "testdata/0/0/0/93", 227 "testdata/0/0/0/94", 228 "testdata/0/0/0/95", 229 "testdata/0/0/0/96", 230 "testdata/0/0/0/97", 231 "testdata/0/0/0/98", 232 "testdata/0/0/0/99", 233 "testdata/0/0/0", 234 "testdata/0/0/1/0", 235 "testdata/0/0/1/1", 236 "testdata/0/0/1/10", 237 "testdata/0/0/1/100", 238 "testdata/0/0/1/101", 239 "testdata/0/0/1/102", 240 "testdata/0/0/1/103", 241 "testdata/0/0/1/104", 242 "testdata/0/0/1/105", 243 "testdata/0/0/1/106", 244 "testdata/0/0/1/107", 245 "testdata/0/0/1/108", 246 "testdata/0/0/1/109", 247 "testdata/0/0/1/11", 248 "testdata/0/0/1/110", 249 "testdata/0/0/1/111", 250 "testdata/0/0/1/112", 251 "testdata/0/0/1/113", 252 "testdata/0/0/1/114", 253 "testdata/0/0/1/115", 254 "testdata/0/0/1/116", 255 "testdata/0/0/1/117", 256 "testdata/0/0/1/118", 257 "testdata/0/0/1/119", 258 "testdata/0/0/1/12", 259 "testdata/0/0/1/120", 260 "testdata/0/0/1/121", 261 "testdata/0/0/1/122", 262 "testdata/0/0/1/123", 263 "testdata/0/0/1/124", 264 "testdata/0/0/1/125", 265 "testdata/0/0/1/126", 266 "testdata/0/0/1/127", 267 "testdata/0/0/1/13", 268 "testdata/0/0/1/14", 269 "testdata/0/0/1/15", 270 "testdata/0/0/1/16", 271 "testdata/0/0/1/17", 272 "testdata/0/0/1/18", 273 "testdata/0/0/1/19", 274 "testdata/0/0/1/2", 275 "testdata/0/0/1/20", 276 "testdata/0/0/1/21", 277 "testdata/0/0/1/22", 278 "testdata/0/0/1/23", 279 "testdata/0/0/1/24", 280 "testdata/0/0/1/25", 281 "testdata/0/0/1/26", 282 "testdata/0/0/1/27", 283 "testdata/0/0/1/28", 284 "testdata/0/0/1/29", 285 "testdata/0/0/1/3", 286 "testdata/0/0/1/30", 287 "testdata/0/0/1/31", 288 "testdata/0/0/1/32", 289 "testdata/0/0/1/33", 290 "testdata/0/0/1/34", 291 "testdata/0/0/1/35", 292 "testdata/0/0/1/36", 293 "testdata/0/0/1/37", 294 "testdata/0/0/1/38", 295 "testdata/0/0/1/39", 296 "testdata/0/0/1/4", 297 "testdata/0/0/1/40", 298 "testdata/0/0/1/41", 299 "testdata/0/0/1/42", 300 "testdata/0/0/1/43", 301 "testdata/0/0/1/44", 302 "testdata/0/0/1/45", 303 "testdata/0/0/1/46", 304 "testdata/0/0/1/47", 305 "testdata/0/0/1/48", 306 "testdata/0/0/1/49", 307 "testdata/0/0/1/5", 308 "testdata/0/0/1/50", 309 "testdata/0/0/1/51", 310 "testdata/0/0/1/52", 311 "testdata/0/0/1/53", 312 "testdata/0/0/1/54", 313 "testdata/0/0/1/55", 314 "testdata/0/0/1/56", 315 "testdata/0/0/1/57", 316 "testdata/0/0/1/58", 317 "testdata/0/0/1/59", 318 "testdata/0/0/1/6", 319 "testdata/0/0/1/60", 320 "testdata/0/0/1/61", 321 "testdata/0/0/1/62", 322 "testdata/0/0/1/63", 323 "testdata/0/0/1/64", 324 "testdata/0/0/1/65", 325 "testdata/0/0/1/66", 326 "testdata/0/0/1/67", 327 "testdata/0/0/1/68", 328 "testdata/0/0/1/69", 329 "testdata/0/0/1/7", 330 "testdata/0/0/1/70", 331 "testdata/0/0/1/71", 332 "testdata/0/0/1/72", 333 "testdata/0/0/1/73", 334 "testdata/0/0/1/74", 335 "testdata/0/0/1/75", 336 "testdata/0/0/1/76", 337 "testdata/0/0/1/77", 338 "testdata/0/0/1/78", 339 "testdata/0/0/1/79", 340 "testdata/0/0/1/8", 341 "testdata/0/0/1/80", 342 "testdata/0/0/1/81", 343 "testdata/0/0/1/82", 344 "testdata/0/0/1/83", 345 "testdata/0/0/1/84", 346 "testdata/0/0/1/85", 347 "testdata/0/0/1/86", 348 "testdata/0/0/1/87", 349 "testdata/0/0/1/88", 350 "testdata/0/0/1/89", 351 "testdata/0/0/1/9", 352 "testdata/0/0/1/90", 353 "testdata/0/0/1/91", 354 "testdata/0/0/1/92", 355 "testdata/0/0/1/93", 356 "testdata/0/0/1/94", 357 "testdata/0/0/1/95", 358 "testdata/0/0/1/96", 359 "testdata/0/0/1/97", 360 "testdata/0/0/1/98", 361 "testdata/0/0/1/99", 362 "testdata/0/0/1", 363 "testdata/0/0/2/0", 364 "testdata/0/0/2/1", 365 "testdata/0/0/2/10", 366 "testdata/0/0/2/100", 367 "testdata/0/0/2/101", 368 "testdata/0/0/2/102", 369 "testdata/0/0/2/103", 370 "testdata/0/0/2/104", 371 "testdata/0/0/2/105", 372 "testdata/0/0/2/106", 373 "testdata/0/0/2/107", 374 "testdata/0/0/2/108", 375 "testdata/0/0/2/109", 376 "testdata/0/0/2/11", 377 "testdata/0/0/2/110", 378 "testdata/0/0/2/111", 379 "testdata/0/0/2/112", 380 "testdata/0/0/2/113", 381 "testdata/0/0/2/114", 382 "testdata/0/0/2/115", 383 "testdata/0/0/2/116", 384 "testdata/0/0/2/117", 385 "testdata/0/0/2/118", 386 "testdata/0/0/2/119", 387 "testdata/0/0/2/12", 388 "testdata/0/0/2/120", 389 "testdata/0/0/2/121", 390 "testdata/0/0/2/122", 391 "testdata/0/0/2/123", 392 "testdata/0/0/2/124", 393 "testdata/0/0/2/125", 394 "testdata/0/0/2/126", 395 "testdata/0/0/2/127", 396 "testdata/0/0/2/13", 397 "testdata/0/0/2/14", 398 "testdata/0/0/2/15", 399 "testdata/0/0/2/16", 400 "testdata/0/0/2/17", 401 "testdata/0/0/2/18", 402 "testdata/0/0/2/19", 403 "testdata/0/0/2/2", 404 "testdata/0/0/2/20", 405 "testdata/0/0/2/21", 406 "testdata/0/0/2/22", 407 "testdata/0/0/2/23", 408 "testdata/0/0/2/24", 409 "testdata/0/0/2/25", 410 "testdata/0/0/2/26", 411 "testdata/0/0/2/27", 412 "testdata/0/0/2/28", 413 "testdata/0/0/2/29", 414 "testdata/0/0/2/3", 415 "testdata/0/0/2/30", 416 "testdata/0/0/2/31", 417 "testdata/0/0/2/32", 418 "testdata/0/0/2/33", 419 "testdata/0/0/2/34", 420 "testdata/0/0/2/35", 421 "testdata/0/0/2/36", 422 "testdata/0/0/2/37", 423 "testdata/0/0/2/38", 424 "testdata/0/0/2/39", 425 "testdata/0/0/2/4", 426 "testdata/0/0/2/40", 427 "testdata/0/0/2/41", 428 "testdata/0/0/2/42", 429 "testdata/0/0/2/43", 430 "testdata/0/0/2/44", 431 "testdata/0/0/2/45", 432 "testdata/0/0/2/46", 433 "testdata/0/0/2/47", 434 "testdata/0/0/2/48", 435 "testdata/0/0/2/49", 436 "testdata/0/0/2/5", 437 "testdata/0/0/2/50", 438 "testdata/0/0/2/51", 439 "testdata/0/0/2/52", 440 "testdata/0/0/2/53", 441 "testdata/0/0/2/54", 442 "testdata/0/0/2/55", 443 "testdata/0/0/2/56", 444 "testdata/0/0/2/57", 445 "testdata/0/0/2/58", 446 "testdata/0/0/2/59", 447 "testdata/0/0/2/6", 448 "testdata/0/0/2/60", 449 "testdata/0/0/2/61", 450 "testdata/0/0/2/62", 451 "testdata/0/0/2/63", 452 "testdata/0/0/2/64", 453 "testdata/0/0/2/65", 454 "testdata/0/0/2/66", 455 "testdata/0/0/2/67", 456 "testdata/0/0/2/68", 457 "testdata/0/0/2/69", 458 "testdata/0/0/2/7", 459 "testdata/0/0/2/70", 460 "testdata/0/0/2/71", 461 "testdata/0/0/2/72", 462 "testdata/0/0/2/73", 463 "testdata/0/0/2/74", 464 "testdata/0/0/2/75", 465 "testdata/0/0/2/76", 466 "testdata/0/0/2/77", 467 "testdata/0/0/2/78", 468 "testdata/0/0/2/79", 469 "testdata/0/0/2/8", 470 "testdata/0/0/2/80", 471 "testdata/0/0/2/81", 472 "testdata/0/0/2/82", 473 "testdata/0/0/2/83", 474 "testdata/0/0/2/84", 475 "testdata/0/0/2/85", 476 "testdata/0/0/2/86", 477 "testdata/0/0/2/87", 478 "testdata/0/0/2/88", 479 "testdata/0/0/2/89", 480 "testdata/0/0/2/9", 481 "testdata/0/0/2/90", 482 "testdata/0/0/2/91", 483 "testdata/0/0/2/92", 484 "testdata/0/0/2/93", 485 "testdata/0/0/2/94", 486 "testdata/0/0/2/95", 487 "testdata/0/0/2/96", 488 "testdata/0/0/2/97", 489 "testdata/0/0/2/98", 490 "testdata/0/0/2/99", 491 "testdata/0/0/2", 492 "testdata/0/0/3/0", 493 "testdata/0/0/3/1", 494 "testdata/0/0/3/10", 495 "testdata/0/0/3/100", 496 "testdata/0/0/3/101", 497 "testdata/0/0/3/102", 498 "testdata/0/0/3/103", 499 "testdata/0/0/3/104", 500 "testdata/0/0/3/105", 501 "testdata/0/0/3/106", 502 "testdata/0/0/3/107", 503 "testdata/0/0/3/108", 504 "testdata/0/0/3/109", 505 "testdata/0/0/3/11", 506 "testdata/0/0/3/110", 507 "testdata/0/0/3/111", 508 "testdata/0/0/3/112", 509 "testdata/0/0/3/113", 510 "testdata/0/0/3/114", 511 "testdata/0/0/3/115", 512 "testdata/0/0/3/116", 513 "testdata/0/0/3/117", 514 "testdata/0/0/3/118", 515 "testdata/0/0/3/119", 516 "testdata/0/0/3/12", 517 "testdata/0/0/3/120", 518 "testdata/0/0/3/121", 519 "testdata/0/0/3/122", 520 "testdata/0/0/3/123", 521 "testdata/0/0/3/124", 522 "testdata/0/0/3/125", 523 "testdata/0/0/3/126", 524 "testdata/0/0/3/127", 525 "testdata/0/0/3/13", 526 "testdata/0/0/3/14", 527 "testdata/0/0/3/15", 528 "testdata/0/0/3/16", 529 "testdata/0/0/3/17", 530 "testdata/0/0/3/18", 531 "testdata/0/0/3/19", 532 "testdata/0/0/3/2", 533 "testdata/0/0/3/20", 534 "testdata/0/0/3/21", 535 "testdata/0/0/3/22", 536 "testdata/0/0/3/23", 537 "testdata/0/0/3/24", 538 "testdata/0/0/3/25", 539 "testdata/0/0/3/26", 540 "testdata/0/0/3/27", 541 "testdata/0/0/3/28", 542 "testdata/0/0/3/29", 543 "testdata/0/0/3/3", 544 "testdata/0/0/3/30", 545 "testdata/0/0/3/31", 546 "testdata/0/0/3/32", 547 "testdata/0/0/3/33", 548 "testdata/0/0/3/34", 549 "testdata/0/0/3/35", 550 "testdata/0/0/3/36", 551 "testdata/0/0/3/37", 552 "testdata/0/0/3/38", 553 "testdata/0/0/3/39", 554 "testdata/0/0/3/4", 555 "testdata/0/0/3/40", 556 "testdata/0/0/3/41", 557 "testdata/0/0/3/42", 558 "testdata/0/0/3/43", 559 "testdata/0/0/3/44", 560 "testdata/0/0/3/45", 561 "testdata/0/0/3/46", 562 "testdata/0/0/3/47", 563 "testdata/0/0/3/48", 564 "testdata/0/0/3/49", 565 "testdata/0/0/3/5", 566 "testdata/0/0/3/50", 567 "testdata/0/0/3/51", 568 "testdata/0/0/3/52", 569 "testdata/0/0/3/53", 570 "testdata/0/0/3/54", 571 "testdata/0/0/3/55", 572 "testdata/0/0/3/56", 573 "testdata/0/0/3/57", 574 "testdata/0/0/3/58", 575 "testdata/0/0/3/59", 576 "testdata/0/0/3/6", 577 "testdata/0/0/3/60", 578 "testdata/0/0/3/61", 579 "testdata/0/0/3/62", 580 "testdata/0/0/3/63", 581 "testdata/0/0/3/64", 582 "testdata/0/0/3/65", 583 "testdata/0/0/3/66", 584 "testdata/0/0/3/67", 585 "testdata/0/0/3/68", 586 "testdata/0/0/3/69", 587 "testdata/0/0/3/7", 588 "testdata/0/0/3/70", 589 "testdata/0/0/3/71", 590 "testdata/0/0/3/72", 591 "testdata/0/0/3/73", 592 "testdata/0/0/3/74", 593 "testdata/0/0/3/75", 594 "testdata/0/0/3/76", 595 "testdata/0/0/3/77", 596 "testdata/0/0/3/78", 597 "testdata/0/0/3/79", 598 "testdata/0/0/3/8", 599 "testdata/0/0/3/80", 600 "testdata/0/0/3/81", 601 "testdata/0/0/3/82", 602 "testdata/0/0/3/83", 603 "testdata/0/0/3/84", 604 "testdata/0/0/3/85", 605 "testdata/0/0/3/86", 606 "testdata/0/0/3/87", 607 "testdata/0/0/3/88", 608 "testdata/0/0/3/89", 609 "testdata/0/0/3/9", 610 "testdata/0/0/3/90", 611 "testdata/0/0/3/91", 612 "testdata/0/0/3/92", 613 "testdata/0/0/3/93", 614 "testdata/0/0/3/94", 615 "testdata/0/0/3/95", 616 "testdata/0/0/3/96", 617 "testdata/0/0/3/97", 618 "testdata/0/0/3/98", 619 "testdata/0/0/3/99", 620 "testdata/0/0/3", 621 "testdata/0/0/4/0", 622 "testdata/0/0/4/1", 623 "testdata/0/0/4/10", 624 "testdata/0/0/4/100", 625 "testdata/0/0/4/101", 626 "testdata/0/0/4/102", 627 "testdata/0/0/4/103", 628 "testdata/0/0/4/104", 629 "testdata/0/0/4/105", 630 "testdata/0/0/4/106", 631 "testdata/0/0/4/107", 632 "testdata/0/0/4/108", 633 "testdata/0/0/4/109", 634 "testdata/0/0/4/11", 635 "testdata/0/0/4/110", 636 "testdata/0/0/4/111", 637 "testdata/0/0/4/112", 638 "testdata/0/0/4/113", 639 "testdata/0/0/4/114", 640 "testdata/0/0/4/115", 641 "testdata/0/0/4/116", 642 "testdata/0/0/4/117", 643 "testdata/0/0/4/118", 644 "testdata/0/0/4/119", 645 "testdata/0/0/4/12", 646 "testdata/0/0/4/120", 647 "testdata/0/0/4/121", 648 "testdata/0/0/4/122", 649 "testdata/0/0/4/123", 650 "testdata/0/0/4/124", 651 "testdata/0/0/4/125", 652 "testdata/0/0/4/126", 653 "testdata/0/0/4/127", 654 "testdata/0/0/4/13", 655 "testdata/0/0/4/14", 656 "testdata/0/0/4/15", 657 "testdata/0/0/4/16", 658 "testdata/0/0/4/17", 659 "testdata/0/0/4/18", 660 "testdata/0/0/4/19", 661 "testdata/0/0/4/2", 662 "testdata/0/0/4/20", 663 "testdata/0/0/4/21", 664 "testdata/0/0/4/22", 665 "testdata/0/0/4/23", 666 "testdata/0/0/4/24", 667 "testdata/0/0/4/25", 668 "testdata/0/0/4/26", 669 "testdata/0/0/4/27", 670 "testdata/0/0/4/28", 671 "testdata/0/0/4/29", 672 "testdata/0/0/4/3", 673 "testdata/0/0/4/30", 674 "testdata/0/0/4/31", 675 "testdata/0/0/4/32", 676 "testdata/0/0/4/33", 677 "testdata/0/0/4/34", 678 "testdata/0/0/4/35", 679 "testdata/0/0/4/36", 680 "testdata/0/0/4/37", 681 "testdata/0/0/4/38", 682 "testdata/0/0/4/39", 683 "testdata/0/0/4/4", 684 "testdata/0/0/4/40", 685 "testdata/0/0/4/41", 686 "testdata/0/0/4/42", 687 "testdata/0/0/4/43", 688 "testdata/0/0/4/44", 689 "testdata/0/0/4/45", 690 "testdata/0/0/4/46", 691 "testdata/0/0/4/47", 692 "testdata/0/0/4/48", 693 "testdata/0/0/4/49", 694 "testdata/0/0/4/5", 695 "testdata/0/0/4/50", 696 "testdata/0/0/4/51", 697 "testdata/0/0/4/52", 698 "testdata/0/0/4/53", 699 "testdata/0/0/4/54", 700 "testdata/0/0/4/55", 701 "testdata/0/0/4/56", 702 "testdata/0/0/4/57", 703 "testdata/0/0/4/58", 704 "testdata/0/0/4/59", 705 "testdata/0/0/4/6", 706 "testdata/0/0/4/60", 707 "testdata/0/0/4/61", 708 "testdata/0/0/4/62", 709 "testdata/0/0/4/63", 710 "testdata/0/0/4/64", 711 "testdata/0/0/4/65", 712 "testdata/0/0/4/66", 713 "testdata/0/0/4/67", 714 "testdata/0/0/4/68", 715 "testdata/0/0/4/69", 716 "testdata/0/0/4/7", 717 "testdata/0/0/4/70", 718 "testdata/0/0/4/71", 719 "testdata/0/0/4/72", 720 "testdata/0/0/4/73", 721 "testdata/0/0/4/74", 722 "testdata/0/0/4/75", 723 "testdata/0/0/4/76", 724 "testdata/0/0/4/77", 725 "testdata/0/0/4/78", 726 "testdata/0/0/4/79", 727 "testdata/0/0/4/8", 728 "testdata/0/0/4/80", 729 "testdata/0/0/4/81", 730 "testdata/0/0/4/82", 731 "testdata/0/0/4/83", 732 "testdata/0/0/4/84", 733 "testdata/0/0/4/85", 734 "testdata/0/0/4/86", 735 "testdata/0/0/4/87", 736 "testdata/0/0/4/88", 737 "testdata/0/0/4/89", 738 "testdata/0/0/4/9", 739 "testdata/0/0/4/90", 740 "testdata/0/0/4/91", 741 "testdata/0/0/4/92", 742 "testdata/0/0/4/93", 743 "testdata/0/0/4/94", 744 "testdata/0/0/4/95", 745 "testdata/0/0/4/96", 746 "testdata/0/0/4/97", 747 "testdata/0/0/4/98", 748 "testdata/0/0/4/99", 749 "testdata/0/0/4", 750 "testdata/0/0/5/0", 751 "testdata/0/0/5/1", 752 "testdata/0/0/5/10", 753 "testdata/0/0/5/100", 754 "testdata/0/0/5/101", 755 "testdata/0/0/5/102", 756 "testdata/0/0/5/103", 757 "testdata/0/0/5/104", 758 "testdata/0/0/5/105", 759 "testdata/0/0/5/106", 760 "testdata/0/0/5/107", 761 "testdata/0/0/5/108", 762 "testdata/0/0/5/109", 763 "testdata/0/0/5/11", 764 "testdata/0/0/5/110", 765 "testdata/0/0/5/111", 766 "testdata/0/0/5/112", 767 "testdata/0/0/5/113", 768 "testdata/0/0/5/114", 769 "testdata/0/0/5/115", 770 "testdata/0/0/5/116", 771 "testdata/0/0/5/117", 772 "testdata/0/0/5/118", 773 "testdata/0/0/5/119", 774 "testdata/0/0/5/12", 775 "testdata/0/0/5/120", 776 "testdata/0/0/5/121", 777 "testdata/0/0/5/122", 778 "testdata/0/0/5/123", 779 "testdata/0/0/5/124", 780 "testdata/0/0/5/125", 781 "testdata/0/0/5/126", 782 "testdata/0/0/5/127", 783 "testdata/0/0/5/13", 784 "testdata/0/0/5/14", 785 "testdata/0/0/5/15", 786 "testdata/0/0/5/16", 787 "testdata/0/0/5/17", 788 "testdata/0/0/5/18", 789 "testdata/0/0/5/19", 790 "testdata/0/0/5/2", 791 "testdata/0/0/5/20", 792 "testdata/0/0/5/21", 793 "testdata/0/0/5/22", 794 "testdata/0/0/5/23", 795 "testdata/0/0/5/24", 796 "testdata/0/0/5/25", 797 "testdata/0/0/5/26", 798 "testdata/0/0/5/27", 799 "testdata/0/0/5/28", 800 "testdata/0/0/5/29", 801 "testdata/0/0/5/3", 802 "testdata/0/0/5/30", 803 "testdata/0/0/5/31", 804 "testdata/0/0/5/32", 805 "testdata/0/0/5/33", 806 "testdata/0/0/5/34", 807 "testdata/0/0/5/35", 808 "testdata/0/0/5/36", 809 "testdata/0/0/5/37", 810 "testdata/0/0/5/38", 811 "testdata/0/0/5/39", 812 "testdata/0/0/5/4", 813 "testdata/0/0/5/40", 814 "testdata/0/0/5/41", 815 "testdata/0/0/5/42", 816 "testdata/0/0/5/43", 817 "testdata/0/0/5/44", 818 "testdata/0/0/5/45", 819 "testdata/0/0/5/46", 820 "testdata/0/0/5/47", 821 "testdata/0/0/5/48", 822 "testdata/0/0/5/49", 823 "testdata/0/0/5/5", 824 "testdata/0/0/5/50", 825 "testdata/0/0/5/51", 826 "testdata/0/0/5/52", 827 "testdata/0/0/5/53", 828 "testdata/0/0/5/54", 829 "testdata/0/0/5/55", 830 "testdata/0/0/5/56", 831 "testdata/0/0/5/57", 832 "testdata/0/0/5/58", 833 "testdata/0/0/5/59", 834 "testdata/0/0/5/6", 835 "testdata/0/0/5/60", 836 "testdata/0/0/5/61", 837 "testdata/0/0/5/62", 838 "testdata/0/0/5/63", 839 "testdata/0/0/5/64", 840 "testdata/0/0/5/65", 841 "testdata/0/0/5/66", 842 "testdata/0/0/5/67", 843 "testdata/0/0/5/68", 844 "testdata/0/0/5/69", 845 "testdata/0/0/5/7", 846 "testdata/0/0/5/70", 847 "testdata/0/0/5/71", 848 "testdata/0/0/5/72", 849 "testdata/0/0/5/73", 850 "testdata/0/0/5/74", 851 "testdata/0/0/5/75", 852 "testdata/0/0/5/76", 853 "testdata/0/0/5/77", 854 "testdata/0/0/5/78", 855 "testdata/0/0/5/79", 856 "testdata/0/0/5/8", 857 "testdata/0/0/5/80", 858 "testdata/0/0/5/81", 859 "testdata/0/0/5/82", 860 "testdata/0/0/5/83", 861 "testdata/0/0/5/84", 862 "testdata/0/0/5/85", 863 "testdata/0/0/5/86", 864 "testdata/0/0/5/87", 865 "testdata/0/0/5/88", 866 "testdata/0/0/5/89", 867 "testdata/0/0/5/9", 868 "testdata/0/0/5/90", 869 "testdata/0/0/5/91", 870 "testdata/0/0/5/92", 871 "testdata/0/0/5/93", 872 "testdata/0/0/5/94", 873 "testdata/0/0/5/95", 874 "testdata/0/0/5/96", 875 "testdata/0/0/5/97", 876 "testdata/0/0/5/98", 877 "testdata/0/0/5/99", 878 "testdata/0/0/5", 879 "testdata/0/0/6/0", 880 "testdata/0/0/6/1", 881 "testdata/0/0/6/10", 882 "testdata/0/0/6/100", 883 "testdata/0/0/6/101", 884 "testdata/0/0/6/102", 885 "testdata/0/0/6/103", 886 "testdata/0/0/6/104", 887 "testdata/0/0/6/105", 888 "testdata/0/0/6/106", 889 "testdata/0/0/6/107", 890 "testdata/0/0/6/108", 891 "testdata/0/0/6/109", 892 "testdata/0/0/6/11", 893 "testdata/0/0/6/110", 894 "testdata/0/0/6/111", 895 "testdata/0/0/6/112", 896 "testdata/0/0/6/113", 897 "testdata/0/0/6/114", 898 "testdata/0/0/6/115", 899 "testdata/0/0/6/116", 900 "testdata/0/0/6/117", 901 "testdata/0/0/6/118", 902 "testdata/0/0/6/119", 903 "testdata/0/0/6/12", 904 "testdata/0/0/6/120", 905 "testdata/0/0/6/121", 906 "testdata/0/0/6/122", 907 "testdata/0/0/6/123", 908 "testdata/0/0/6/124", 909 "testdata/0/0/6/125", 910 "testdata/0/0/6/126", 911 "testdata/0/0/6/127", 912 "testdata/0/0/6/13", 913 "testdata/0/0/6/14", 914 "testdata/0/0/6/15", 915 "testdata/0/0/6/16", 916 "testdata/0/0/6/17", 917 "testdata/0/0/6/18", 918 "testdata/0/0/6/19", 919 "testdata/0/0/6/2", 920 "testdata/0/0/6/20", 921 "testdata/0/0/6/21", 922 "testdata/0/0/6/22", 923 "testdata/0/0/6/23", 924 "testdata/0/0/6/24", 925 "testdata/0/0/6/25", 926 "testdata/0/0/6/26", 927 "testdata/0/0/6/27", 928 "testdata/0/0/6/28", 929 "testdata/0/0/6/29", 930 "testdata/0/0/6/3", 931 "testdata/0/0/6/30", 932 "testdata/0/0/6/31", 933 "testdata/0/0/6/32", 934 "testdata/0/0/6/33", 935 "testdata/0/0/6/34", 936 "testdata/0/0/6/35", 937 "testdata/0/0/6/36", 938 "testdata/0/0/6/37", 939 "testdata/0/0/6/38", 940 "testdata/0/0/6/39", 941 "testdata/0/0/6/4", 942 "testdata/0/0/6/40", 943 "testdata/0/0/6/41", 944 "testdata/0/0/6/42", 945 "testdata/0/0/6/43", 946 "testdata/0/0/6/44", 947 "testdata/0/0/6/45", 948 "testdata/0/0/6/46", 949 "testdata/0/0/6/47", 950 "testdata/0/0/6/48", 951 "testdata/0/0/6/49", 952 "testdata/0/0/6/5", 953 "testdata/0/0/6/50", 954 "testdata/0/0/6/51", 955 "testdata/0/0/6/52", 956 "testdata/0/0/6/53", 957 "testdata/0/0/6/54", 958 "testdata/0/0/6/55", 959 "testdata/0/0/6/56", 960 "testdata/0/0/6/57", 961 "testdata/0/0/6/58", 962 "testdata/0/0/6/59", 963 "testdata/0/0/6/6", 964 "testdata/0/0/6/60", 965 "testdata/0/0/6/61", 966 "testdata/0/0/6/62", 967 "testdata/0/0/6/63", 968 "testdata/0/0/6/64", 969 "testdata/0/0/6/65", 970 "testdata/0/0/6/66", 971 "testdata/0/0/6/67", 972 "testdata/0/0/6/68", 973 "testdata/0/0/6/69", 974 "testdata/0/0/6/7", 975 "testdata/0/0/6/70", 976 "testdata/0/0/6/71", 977 "testdata/0/0/6/72", 978 "testdata/0/0/6/73", 979 "testdata/0/0/6/74", 980 "testdata/0/0/6/75", 981 "testdata/0/0/6/76", 982 "testdata/0/0/6/77", 983 "testdata/0/0/6/78", 984 "testdata/0/0/6/79", 985 "testdata/0/0/6/8", 986 "testdata/0/0/6/80", 987 "testdata/0/0/6/81", 988 "testdata/0/0/6/82", 989 "testdata/0/0/6/83", 990 "testdata/0/0/6/84", 991 "testdata/0/0/6/85", 992 "testdata/0/0/6/86", 993 "testdata/0/0/6/87", 994 "testdata/0/0/6/88", 995 "testdata/0/0/6/89", 996 "testdata/0/0/6/9", 997 "testdata/0/0/6/90", 998 "testdata/0/0/6/91", 999 "testdata/0/0/6/92", 1000 "testdata/0/0/6/93", 1001 "testdata/0/0/6/94", 1002 "testdata/0/0/6/95", 1003 "testdata/0/0/6/96", 1004 "testdata/0/0/6/97", 1005 "testdata/0/0/6/98", 1006 "testdata/0/0/6/99", 1007 "testdata/0/0/6", 1008 "testdata/0/0/7/0", 1009 "testdata/0/0/7/1", 1010 "testdata/0/0/7/10", 1011 "testdata/0/0/7/100", 1012 "testdata/0/0/7/101", 1013 "testdata/0/0/7/102", 1014 "testdata/0/0/7/103", 1015 "testdata/0/0/7/104", 1016 "testdata/0/0/7/105", 1017 "testdata/0/0/7/106", 1018 "testdata/0/0/7/107", 1019 "testdata/0/0/7/108", 1020 "testdata/0/0/7/109", 1021 "testdata/0/0/7/11", 1022 "testdata/0/0/7/110", 1023 "testdata/0/0/7/111", 1024 "testdata/0/0/7/112", 1025 "testdata/0/0/7/113", 1026 "testdata/0/0/7/114", 1027 "testdata/0/0/7/115", 1028 "testdata/0/0/7/116", 1029 "testdata/0/0/7/117", 1030 "testdata/0/0/7/118", 1031 "testdata/0/0/7/119", 1032 "testdata/0/0/7/12", 1033 "testdata/0/0/7/120", 1034 "testdata/0/0/7/121", 1035 "testdata/0/0/7/122", 1036 "testdata/0/0/7/123", 1037 "testdata/0/0/7/124", 1038 "testdata/0/0/7/125", 1039 "testdata/0/0/7/126", 1040 "testdata/0/0/7/127", 1041 "testdata/0/0/7/13", 1042 "testdata/0/0/7/14", 1043 "testdata/0/0/7/15", 1044 "testdata/0/0/7/16", 1045 "testdata/0/0/7/17", 1046 "testdata/0/0/7/18", 1047 "testdata/0/0/7/19", 1048 "testdata/0/0/7/2", 1049 "testdata/0/0/7/20", 1050 "testdata/0/0/7/21", 1051 "testdata/0/0/7/22", 1052 "testdata/0/0/7/23", 1053 "testdata/0/0/7/24", 1054 "testdata/0/0/7/25", 1055 "testdata/0/0/7/26", 1056 "testdata/0/0/7/27", 1057 "testdata/0/0/7/28", 1058 "testdata/0/0/7/29", 1059 "testdata/0/0/7/3", 1060 "testdata/0/0/7/30", 1061 "testdata/0/0/7/31", 1062 "testdata/0/0/7/32", 1063 "testdata/0/0/7/33", 1064 "testdata/0/0/7/34", 1065 "testdata/0/0/7/35", 1066 "testdata/0/0/7/36", 1067 "testdata/0/0/7/37", 1068 "testdata/0/0/7/38", 1069 "testdata/0/0/7/39", 1070 "testdata/0/0/7/4", 1071 "testdata/0/0/7/40", 1072 "testdata/0/0/7/41", 1073 "testdata/0/0/7/42", 1074 "testdata/0/0/7/43", 1075 "testdata/0/0/7/44", 1076 "testdata/0/0/7/45", 1077 "testdata/0/0/7/46", 1078 "testdata/0/0/7/47", 1079 "testdata/0/0/7/48", 1080 "testdata/0/0/7/49", 1081 "testdata/0/0/7/5", 1082 "testdata/0/0/7/50", 1083 "testdata/0/0/7/51", 1084 "testdata/0/0/7/52", 1085 "testdata/0/0/7/53", 1086 "testdata/0/0/7/54", 1087 "testdata/0/0/7/55", 1088 "testdata/0/0/7/56", 1089 "testdata/0/0/7/57", 1090 "testdata/0/0/7/58", 1091 "testdata/0/0/7/59", 1092 "testdata/0/0/7/6", 1093 "testdata/0/0/7/60", 1094 "testdata/0/0/7/61", 1095 "testdata/0/0/7/62", 1096 "testdata/0/0/7/63", 1097 "testdata/0/0/7/64", 1098 "testdata/0/0/7/65", 1099 "testdata/0/0/7/66", 1100 "testdata/0/0/7/67", 1101 "testdata/0/0/7/68", 1102 "testdata/0/0/7/69", 1103 "testdata/0/0/7/7", 1104 "testdata/0/0/7/70", 1105 "testdata/0/0/7/71", 1106 "testdata/0/0/7/72", 1107 "testdata/0/0/7/73", 1108 "testdata/0/0/7/74", 1109 "testdata/0/0/7/75", 1110 "testdata/0/0/7/76", 1111 "testdata/0/0/7/77", 1112 "testdata/0/0/7/78", 1113 "testdata/0/0/7/79", 1114 "testdata/0/0/7/8", 1115 "testdata/0/0/7/80", 1116 "testdata/0/0/7/81", 1117 "testdata/0/0/7/82", 1118 "testdata/0/0/7/83", 1119 "testdata/0/0/7/84", 1120 "testdata/0/0/7/85", 1121 "testdata/0/0/7/86", 1122 "testdata/0/0/7/87", 1123 "testdata/0/0/7/88", 1124 "testdata/0/0/7/89", 1125 "testdata/0/0/7/9", 1126 "testdata/0/0/7/90", 1127 "testdata/0/0/7/91", 1128 "testdata/0/0/7/92", 1129 "testdata/0/0/7/93", 1130 "testdata/0/0/7/94", 1131 "testdata/0/0/7/95", 1132 "testdata/0/0/7/96", 1133 "testdata/0/0/7/97", 1134 "testdata/0/0/7/98", 1135 "testdata/0/0/7/99", 1136 "testdata/0/0/7", 1137 "testdata/0/0/8/0", 1138 "testdata/0/0/8/1", 1139 "testdata/0/0/8/10", 1140 "testdata/0/0/8/100", 1141 "testdata/0/0/8/101", 1142 "testdata/0/0/8/102", 1143 "testdata/0/0/8/103", 1144 "testdata/0/0/8/104", 1145 "testdata/0/0/8/105", 1146 "testdata/0/0/8/106", 1147 "testdata/0/0/8/107", 1148 "testdata/0/0/8/108", 1149 "testdata/0/0/8/109", 1150 "testdata/0/0/8/11", 1151 "testdata/0/0/8/110", 1152 "testdata/0/0/8/111", 1153 "testdata/0/0/8/112", 1154 "testdata/0/0/8/113", 1155 "testdata/0/0/8/114", 1156 "testdata/0/0/8/115", 1157 "testdata/0/0/8/116", 1158 "testdata/0/0/8/117", 1159 "testdata/0/0/8/118", 1160 "testdata/0/0/8/119", 1161 "testdata/0/0/8/12", 1162 "testdata/0/0/8/120", 1163 "testdata/0/0/8/121", 1164 "testdata/0/0/8/122", 1165 "testdata/0/0/8/123", 1166 "testdata/0/0/8/124", 1167 "testdata/0/0/8/125", 1168 "testdata/0/0/8/126", 1169 "testdata/0/0/8/127", 1170 "testdata/0/0/8/13", 1171 "testdata/0/0/8/14", 1172 "testdata/0/0/8/15", 1173 "testdata/0/0/8/16", 1174 "testdata/0/0/8/17", 1175 "testdata/0/0/8/18", 1176 "testdata/0/0/8/19", 1177 "testdata/0/0/8/2", 1178 "testdata/0/0/8/20", 1179 "testdata/0/0/8/21", 1180 "testdata/0/0/8/22", 1181 "testdata/0/0/8/23", 1182 "testdata/0/0/8/24", 1183 "testdata/0/0/8/25", 1184 "testdata/0/0/8/26", 1185 "testdata/0/0/8/27", 1186 "testdata/0/0/8/28", 1187 "testdata/0/0/8/29", 1188 "testdata/0/0/8/3", 1189 "testdata/0/0/8/30", 1190 "testdata/0/0/8/31", 1191 "testdata/0/0/8/32", 1192 "testdata/0/0/8/33", 1193 "testdata/0/0/8/34", 1194 "testdata/0/0/8/35", 1195 "testdata/0/0/8/36", 1196 "testdata/0/0/8/37", 1197 "testdata/0/0/8/38", 1198 "testdata/0/0/8/39", 1199 "testdata/0/0/8/4", 1200 "testdata/0/0/8/40", 1201 "testdata/0/0/8/41", 1202 "testdata/0/0/8/42", 1203 "testdata/0/0/8/43", 1204 "testdata/0/0/8/44", 1205 "testdata/0/0/8/45", 1206 "testdata/0/0/8/46", 1207 "testdata/0/0/8/47", 1208 "testdata/0/0/8/48", 1209 "testdata/0/0/8/49", 1210 "testdata/0/0/8/5", 1211 "testdata/0/0/8/50", 1212 "testdata/0/0/8/51", 1213 "testdata/0/0/8/52", 1214 "testdata/0/0/8/53", 1215 "testdata/0/0/8/54", 1216 "testdata/0/0/8/55", 1217 "testdata/0/0/8/56", 1218 "testdata/0/0/8/57", 1219 "testdata/0/0/8/58", 1220 "testdata/0/0/8/59", 1221 "testdata/0/0/8/6", 1222 "testdata/0/0/8/60", 1223 "testdata/0/0/8/61", 1224 "testdata/0/0/8/62", 1225 "testdata/0/0/8/63", 1226 "testdata/0/0/8/64", 1227 "testdata/0/0/8/65", 1228 "testdata/0/0/8/66", 1229 "testdata/0/0/8/67", 1230 "testdata/0/0/8/68", 1231 "testdata/0/0/8/69", 1232 "testdata/0/0/8/7", 1233 "testdata/0/0/8/70", 1234 "testdata/0/0/8/71", 1235 "testdata/0/0/8/72", 1236 "testdata/0/0/8/73", 1237 "testdata/0/0/8/74", 1238 "testdata/0/0/8/75", 1239 "testdata/0/0/8/76", 1240 "testdata/0/0/8/77", 1241 "testdata/0/0/8/78", 1242 "testdata/0/0/8/79", 1243 "testdata/0/0/8/8", 1244 "testdata/0/0/8/80", 1245 "testdata/0/0/8/81", 1246 "testdata/0/0/8/82", 1247 "testdata/0/0/8/83", 1248 "testdata/0/0/8/84", 1249 "testdata/0/0/8/85", 1250 "testdata/0/0/8/86", 1251 "testdata/0/0/8/87", 1252 "testdata/0/0/8/88", 1253 "testdata/0/0/8/89", 1254 "testdata/0/0/8/9", 1255 "testdata/0/0/8/90", 1256 "testdata/0/0/8/91", 1257 "testdata/0/0/8/92", 1258 "testdata/0/0/8/93", 1259 "testdata/0/0/8/94", 1260 "testdata/0/0/8/95", 1261 "testdata/0/0/8/96", 1262 "testdata/0/0/8/97", 1263 "testdata/0/0/8/98", 1264 "testdata/0/0/8/99", 1265 "testdata/0/0/8", 1266 "testdata/0/0/9/0", 1267 "testdata/0/0/9/1", 1268 "testdata/0/0/9/10", 1269 "testdata/0/0/9/11", 1270 "testdata/0/0/9/12", 1271 "testdata/0/0/9/13", 1272 "testdata/0/0/9/14", 1273 "testdata/0/0/9/15", 1274 "testdata/0/0/9/16", 1275 "testdata/0/0/9/17", 1276 "testdata/0/0/9/18", 1277 "testdata/0/0/9/19", 1278 "testdata/0/0/9/2", 1279 "testdata/0/0/9/20", 1280 "testdata/0/0/9/21", 1281 "testdata/0/0/9/22", 1282 "testdata/0/0/9/23", 1283 "testdata/0/0/9/24", 1284 "testdata/0/0/9/25", 1285 "testdata/0/0/9/26", 1286 "testdata/0/0/9/27", 1287 "testdata/0/0/9/28", 1288 "testdata/0/0/9/29", 1289 "testdata/0/0/9/3", 1290 "testdata/0/0/9/30", 1291 "testdata/0/0/9/31", 1292 "testdata/0/0/9/32", 1293 "testdata/0/0/9/33", 1294 "testdata/0/0/9/34", 1295 "testdata/0/0/9/35", 1296 "testdata/0/0/9/36", 1297 "testdata/0/0/9/37", 1298 "testdata/0/0/9/38", 1299 "testdata/0/0/9/39", 1300 "testdata/0/0/9/4", 1301 "testdata/0/0/9/40", 1302 "testdata/0/0/9/41", 1303 "testdata/0/0/9/42", 1304 "testdata/0/0/9/43", 1305 "testdata/0/0/9/44", 1306 "testdata/0/0/9/45", 1307 "testdata/0/0/9/46", 1308 "testdata/0/0/9/47", 1309 "testdata/0/0/9/48", 1310 "testdata/0/0/9/49", 1311 "testdata/0/0/9/5", 1312 "testdata/0/0/9/50", 1313 "testdata/0/0/9/51", 1314 "testdata/0/0/9/52", 1315 "testdata/0/0/9/53", 1316 "testdata/0/0/9/54", 1317 "testdata/0/0/9/55", 1318 "testdata/0/0/9/56", 1319 "testdata/0/0/9/57", 1320 "testdata/0/0/9/58", 1321 "testdata/0/0/9/59", 1322 "testdata/0/0/9/6", 1323 "testdata/0/0/9/60", 1324 "testdata/0/0/9/61", 1325 "testdata/0/0/9/62", 1326 "testdata/0/0/9/63", 1327 "testdata/0/0/9/64", 1328 "testdata/0/0/9/65", 1329 "testdata/0/0/9/66", 1330 "testdata/0/0/9/67", 1331 "testdata/0/0/9/68", 1332 "testdata/0/0/9/7", 1333 "testdata/0/0/9/8", 1334 "testdata/0/0/9/9", 1335 "testdata/0/0/9", 1336 "testdata/0/0", 1337 "testdata/0", 1338 "testdata", 1339 "", 1340 } 1341 1342 func TestDelayedWalkTree(t *testing.T) { 1343 repodir, cleanup := rtest.Env(t, repoFixture) 1344 defer cleanup() 1345 1346 repo := repository.TestOpenLocal(t, repodir) 1347 rtest.OK(t, repo.LoadIndex(context.TODO())) 1348 1349 root, err := restic.ParseID("937a2f64f736c64ee700c6ab06f840c68c94799c288146a0e81e07f4c94254da") 1350 rtest.OK(t, err) 1351 1352 dr := delayRepo{repo, 100 * time.Millisecond} 1353 1354 // start tree walker 1355 treeJobs := make(chan walk.TreeJob) 1356 go walk.Tree(context.TODO(), dr, root, treeJobs) 1357 1358 i := 0 1359 for job := range treeJobs { 1360 expectedPath := filepath.Join(strings.Split(walktreeTestItems[i], "/")...) 1361 if job.Path != expectedPath { 1362 t.Fatalf("expected path %q (%v), got %q", walktreeTestItems[i], i, job.Path) 1363 } 1364 i++ 1365 } 1366 1367 if i != len(walktreeTestItems) { 1368 t.Fatalf("got %d items, expected %v", i, len(walktreeTestItems)) 1369 } 1370 } 1371 1372 func BenchmarkDelayedWalkTree(t *testing.B) { 1373 repodir, cleanup := rtest.Env(t, repoFixture) 1374 defer cleanup() 1375 1376 repo := repository.TestOpenLocal(t, repodir) 1377 rtest.OK(t, repo.LoadIndex(context.TODO())) 1378 1379 root, err := restic.ParseID("937a2f64f736c64ee700c6ab06f840c68c94799c288146a0e81e07f4c94254da") 1380 rtest.OK(t, err) 1381 1382 dr := delayRepo{repo, 10 * time.Millisecond} 1383 1384 t.ResetTimer() 1385 1386 for i := 0; i < t.N; i++ { 1387 // start tree walker 1388 treeJobs := make(chan walk.TreeJob) 1389 go walk.Tree(context.TODO(), dr, root, treeJobs) 1390 1391 for range treeJobs { 1392 } 1393 } 1394 }