def test_transform_dfs_existing_node(self, patched_transform_op, instance): res_instance = Resource("resource") visited = {res_instance.get_id(): instance.BLACK} instance.transform_dfs(res_instance, set(), set(), visited) assert patched_transform_op.assert_not_called
def test_transform_operation(self, patched_add_cartesian_edge, instance): res_instance = Resource("resource") res_instance.producers = {"p_1", "p_2"} res_instance.consumers = {"c_1", "c_2"} res_instance.destructors = {"d_1", "d_2"} assert instance.transform_operation(res_instance, {"pc_1", "pc_2"}, {"pp_1", "pp_2"}) == ( {"c_1", "c_2"}, {"p_1", "p_2"} ) assert patched_add_cartesian_edge.call_args_list == [ (({"p_1", "p_2"}, {"c_1", "c_2"}),), (({"c_1", "c_2"}, {"d_1", "d_2"}),), (({"pp_1", "pp_2"}, {"p_1", "p_2"}),), (({"pc_1", "pc_2"}, {"c_1", "c_2"}),), ]
def test_transform_operation_with_no_consumer_producers(self, patched_add_cartesian_edge, instance): res_instance = Resource("resource") assert instance.transform_operation(res_instance, {"pc_1", "pc_2"}, {"pp_1", "pp_2"}) == ( {"$resource-CONSUMER"}, {"$resource-PRODUCER"} ) assert patched_add_cartesian_edge.call_args_list == [ (({"$resource-PRODUCER"}, {"$resource-CONSUMER"}),), (({"$resource-CONSUMER"}, set()),), (({"pp_1", "pp_2"}, {"$resource-PRODUCER"}),), (({"pc_1", "pc_2"}, {"$resource-CONSUMER"}),), ]
def test_parse_paths_no_interfaces(self, instance): dummy_resource = Resource("res") instance.remove_dependent_producers = mock.MagicMock() instance.parse_request_parameters = mock.MagicMock() instance.get_associated_resource_for_ref = mock.MagicMock( return_value="res") instance.nodes = {"res": dummy_resource} instance.parse_paths([]) instance.remove_dependent_producers.assert_called() instance.parse_request_parameters.assert_not_called() assert dummy_resource.consumers == set() assert dummy_resource.producers == set() assert dummy_resource.destructors == set()
def test_parse_paths_with_producers(self, instance): dummy_resource = Resource("res") instance.remove_dependent_producers = mock.MagicMock() instance.parse_request_parameters = mock.MagicMock() instance.get_associated_resource_for_ref = mock.MagicMock( return_value="res") instance.nodes = {"res": dummy_resource} interface = OpenAPITaskInterface() interface.producer_references = "some_ref" interface.method = constants.POST interface.url = "url" instance.parse_paths([interface]) instance.remove_dependent_producers.assert_called() instance.parse_request_parameters.assert_called() assert dummy_resource.consumers == set() assert dummy_resource.producers == {interface.op_id} assert dummy_resource.destructors == set()
def test_parse_paths_with_no_valid_resource_node(self, instance): dummy_resource = Resource("res") def add_destructor(*args): ref_graph = args[1] ref_graph["ref"] = "destructor" instance.remove_dependent_producers = mock.MagicMock() instance.parse_request_parameters = mock.MagicMock( side_effect=add_destructor) instance.get_associated_resource_for_ref = mock.MagicMock( return_value="invalid_res") instance.nodes = {"res": dummy_resource} interface = OpenAPITaskInterface() interface.method = constants.POST interface.url = "url" instance.parse_paths([interface]) instance.remove_dependent_producers.assert_called() instance.parse_request_parameters.assert_called() assert dummy_resource.consumers == set() assert dummy_resource.producers == set() assert dummy_resource.destructors == set()
def test_transform_dfs_cycle(self, instance): res_instance = Resource("resource") visited = {res_instance.get_id(): instance.GREY} with pytest.raises(exceptions.OrderingException): instance.transform_dfs(res_instance, set(), set(), visited)
def instance(self): return Resource(key="res")
def get_resource(key): resource = Resource(key) resource.producers = {"a", "b"} resource.consumers = {"a", "c"} return resource