Ejemplo n.º 1
0
    def testGetOrderProgressFromId(self):
        self.testInstall()

        order = Order('fooservice')
        self.db.save_order(order)
        id = order.get_id()
        self.assertEqual(self.db.get_order_progress_from_id(id), .0)

        order.close()
        self.db.save_order(order)
        self.assertEqual(self.db.get_order_progress_from_id(id), 1.0)

        task1 = Task(order.id, 'my test task')
        self.db.save_task(task1)
        self.assertEqual(self.db.get_order_progress_from_id(id), .0)

        task2 = Task(order.id, 'another test task')
        self.db.save_task(task2)
        self.assertEqual(self.db.get_order_progress_from_id(id), .0)

        task1.set_progress(.5)
        self.db.save_task(task1)
        self.assertEqual(self.db.get_order_progress_from_id(id), .25)
        task2.set_progress(.5)
        self.db.save_task(task2)
        self.assertEqual(self.db.get_order_progress_from_id(id), .5)
        task1.set_progress(1.0)
        self.db.save_task(task1)
        self.assertEqual(self.db.get_order_progress_from_id(id), .75)
        task2.set_progress(1.0)
        self.db.save_task(task2)
        self.assertEqual(self.db.get_order_progress_from_id(id), 1.0)
Ejemplo n.º 2
0
    def testGetTask(self):
        self.testInstall()

        order = Order('fooservice')
        self.db.save_order(order)

        task1 = Task(order.id, 'my test task')
        self.db.save_task(task1)
        loaded_task = self.db.get_task()
        self.assertEqual(task1.id, loaded_task.id)

        task2 = Task(order.id, 'another test task')
        self.db.save_task(task2)
        self.assertRaises(IndexError, self.db.get_task)
Ejemplo n.º 3
0
    def testSaveTask(self):
        self.testInstall()

        order = Order('fooservice')
        self.db.save_order(order)

        task = Task(order.id, 'my test task')
        self.assert_(task.id is None)
        self.db.save_task(task)
        self.assert_(task.id is not None)
Ejemplo n.º 4
0
    def testGetTasks(self):
        self.testInstall()

        order = Order('fooservice')
        self.db.save_order(order)

        task1 = Task(order.id, 'my test task')
        task2 = Task(order.id, 'another test task')
        self.db.save_task(task1)
        self.db.save_task(task2)

        id_list1 = sorted([task1.id, task2.id])
        id_list2 = sorted([task.id for task in self.db.get_tasks()])
        self.assertEqual(id_list1, id_list2)

        tasks = self.db.get_tasks(order_id=order.id)
        id_list2 = sorted([task.id for task in tasks])
        self.assertEqual(id_list1, id_list2)

        id_list2 = [task.id for task in self.db.get_tasks(order_id=2)]
        self.assertEqual([], id_list2)
Ejemplo n.º 5
0
    def get_task_from_id(self, id):
        """
        Returns the task with the given id.

        @type  id: int
        @param id: The id of the task.
        @rtype:  Task
        @return: The task with the given id.
        """
        args   = 'id=%d' % id
        url    = self.address + '/task/get/?' + args
        result = self.opener.open(url)
        if result.getcode() != 200:
            raise Exception(response)
        return Task.from_xml(result.read())
Ejemplo n.º 6
0
    def get_task_from_id(self, id):
        """
        Returns the task with the given id.

        @type  id: int
        @param id: The id of the task.
        @rtype:  Task
        @return: The task with the given id.
        """
        args = 'id=%d' % id
        url = self.address + '/task/get/?' + args
        result = self.opener.open(url)
        if result.getcode() != 200:
            raise Exception(response)
        return Task.from_xml(result.read())
