예제 #1
0
    def testRunWorkflow(self):
        wf = self.reader.parse_file(os.path.join(os.path.dirname(__file__), 'xml/openwfe/workflow1.xml'))

        for name in wf[0].tasks:
            wf[0].tasks[name].signal_connect('reached',   self.on_reached_cb)
            wf[0].tasks[name].signal_connect('completed', on_complete_cb, self.taken_path)

        job = Job(wf[0])
        try:
            job.complete_all()
        except:
            job.dump()
            raise

        path = [( 1, 'Start'),
                ( 2, 'concurrence_1'),
                ( 3, 'task_a1'),
                ( 4, 'task_a2'),
                ( 5, 'if_condition_1'),
                ( 6, 'task_a3'),
                ( 7, 'if_condition_1_end'),
                ( 8, 'if_condition_2'),
                ( 9, 'task_a5'),
                (10, 'if_condition_2_end'),
                ( 3, 'task_b1'),
                ( 4, 'task_b2'),
                ( 5, 'concurrence_1_end'),
                ( 6, 'task_c1'),
                ( 7, 'task_c2'),
                ( 8, 'End')]

        assert_same_path(self, path, self.taken_path)
예제 #2
0
파일: TaskTest.py 프로젝트: gonicus/clacks
 def testJob(self):
     self.job = Job(self.workflow)
     for name in self.workflow.tasks:
         self.workflow.tasks[name].signal_connect('reached',   self.on_reached_cb)
         self.workflow.tasks[name].signal_connect('completed', self.on_complete_cb)
     while not self.job.is_completed():
         self.job.complete_next()
예제 #3
0
파일: TaskTest.py 프로젝트: gonicus/clacks
class TaskTest(unittest.TestCase):
    def setUp(self):
        self.connectDB()
        self.reader = XmlReader()
        self.input = os.path.dirname(__file__) + "/xml/anlage_benutzer.xml"
        self.workflow = self.reader.parse_file(self.input).pop()

    def testFileExists(self):
        assert(os.path.isfile(self.input))
        assert(os.access(self.input, os.R_OK))

    def testReader(self):
        self.reader.parse_file(self.input)
        
    def testTask(self):
        self.reader.parse_file(self.input).pop()

    def testJob(self):
        self.job = Job(self.workflow)
        for name in self.workflow.tasks:
            self.workflow.tasks[name].signal_connect('reached',   self.on_reached_cb)
            self.workflow.tasks[name].signal_connect('completed', self.on_complete_cb)
        while not self.job.is_completed():
            self.job.complete_next()


    def connectDB(self):
        global engine, db

        host = "build-lenny-32.intranet.gonicus.de"
        db_name = "spiff"
        username = "******"
        password = "******"

        # Connect to MySQL.
        auth        = username + ':' + password
        dbn         = 'mysql://' + auth + '@' + host + '/' + db_name
        engine = create_engine(dbn)
        clear_mappers()

    def on_reached_cb(self, job, task):
        # print "Reached Task: %s" % task.get_name()
        pass

    def on_complete_cb(self, job, task):
        # print "Completed Task: %s" % task.get_name()
        pass
예제 #4
0
    def runWorkflow(self, wf, xml_filename):
        taken_path = []
        for name in wf.tasks:
            wf.tasks[name].signal_connect('reached',   on_reached_cb,  taken_path)
            wf.tasks[name].signal_connect('completed', on_complete_cb, taken_path)

        # Execute all tasks within the Job.
        job = Job(wf)
        self.assert_(not job.is_completed(), 'Job is complete before start')
        try:
            job.complete_all(False)
        except:
            job.task_tree.dump()
            raise

        #job.task_tree.dump()
        self.assert_(job.is_completed(),
                     'complete_all() returned, but job is not complete\n'
                   + job.task_tree.get_dump())

        # Make sure that there are no waiting tasks left in the tree.
        for node in Task.Iterator(job.task_tree, Task.READY):
            job.task_tree.dump()
            raise Exception('Node with state READY: %s' % node.name)

        # Check whether the correct route was taken.
        filename = xml_filename + '.path'
        if os.path.exists(filename):
            file     = open(filename, 'r')
            expected = file.read()
            file.close()
            taken_path = '\n'.join(taken_path) + '\n'
            error      = '%s:\n'       % name
            error     += 'Expected:\n'
            error     += '%s\n'        % expected
            error     += 'but got:\n'
            error     += '%s\n'        % taken_path
            self.assert_(taken_path == expected, error)

        # Check attribute availibility.
        filename = xml_filename + '.data'
        if os.path.exists(filename):
            file     = open(filename, 'r')
            expected = file.read()
            file.close()
            result   = job.get_attribute('data', '')
            error    = '%s:\n'       % name
            error   += 'Expected:\n'
            error   += '%s\n'        % expected
            error   += 'but got:\n'
            error   += '%s\n'        % result
            self.assert_(result == expected, error)
예제 #5
0
    def runWorkflow(self, wf):
        taken_path = {'reached':   [],
                      'completed': []}
        for name, task in wf.tasks.iteritems():
            task.signal_connect('reached',   on_reached_cb,  taken_path['reached'])
            task.signal_connect('completed', on_complete_cb, taken_path['completed'])

        # Execute all tasks within the Job.
        job = Job(wf)
        self.assert_(not job.is_completed(), 'Job is complete before start')
        try:
            job.complete_all()
        except:
            job.dump()
            raise

        self.assert_(job.is_completed(),
                     'complete_all() returned, but job is not complete\n'
                   + job.task_tree.get_dump())
        #job.task_tree.dump()

        assert_same_path(self, self.expected_path, taken_path['completed'])