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  }