Ejemplo n.º 7
0
    def get_task_list(self, order_id, offset = 0, limit = 0):
        """
        Returns a list of currently running orders.

        @type  offset: int
        @param offset: The number of orders to skip.
        @type  limit: int
        @param limit: The maximum number of orders to return.
        @rtype:  list[Order]
        @return: A list of orders.
        """
        args   = 'order_id=%d&offset=%d&limit=%d' % (order_id, offset, limit)
        url    = self.address + '/task/list/?' + args
        result = self.opener.open(url)
        if result.getcode() != 200:
            raise Exception(response)
        xml = etree.parse(result)
        return [Task.from_etree(n) for n in xml.iterfind('task')]
Ejemplo n.º 8
0
    def get_task_list(self, order_id, offset=0, limit=0):
        """
        Returns a list of currently running orders.

        @type  offset: int
        @param offset: The number of orders to skip.
        @type  limit: int
        @param limit: The maximum number of orders to return.
        @rtype:  list[Order]
        @return: A list of orders.
        """
        args = 'order_id=%d&offset=%d&limit=%d' % (order_id, offset, limit)
        url = self.address + '/task/list/?' + args
        result = self.opener.open(url)
        if result.getcode() != 200:
            raise Exception(response)
        xml = etree.parse(result)
        return [Task.from_etree(n) for n in xml.iterfind('task')]
Ejemplo n.º 9
0
    def testAddOrder(self):
        self.testInstall()

        order1 = Order('fooservice')
        self.assertEqual(order1.get_created_by(), getuser())
        self.assertEqual(order1.get_description(), '')
        self.assertEqual(order1.get_progress(), .0)
        order1.created_by = 'this test'
        order1.set_description('my description')
        self.assertEqual(order1.get_created_by(), 'this test')
        self.assertEqual(order1.get_description(), 'my description')

        # Save the order.
        self.assert_(order1.get_id() is None)
        self.db.add_order(order1)
        order_id = order1.get_id()
        self.assert_(order_id is not None)

        def assert_progress(value):
            progress = self.db.get_order_progress_from_id(order_id)
            theorder = self.db.get_order(id=order_id)
            self.assertEqual(progress, value)
            self.assertEqual(theorder.get_progress(), value)

        # Check that the order is stored.
        order = self.db.get_order(id=order_id)
        self.assertEqual(order.get_id(), order_id)
        self.assertEqual(order.get_created_by(), 'this test')
        self.assertEqual(order.get_closed_timestamp(), None)
        self.assertEqual(order.get_description(), 'my description')
        assert_progress(.0)

        # Check that an order that has no tasks show progress 100% when
        # it is closed.
        order.close()
        self.db.save_order(order)
        assert_progress(1.0)

        # Add some sub-tasks.
        task1 = Task(order.id, 'my test task')
        self.db.save_task(task1)
        assert_progress(.0)

        task2 = Task(order.id, 'another test task')
        self.db.save_task(task2)
        assert_progress(.0)

        # Change the progress, re-check.
        task1.set_progress(.5)
        self.db.save_task(task1)
        assert_progress(.25)

        task2.set_progress(.5)
        self.db.save_task(task2)
        assert_progress(.5)

        task1.set_progress(1.0)
        self.db.save_task(task1)
        assert_progress(.75)

        task2.set_progress(1.0)
        self.db.save_task(task2)
        assert_progress(1.0)
Ejemplo n.º 10
0
    def testGetOrderProgressFromId(self):
        self.testInstall()

        order = Order('fooservice')
        self.db.save_order(order)
        id = order.get_id()
        self.assertEqual(self.db.get_order_progress_from_id(id), .0)

        order.close()
        self.db.save_order(order)
        self.assertEqual(self.db.get_order_progress_from_id(id), 1.0)

        task1 = Task(order.id, 'my test task')
        self.db.save_task(task1)
        self.assertEqual(self.db.get_order_progress_from_id(id), .0)

        task2 = Task(order.id, 'another test task')
        self.db.save_task(task2)
        self.assertEqual(self.db.get_order_progress_from_id(id), .0)

        task1.set_progress(.5)
        self.db.save_task(task1)
        self.assertEqual(self.db.get_order_progress_from_id(id), .25)
        task2.set_progress(.5)
        self.db.save_task(task2)
        self.assertEqual(self.db.get_order_progress_from_id(id), .5)
        task1.set_progress(1.0)
        self.db.save_task(task1)
        self.assertEqual(self.db.get_order_progress_from_id(id), .75)
        task2.set_progress(1.0)
        self.db.save_task(task2)
        self.assertEqual(self.db.get_order_progress_from_id(id), 1.0)
