def test_default_collectors(self): platform_info = {'system': 'Generic'} compat_platforms = [platform_info] collectors_for_platform = collector.find_collectors_for_platform( default_collectors.collectors, compat_platforms) all_fact_subsets, aliases_map = collector.build_fact_id_to_collector_map( collectors_for_platform) all_valid_subsets = frozenset(all_fact_subsets.keys()) collector_names = collector.get_collector_names( valid_subsets=all_valid_subsets, aliases_map=aliases_map, platform_info=platform_info) complete_collector_names = collector._solve_deps( collector_names, all_fact_subsets) dep_map = collector.build_dep_data(complete_collector_names, all_fact_subsets) ordered_deps = collector.tsort(dep_map) ordered_collector_names = [x[0] for x in ordered_deps] res = collector.select_collector_classes(ordered_collector_names, all_fact_subsets) self.assertTrue( res.index(default_collectors.ServiceMgrFactCollector) > res.index( default_collectors.DistributionFactCollector), res) self.assertTrue( res.index(default_collectors.ServiceMgrFactCollector) > res.index( default_collectors.PlatformFactCollector), res)
def test_default_collectors(self): platform_info = {'system': 'Generic'} compat_platforms = [platform_info] collectors_for_platform = collector.find_collectors_for_platform(default_collectors.collectors, compat_platforms) all_fact_subsets, aliases_map = collector.build_fact_id_to_collector_map(collectors_for_platform) all_valid_subsets = frozenset(all_fact_subsets.keys()) collector_names = collector.get_collector_names(valid_subsets=all_valid_subsets, aliases_map=aliases_map, platform_info=platform_info) complete_collector_names = collector._solve_deps(collector_names, all_fact_subsets) dep_map = collector.build_dep_data(complete_collector_names, all_fact_subsets) ordered_deps = collector.tsort(dep_map) ordered_collector_names = [x[0] for x in ordered_deps] res = collector.select_collector_classes(ordered_collector_names, all_fact_subsets) self.assertTrue(res.index(default_collectors.ServiceMgrFactCollector) > res.index(default_collectors.DistributionFactCollector), res) self.assertTrue(res.index(default_collectors.ServiceMgrFactCollector) > res.index(default_collectors.PlatformFactCollector), res)
def test_unsolvable(self): dep_map = {'leaf1': set(), 'node2': set(['leaf2'])} res = collector.tsort(dep_map) self.assertIsInstance(res, list) names = [x[0] for x in res] self.assertEqual(set(names), set(dep_map.keys()))
def test_chain(self): dep_map = {'leaf1': set(['leaf2']), 'leaf2': set(['leaf3']), 'leaf3': set(['leaf4']), 'leaf4': set(), 'leaf5': set(['leaf1'])} res = collector.tsort(dep_map) self.assertIsInstance(res, list) names = [x[0] for x in res] self.assertEqual(set(names), set(dep_map.keys()))
def test_just_nodes(self): dep_map = {'leaf1': set(), 'leaf4': set(), 'leaf3': set(), 'leaf2': set()} res = collector.tsort(dep_map) self.assertIsInstance(res, list) names = [x[0] for x in res] # not a lot to assert here, any order of the # results is valid self.assertEqual(set(names), set(dep_map.keys()))
def test_multi_pass(self): dep_map = {'leaf1': set(), 'leaf2': set(['leaf3', 'leaf1', 'leaf4', 'leaf5']), 'leaf3': set(['leaf4', 'leaf1']), 'leaf4': set(['leaf1']), 'leaf5': set(['leaf1'])} res = collector.tsort(dep_map) self.assertIsInstance(res, list) names = [x[0] for x in res] self.assertEqual(set(names), set(dep_map.keys())) self.assertTrue(names.index('leaf1') < names.index('leaf2')) for leaf in ('leaf2', 'leaf3', 'leaf4', 'leaf5'): self.assertTrue(names.index('leaf1') < names.index(leaf))
def test(self): dep_map = {'network': set(['distribution', 'platform']), 'virtual': set(), 'platform': set(['what_platform_wants']), 'what_platform_wants': set(), 'network_stuff': set(['network'])} res = collector.tsort(dep_map) # pprint.pprint(res) self.assertIsInstance(res, list) names = [x[0] for x in res] self.assertTrue(names.index('network_stuff') > names.index('network')) self.assertTrue(names.index('platform') > names.index('what_platform_wants')) self.assertTrue(names.index('network') > names.index('platform'))