예제 #1
0
    def test_execute_collective(self):
        from augias.views import execute
        task = self._get_task()
        request = DummyRequest({'length': '15', 'executor': ''})

        result = execute(task, request)

        self.assertEqual(result.code, 302)
        execution = DBSession.query(Execution).one()
        self.assertEqual(execution.executor, None)
        self.assertEqual(execution.length, 15)
        request.flash_success.assert_called_once_with('Task executed')
예제 #2
0
    def test_execute_with_colon_duration(self):
        from augias.views import execute
        task = self._get_task()
        user = User(email='*****@*****.**')
        DBSession.add(user)
        request = DummyRequest({'length': '1:30:41', 'executor': user.email})
        request.flash_success = create_autospec(lambda x: None)

        result = execute(task, request)

        self.assertEqual(result.code, 302)
        execution = DBSession.query(Execution).one()
        self.assertEqual(execution.length, 91)
예제 #3
0
    def test_execute_without_duration(self):
        from augias.views import execute
        task = self._get_task()
        user = User(email='*****@*****.**')
        DBSession.add(user)
        request = DummyRequest({'length': '', 'executor': user.email})

        result = execute(task, request)

        self.assertEqual(result.code, 302)
        execution = DBSession.query(Execution).one()
        self.assertEqual(execution.executor, user)
        self.assertEqual(execution.length, None)
        request.flash_success.assert_called_once_with('Task executed')
예제 #4
0
def main(argv=sys.argv):
    config_uri = argv[1]
    setup_logging(config_uri)
    settings = get_appsettings(config_uri)
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)
    import augias.tests  # for the null cache backend
    from augias.utils import cache
    cache.configure('null')
    with transaction.manager:
        user = get_user('*****@*****.**')
        for t in DBSession.query(Task).all():
            if random.random() < 0.2:
                t.last_execution = None
            else:
                exec_time = datetime.datetime.now() - datetime.timedelta(days=t.periodicity * random.random() * 1.5)
                t.execute(user, 10, exec_time)
예제 #5
0
    def test_new_task(self):
        from augias.views import new_task
        user = User(email='*****@*****.**')
        notebook = Notebook(users=[user], name='some notebook')
        DBSession.add_all([user, notebook])
        request = DummyRequest(dict(name='Task name',
                                    periodicity=12))

        result = new_task(notebook, request)

        self.assertEqual(result.code, 302)
        task = DBSession.query(Task).one()
        self.assertEqual(task.name, 'Task name')
        self.assertEqual(task.periodicity, 12)
        self.assertEqual(task.notebook, notebook)
        self.assertEqual(len(task.executions), 0)
        self.assertEqual(task.last_execution, None)
예제 #6
0
파일: utils.py 프로젝트: madjar/augias-old
def report_for_range(notebook, begin, end):
    from augias.models import DBSession, Execution, Task
    executions = (DBSession.query(Execution)
                  .filter(Execution.time.between(begin, end))
                  .join('task').filter(Task.notebook==notebook)).all()

    total = ExecutionTime()
    by_person = defaultdict(ExecutionTime)
    by_task = defaultdict(lambda: defaultdict(ExecutionTime))

    for e in executions:
        total.add(e)
        by_person[e.executor].add(e)
        by_task[e.task][e.executor].add(e)
        by_task[e.task]['total'].add(e)

    def sorter(item):
        task, executions = item
        return (-executions['total'].total, task.name)

    by_task = sorted(by_task.items(), key=sorter)

    return {'total': total, 'by_task': by_task, 'by_person': by_person}
예제 #7
0
파일: models.py 프로젝트: madjar/augias-old
def step(context, name):
    notebook = DBSession.query(Notebook).one()
    with transaction.manager:
        task = Task(name=name, periodicity=42, notebook=notebook)
        DBSession.add(task)
    context.last['task'] = task