def test_dot_tools(process): runner = fair_bpm.FlexibleJobRunner() job = process.createJob(111) runner.execute_job(job) tree = parse(job.to_dot()) assert len(str(tree)) > 10 g = SimpleGraph.build(tree.kid('Graph')) assert len(g.nodes) == 4 assert len(g.edges) == 3 assert g.nodes['id44']['state'] == 'COMPLETE'
def test_run_job(process): ps = process runner = fair_bpm.FlexibleJobRunner() print("ps=" + str(ps)) job = ps.createJob(111) runner.execute_job(job) tree = parse(job.to_dot()) g = SimpleGraph.build(tree.kid('Graph')) for node in g.nodes: # print("Node -> "+str(node)) assert g.nodes[node]['state'] == 'COMPLETE'
def parse(cls, dot): tree = parse(dot) id = tree.kid('Graph').children[1].label g = SimpleGraph.build(tree.kid('Graph')) ps = Process(id) for node in g.nodes: #print("About to parse node "+str(node)) ps.activities.append(Activity.parse_from_dot(node, g.nodes[node])) for edge in g.edges: parent = ps.find_activity_by_id(edge[0]) child = ps.find_activity_by_id(edge[1]) if edge[2]: child.add_parent([parent.id, edge[2]]) else: child.add_parent(parent.id) return ps
def build(type, *args, **kwargs): self = None if type == 'dot': self = Graph() sg = SimpleGraph.build(*args, **kwargs) self.nodes = sg.nodes self.edges = sg.edges self.index = sg.index elif type == 'veg': self = Graph.build_veg(*args, **kwargs) else: raise Exception, "Unknown graph type" self.eindex = dict() self.reindex = dict() for s, t, _ in self.edges: self.eindex[s] = targs = self.eindex.get(s, list()) targs.append(t) self.reindex[t] = srcs = self.reindex.get(t, list()) srcs.append(s) return self
from dot_tools import parse from dot_tools.dot_graph import SimpleGraph import pickle import sys import warnings warnings.filterwarnings("ignore") filename = sys.argv[1] with open(filename,"r") as fin: dotStr = fin.read() tree = parse(dotStr) g = SimpleGraph.build(tree.kid('Graph')) #print g.nodes.keys() #print g.edges try: name = filename.split('/')[-1].split('.')[0] except: name = "pickle_file" with open(name+".pickle","wb") as fin: pickle.dump(g.nodes.keys(),fin) pickle.dump(g.edges,fin)
def parse_to_simple_graph(cls, dot): tree = parse(dot) g = SimpleGraph.build(tree.kid('Graph')) return g
def DOTParser(pdgfile): with open(pdgfile, "r") as fin: dotStr = fin.read() tree = parse(dotStr) graph = SimpleGraph.build(tree.kid('Graph')) return graph