def test_attach_destroy_resource_no_sentinel_because_other_leaf_nodes( fc_node_builder): """ Make sure downstream resource-delete operator insertion works correctly """ node0 = OperatorNode({}, { 'name': 'test0', 'type': 'none', }) node1 = OperatorNode({}, { 'name': 'test1', 'type': 'none', }) node2 = OperatorNode({}, { 'name': 'test2', 'type': 'none', 'upstream_dependencies': ['test0'], }) node3 = OperatorNode({}, { 'name': 'test3', 'type': 'none', 'upstream_dependencies': ['test2'], 'requires_resources': ['cluster'], }) node4 = OperatorNode({}, { 'name': 'test4', 'type': 'none', 'upstream_dependencies': ['test2', 'test1'], 'requires_resources': ['cluster'], }) node5 = OperatorNode({}, { 'name': 'test4', 'type': 'none', 'upstream_dependencies': ['test3'], }) graph = _GraphUtil.build_subgraph( [node0, node1, node2, node3, node4, node5]) destroy_resource_node = OperatorNode({}, { 'name': 'destroy_cluster', 'type': 'none', }) resource = MockResource(name='cluster', create_operator=None, destroy_operator=destroy_resource_node, disable_sentinel_node=False) _GraphUtil.attach_destroy_resource(resource, graph, fc_node_builder) destroy_node_upstream = _GraphUtil.upstream_dependency_set( destroy_resource_node, graph) assert destroy_node_upstream == frozenset([node3, node4]) assert len(_GraphUtil.downstream_dependency_set(node4, graph)) == 2 assert destroy_resource_node in _GraphUtil.downstream_dependency_set( node4, graph) # sentinel node should also have been inserted assert any(item.name == 'destroy_cluster-sentinel' for item in _GraphUtil.downstream_dependency_set(node4, graph))
def test_attach_destroy_resource_no_sentinel_by_config(fc_node_builder): """ Make sure downstream resource-delete operator insertion works correctly """ node0 = OperatorNode({}, { 'name': 'test0', 'type': 'none', }) node1 = OperatorNode({}, { 'name': 'test1', 'type': 'none', }) node2 = OperatorNode({}, { 'name': 'test2', 'type': 'none', 'upstream_dependencies': ['test0'], }) node3 = OperatorNode({}, { 'name': 'test3', 'type': 'none', 'upstream_dependencies': ['test2'], 'requires_resources': ['cluster'], }) node4 = OperatorNode({}, { 'name': 'test4', 'type': 'none', 'upstream_dependencies': ['test2', 'test1'], 'requires_resources': ['cluster'], }) node5 = OperatorNode({}, { 'name': 'test4', 'type': 'none', 'upstream_dependencies': ['test3'], 'requires_resources': ['cluster'], }) graph = _GraphUtil.build_subgraph( [node0, node1, node2, node3, node4, node5]) destroy_resource_node = OperatorNode({}, { 'name': 'destroy_cluster', 'type': 'none', }) resource = MockResource(name='cluster', create_operator=None, destroy_operator=destroy_resource_node, disable_sentinel_node=True) _GraphUtil.attach_destroy_resource(resource, graph, fc_node_builder) destroy_node_upstream = _GraphUtil.upstream_dependency_set( destroy_resource_node, graph) assert destroy_node_upstream == frozenset([node4, node5]) assert _GraphUtil.downstream_dependency_set(node4, graph) == \ _GraphUtil.downstream_dependency_set(node5, graph) == \ frozenset([destroy_resource_node])