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