Exemple #1
0
    def test_validate_invalid_input_interface(self):
        """Tests calling RecipeDefinition.validate() with an invalid input interface"""

        input_interface = MagicMock()
        input_interface.validate.side_effect = InvalidInterface('', '')
        definition = RecipeDefinition(input_interface)

        with self.assertRaises(InvalidDefinition) as context:
            definition.validate({}, {})
        self.assertEqual(context.exception.error.name, 'INPUT_INTERFACE')
Exemple #2
0
    def test_validate_invalid_connection(self):
        """Tests calling RecipeDefinition.validate() with an invalid connection to a node's input interface"""

        input_interface = Interface()
        definition = RecipeDefinition(input_interface)
        definition.add_job_node('A', 'job_type_1', '1.0', 1)
        definition.add_recipe_node('B', 'recipe_type_1', 1)
        definition.add_dependency('A', 'B')
        definition.add_dependency_input_connection('B', 'input_1', 'A',
                                                   'output_1')
        mocked_interfaces = {'A': MagicMock(), 'B': MagicMock()}
        mocked_interfaces[
            'B'].validate_connection.side_effect = InvalidInterfaceConnection(
                '', '')

        with self.assertRaises(InvalidDefinition) as context:
            definition.validate(mocked_interfaces, mocked_interfaces)
        self.assertEqual(context.exception.error.name, 'NODE_INTERFACE')
Exemple #3
0
    def test_validate_missing_dependency(self):
        """Tests calling RecipeDefinition.validate() with a connection that has a missing dependency"""

        input_interface = Interface()
        input_interface.parameters = {'recipe_input_1': MagicMock()}
        definition = RecipeDefinition(input_interface)
        definition.add_job_node('A', 'job_type_1', '1.0', 1)
        definition.add_recipe_node('B', 'recipe_type_1', 1)
        definition.add_job_node('C', 'job_type_2', '1.0', 1)
        definition.add_dependency('B', 'C')
        definition.add_dependency_input_connection('B', 'input_1', 'A',
                                                   'output_1')
        mocked_interfaces = {
            'A': MagicMock(),
            'B': MagicMock(),
            'C': MagicMock()
        }

        with self.assertRaises(InvalidDefinition) as context:
            definition.validate(mocked_interfaces, mocked_interfaces)
        self.assertEqual(context.exception.error.name, 'NODE_INTERFACE')
Exemple #4
0
    def test_validate_successful(self):
        """Tests calling RecipeDefinition.validate() successfully"""

        input_interface = Interface()
        definition = RecipeDefinition(input_interface)
        definition.add_job_node('A', 'job_type_1', '1.0', 1)
        definition.add_recipe_node('B', 'recipe_type_1', 1)
        definition.add_dependency('A', 'B')
        definition.add_dependency_input_connection('B', 'input_1', 'A',
                                                   'output_1')
        mocked_interfaces = {'A': MagicMock(), 'B': MagicMock()}

        warnings = definition.validate(mocked_interfaces, mocked_interfaces)
        self.assertListEqual(warnings, [])
Exemple #5
0
    def test_validate_successful(self):
        """Tests calling RecipeDefinition.validate() successfully"""

        recipe_interface = Interface()
        recipe_interface.add_parameter(
            JsonParameter('recipe_input_1', 'integer'))
        definition = RecipeDefinition(recipe_interface)
        definition.add_job_node('A', 'job_type_1', '1.0', 1)
        condition_interface = Interface()
        condition_interface.add_parameter(
            JsonParameter('cond_param', 'integer'))
        definition.add_condition_node('B', condition_interface,
                                      DataFilter(True))
        definition.add_recipe_node('C', 'recipe_type_1', 1)
        definition.add_dependency('A', 'B')
        definition.add_dependency('B', 'C')
        definition.add_recipe_input_connection('A', 'a_input_1',
                                               'recipe_input_1')
        definition.add_dependency_input_connection('B', 'cond_param', 'A',
                                                   'a_output_1')
        definition.add_dependency_input_connection('C', 'c_input_1', 'A',
                                                   'a_output_1')
        definition.add_dependency_input_connection('C', 'c_input_2', 'B',
                                                   'cond_param')
        job_input_interface = Interface()
        job_input_interface.add_parameter(JsonParameter(
            'a_input_1', 'integer'))
        job_output_interface = Interface()
        job_output_interface.add_parameter(
            JsonParameter('a_output_1', 'integer'))
        recipe_input_interface = Interface()
        recipe_input_interface.add_parameter(
            JsonParameter('c_input_1', 'integer'))
        recipe_input_interface.add_parameter(
            JsonParameter('c_input_2', 'integer'))
        input_interfaces = {
            'A': job_input_interface,
            'C': recipe_input_interface
        }
        output_interfaces = {'A': job_output_interface, 'C': Interface()}

        warnings = definition.validate(input_interfaces, output_interfaces)
        self.assertListEqual(warnings, [])