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
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)
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)
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()))