Project

General

Profile

Idea #6218 ยป 6218-iterator-collection-listing.patch

Brett Smith, 07/09/2015 08:03 PM

View differences:

sdk/python/tests/test_benchmark_collections.py
12 12
    TEST_BLOCK_SIZE = 0
13 13

  
14 14
    @classmethod
15
    def list_recursive(cls, coll, parent_name=''):
16
        """Return a list of filenames in a [sub]collection.
17

  
18
        ["stream1/file1", "stream2/file1", ...]
19

  
20
        """
21

  
22
        items = []
23
        for name, item in coll.items():
24
            if callable(getattr(item, 'items', None)):
25
                # (ugh)
26
                items.extend(cls.list_recursive(item, parent_name+name+'/'))
27
            else:
28
                items.append(parent_name+name)
29
        return items
15
    def list_recursive(cls, coll, parent_name=None):
16
        if parent_name is None:
17
            current_name = coll.stream_name()
18
        else:
19
            current_name = '{}/{}'.format(parent_name, coll.name)
20
        try:
21
            for name in coll:
22
                for item in cls.list_recursive(coll[name], current_name):
23
                    yield item
24
        except TypeError:
25
            yield current_name
30 26

  
31 27
    @classmethod
32 28
    def setUpClass(cls):
......
85 81
        coll.save_new()
86 82
        self.profile_new_collection_from_server(coll.manifest_locator())
87 83

  
88
        items = self.profile_collection_list_files(coll)
89
        self.assertEqual(len(items), specs['streams'] * specs['files_per_stream'])
84
        num_items = sum(1 for name in self.profile_collection_list_files(coll))
85
        self.assertEqual(num_items, specs['streams'] * specs['files_per_stream'])
90 86

  
91 87
        self.profile_new_collection_from_collection_files(coll)
    (1-1/1)