Пример #1
0
 def test_find_node_success(self):
     sample = """<?xml version="1.0" encoding="utf-8"?>
         <server></server>
         """
     root_node = minidom.parse(StringIO.StringIO(sample))
     result = LoaderUtilities.find_node("file_name", root_node, "server")
     self.assertEquals('server', result.tagName)
 def test_find_node_success(self):
     sample = """<?xml version="1.0" encoding="utf-8"?>
         <server></server>
         """
     root_node = minidom.parse(StringIO.StringIO(sample))
     result = LoaderUtilities.find_node("file_name",root_node, "server")
     self.assertEquals('server', result.tagName)
    def _parse_from_stream(self, stream, directory, file_path, address):
        level_dom = self._parse_dom(stream, file_path)

        # Check schema
        schema_checker      = SchemaChecker.SchemaChecker()
        schema_checker.check_schema(file_path, self.XSD_FILE_PATH)

        level_node      = LoaderUtilities.find_node(file_path, level_dom,  self.SUB_LEVEL + 's')

        # Load important nodes
        configuration_nodes = LoaderUtilities.find_nodes(file_path, level_node,  'configuration')
        user_nodes          = LoaderUtilities.find_nodes(file_path, level_node,  'user')
        runner_nodes        = LoaderUtilities.find_nodes(file_path, level_node,  'runner')
        sub_level_nodes     = LoaderUtilities.find_nodes(file_path, level_node, self.SUB_LEVEL)

        # Parse nodes
        configurations      = self._parse_configurations(directory, configuration_nodes)
        runner              = self._parse_runner(directory, runner_nodes)
        sub_levels          = self._parse_level(address, directory, sub_level_nodes)

        # Return structure
        level_configuration = self.CONFIG_CLASS(
                    None,
                    configurations,
                    sub_levels,
                    runner = runner,
                )

        # We know there can be 0 or 1 node...
        if len(user_nodes) > 0:
            level_configuration.user = LoaderUtilities.obtain_text_safe(user_nodes[0])

        return level_configuration
 def _parse_creation(self, file_path, protocol_node):
     creation_node = LoaderUtilities.find_node(file_path, protocol_node, 'creation')
     parameters    = self._parse_parameters(file_path, creation_node)
     creation_configuration = ConfigurationData.CreationConfiguration(
             parameters
         )
     return creation_configuration
Пример #5
0
 def test_find_node_too_many(self):
     sample = """<?xml version="1.0" encoding="utf-8"?>
         <server>
             <configuration/>
             <configuration/>
         </server>
         """
     root_node = minidom.parse(StringIO.StringIO(sample))
     server_node = LoaderUtilities.find_node('file_name', root_node,
                                             'server')
     self.assertRaises(LoaderErrors.InvalidSyntaxFileConfigurationError,
                       LoaderUtilities.find_node, "file_name", server_node,
                       "configuration")
    def _parse_from_stream(self, stream, directory, file_path, address):
        server_dom = self._parse_dom(stream, file_path)

        # Check schema
        schema_checker     = SchemaChecker.SchemaChecker()
        schema_checker.check_schema(file_path, SERVER_XSD_FILE_PATH)

        server_node         = LoaderUtilities.find_node(file_path, server_dom,  'server')

        # Load important nodes
        configuration_nodes = LoaderUtilities.find_nodes(file_path, server_node,  'configuration')
        server_type_node    = LoaderUtilities.find_node(file_path, server_node, 'type')
        methods_node        = LoaderUtilities.find_node(file_path, server_node, 'methods')
        implementation_node = LoaderUtilities.find_node(file_path, server_node, 'implementation')
        restrictions_nodes  = LoaderUtilities.find_nodes(file_path, server_node,  'restriction')
        protocols_nodes     = LoaderUtilities.find_node(file_path, server_node, 'protocols')

        # Parse nodes
        configurations     = self._parse_configurations(directory, configuration_nodes)
        server_type        = self._parse_server_type(server_type_node)
        server_type_module = self._parse_server_type_module(server_type_node)
        methods            = self._parse_methods(methods_node)
        implementation     = self._parse_implementation(implementation_node)
        restrictions       = self._parse_restrictions(directory, restrictions_nodes)
        protocols          = self._parse_protocols(file_path, protocols_nodes, address)

        # Return structure
        server_configuration = ConfigurationData.ServerConfiguration(
                    None,
                    configurations,
                    server_type,
                    server_type_module,
                    methods,
                    implementation,
                    restrictions,
                    protocols
                )
        return server_configuration
    def _parse_coordinations(self, file_path, protocol_node):
        coordinations_node = LoaderUtilities.find_node(file_path, protocol_node, 'coordinations')

        coordinations = []
        coordination_nodes = LoaderUtilities.find_nodes(file_path, coordinations_node, 'coordination')
        for coordination_node in coordination_nodes:
            parameters = self._parse_parameters(file_path, coordination_node)
            coordination = ConfigurationData.CoordinationConfiguration(parameters)
            coordinations.append(coordination)

        coordinations_configuration = ConfigurationData.CoordinationsConfiguration(
                coordinations
            )
        return coordinations_configuration
 def test_find_node_too_many(self):
     sample = """<?xml version="1.0" encoding="utf-8"?>
         <server>
             <configuration/>
             <configuration/>
         </server>
         """
     root_node = minidom.parse(StringIO.StringIO(sample))
     server_node = LoaderUtilities.find_node('file_name',root_node,'server')
     self.assertRaises(
         LoaderErrors.InvalidSyntaxFileConfigurationError,
         LoaderUtilities.find_node,
         "file_name",
         server_node,
         "configuration"
     )