Beispiel #1
0
 def setUp(self):
     self.reader     = OpenWfeXmlReader()
     self.taken_path = []
Beispiel #2
0
class OpenWfeXmlReaderTest(unittest.TestCase):
    def setUp(self):
        self.reader     = OpenWfeXmlReader()
        self.taken_path = []


    def on_reached_cb(self, job, instance):
        on_reached_cb(job, instance, [])
        instance.set_attribute(test_attribute1 = 'false')
        instance.set_attribute(test_attribute2 = 'true')
        return True


    def testParseString(self):
        self.assertRaises(ExpatError,
                          self.reader.parse_string,
                          '')
        self.reader.parse_string('<xml></xml>')


    def testParseFile(self):
        # File not found.
        self.assertRaises(IOError,
                          self.reader.parse_file,
                          'foo')

        # 0 byte sized file.
        self.assertRaises(ExpatError,
                          self.reader.parse_file,
                          os.path.join(os.path.dirname(__file__), 'xml/empty1.xml'))

        # File containing only "<xml></xml>".
        self.reader.parse_file(os.path.join(os.path.dirname(__file__), 'xml/empty2.xml'))

        # Read a complete workflow.
        self.reader.parse_file(os.path.join(os.path.dirname(__file__), 'xml/openwfe/workflow1.xml'))


    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)