Ejemplo n.º 1
0
    def setUp(self):
        """
        Graph axis test class setup

        Load graph from graph_axis.jgf in JSON format
        """

        self.graph = read_jgf(self._axis_graph)
    def setUpClass(cls):
        """
        Create a graph to query
        """

        currpath = os.path.dirname(__file__)
        xpath_example = os.path.join(currpath, '../files/graph_xpath.jgf')

        cls.graph = read_jgf(xpath_example)
        cls.graph.node_tools = NodeAxisTools
Ejemplo n.º 3
0
    def test_format_export(self):
        """
        Test export of format
        """

        jgf_file = os.path.join(FILEPATH, 'graph_axis.jgf')
        graph = read_jgf(jgf_file)

        # Export graph as JSON to file
        jgfout = write_jgf(graph)
        outfile = os.path.join(FILEPATH, 'test_export.jgf')
        with open(outfile, 'w') as otf:
            otf.write(jgfout)
            self.tempfiles.append(outfile)

        self.assertTrue(os.path.isfile(outfile))

        # Import again and compare source graph
        graph1 = read_jgf(outfile)
        self.assertTrue(graph1 == graph)
Ejemplo n.º 4
0
    def test_format_import(self):
        """
        Test import of format. The graph defines a root and thus will be
        imported as a GraphAxis object.
        """

        jgf_file = os.path.join(FILEPATH, 'graph_axis.jgf')
        graph = read_jgf(jgf_file)

        # Default graph attributes set
        self.assertEqual(len(graph), 35)
        self.assertEqual(len(graph.edges), 72)
        self.assertEqual(graph.directed, False)
        self.assertEqual(graph_directionality(graph), 'undirectional')
        self.assertEqual(graph.root, 1)
        self.assertTrue(isinstance(graph, GraphAxis))

        # Because default auto_nid is True, string based node IDs not supported
        self.assertTrue('eleven' not in graph.nodes)
        self.assertTrue(11 in graph.nodes)
Ejemplo n.º 5
0
    def load(self, workflow):
        """
        Load workflow specification

        Initiate a workflow from a workflow specification or instance thereof.

        :param workflow: File path to predefined workflow in .jgf format
        :type workflow:  :py:str
        """

        # Construct a workflow GraphAxis object
        self.workflow = read_jgf(workflow)
        self.workflow.node_tools = NodeAxisTools
        self.workflow.orm = WORKFLOW_ORM

        if self.workflow.root is None:
            WorkflowError('Workflow does not have a root node defined')

        # Get metadata
        metadata = self.workflow.query_nodes(key='project_metadata')
        logging.info('Load workflow "{0}"'.format(metadata.title.get()))
        logging.info('Created: {0}, updated: {1}'.format(
            metadata.create_time.get(), metadata.update_time.get()))
        logging.info('Description: {0}'.format(metadata.description.get()))