Ejemplo n.º 11
0
 def __get_task_from_row(self, row):
     assert row is not None
     tbl_t          = self._table_map['task']
     task           = Task(row[tbl_t.c.order_id], row[tbl_t.c.name])
     task.id        = row[tbl_t.c.id]
     task.job_id    = row[tbl_t.c.job_id]
     task.status    = row[tbl_t.c.status]
     task.progress  = row[tbl_t.c.progress]
     task.started   = row[tbl_t.c.started]
     task.closed    = row[tbl_t.c.closed]
     task.logfile   = row[tbl_t.c.logfile]
     task.tracefile = row[tbl_t.c.tracefile]
     task.vars      = row[tbl_t.c.vars]
     task.untouch()
     return task
Ejemplo n.º 12
0
    def testAddOrder(self):
        self.testInstall()

        order1 = Order('fooservice')
        self.assertEqual(order1.get_created_by(), getuser())
        self.assertEqual(order1.get_description(), '')
        self.assertEqual(order1.get_progress(), .0)
        order1.created_by = 'this test'
        order1.set_description('my description')
        self.assertEqual(order1.get_created_by(), 'this test')
        self.assertEqual(order1.get_description(), 'my description')

        # Save the order.
        self.assertTrue(order1.get_id() is None)
        self.db.add_order(order1)
        order_id = order1.get_id()
        self.assertTrue(order_id is not None)

        def assert_progress(value):
            progress = self.db.get_order_progress_from_id(order_id)
            theorder = self.db.get_order(id = order_id)
            self.assertEqual(progress, value)
            self.assertEqual(theorder.get_progress(), value)

        # Check that the order is stored.
        order = self.db.get_order(id = order_id)
        self.assertEqual(order.get_id(), order_id)
        self.assertEqual(order.get_created_by(), 'this test')
        self.assertEqual(order.get_closed_timestamp(), None)
        self.assertEqual(order.get_description(), 'my description')
        assert_progress(.0)

        # Check that an order that has no tasks show progress 100% when
        # it is closed.
        order.close()
        self.db.save_order(order)
        assert_progress(1.0)

        # Add some sub-tasks.
        task1 = Task(order.id, 'my test task')
        self.db.save_task(task1)
        assert_progress(.0)

        task2 = Task(order.id, 'another test task')
        self.db.save_task(task2)
        assert_progress(.0)

        # Change the progress, re-check.
        task1.set_progress(.5)
        self.db.save_task(task1)
        assert_progress(.25)

        task2.set_progress(.5)
        self.db.save_task(task2)
        assert_progress(.5)

        task1.set_progress(1.0)
        self.db.save_task(task1)
        assert_progress(.75)

        task2.set_progress(1.0)
        self.db.save_task(task2)
        assert_progress(1.0)
Ejemplo n.º 13
0
 def __get_task_from_row(self, row):
     assert row is not None
     tbl_t = self._table_map['task']
     task = Task(row[tbl_t.c.order_id], row[tbl_t.c.name])
     task.id = row[tbl_t.c.id]
     task.job_id = row[tbl_t.c.job_id]
     task.status = row[tbl_t.c.status]
     task.progress = row[tbl_t.c.progress]
     task.started = row[tbl_t.c.started]
     task.closed = row[tbl_t.c.closed]
     task.logfile = row[tbl_t.c.logfile]
     task.tracefile = row[tbl_t.c.tracefile]
     task.vars = row[tbl_t.c.vars]
     task.untouch()
     return task