diff --git a/sdk/python/tests/test_benchmark_collections.py b/sdk/python/tests/test_benchmark_collections.py index 04b1fae..01467c6 100644 --- a/sdk/python/tests/test_benchmark_collections.py +++ b/sdk/python/tests/test_benchmark_collections.py @@ -12,21 +12,17 @@ class CollectionBenchmark(run_test_server.TestCaseWithServers, TEST_BLOCK_SIZE = 0 @classmethod - def list_recursive(cls, coll, parent_name=''): - """Return a list of filenames in a [sub]collection. - - ["stream1/file1", "stream2/file1", ...] - - """ - - items = [] - for name, item in coll.items(): - if callable(getattr(item, 'items', None)): - # (ugh) - items.extend(cls.list_recursive(item, parent_name+name+'/')) - else: - items.append(parent_name+name) - return items + def list_recursive(cls, coll, parent_name=None): + if parent_name is None: + current_name = coll.stream_name() + else: + current_name = '{}/{}'.format(parent_name, coll.name) + try: + for name in coll: + for item in cls.list_recursive(coll[name], current_name): + yield item + except TypeError: + yield current_name @classmethod def setUpClass(cls): @@ -85,7 +81,7 @@ class CollectionBenchmark(run_test_server.TestCaseWithServers, coll.save_new() self.profile_new_collection_from_server(coll.manifest_locator()) - items = self.profile_collection_list_files(coll) - self.assertEqual(len(items), specs['streams'] * specs['files_per_stream']) + num_items = sum(1 for name in self.profile_collection_list_files(coll)) + self.assertEqual(num_items, specs['streams'] * specs['files_per_stream']) self.profile_new_collection_from_collection_files(coll)