def test_get_marker_tree_leaves(self): """ Make sure all the leaves of a marker are returned as expected from marker._list_of_leaf_markers() """ from furious.marker_tree.identity_utils import leaf_persistence_id_from_group_id from furious.marker_tree.marker import Marker root_marker = Marker(id="polly") for x in xrange(3): root_marker.children.append(Marker(id=leaf_persistence_id_from_group_id(root_marker.id, x))) originally_a_leaf_marker = root_marker.children[0] sub_tree_marker = Marker( id=originally_a_leaf_marker.id, children=[Marker(id=leaf_persistence_id_from_group_id(originally_a_leaf_marker.id, i)) for i in xrange(3)], ) root_marker.children[0] = sub_tree_marker root_marker.persist() leaves = root_marker._list_of_leaf_markers() self.assertEqual(len(leaves), 5) reloaded_root_marker = Marker.get(root_marker.id) self.assertIsNotNone(reloaded_root_marker) leaves = reloaded_root_marker._list_of_leaf_markers() # no jobs run and updated, so there should be no # leaves persisted yet self.assertEqual(len(leaves), 0)
def test_combiner_results(self): """ Make sure the expected results are in the root_marker.results after the job is done. """ from furious.marker_tree.identity_utils import leaf_persistence_id_from_group_id from furious.marker_tree.marker import Marker from furious.tests.marker_tree import dummy_success_callback from furious.tests.marker_tree import dummy_internal_vertex_combiner from furious.tests.marker_tree import dummy_leaf_combiner context_callbacks = { 'success': dummy_success_callback, 'internal_vertex_combiner': dummy_internal_vertex_combiner, 'leaf_combiner': dummy_leaf_combiner } root_marker = Marker(id="big_job", callbacks=context_callbacks) for x in xrange(2): root_marker.children.append(Marker( id=str(x), group_id=root_marker.id, callbacks=context_callbacks, children=[ Marker(id=leaf_persistence_id_from_group_id( str(x), i)) for i in xrange(3)] )) originally_a_leaf_marker = root_marker.children[1].children[1] sub_tree_marker = Marker(id=originally_a_leaf_marker.id, children=[Marker(id= leaf_persistence_id_from_group_id(originally_a_leaf_marker.id, i)) for i in xrange(3)], callbacks=context_callbacks) root_marker.children[1].children[1] = sub_tree_marker #persist marker tree root_marker.persist() #similate running all the jobs leaf_markers = root_marker._list_of_leaf_markers() for marker in leaf_markers: marker.done = True marker.result = 1 marker.update_done(persist_first=True) loaded_root_marker = Marker.get("big_job") self.assertTrue(loaded_root_marker.done) self.assertEqual(loaded_root_marker.result, [[[1, 1, 1]], [[1], [[1, 1, 1]], [1]]])