def test_start_task_sets_started_timestamp(): waterbot_db.water_zone(conn, 6, 60) before = math.floor(time.time()) waterbot_db.task_start(conn, 1) after = math.floor(time.time()) task = waterbot_db.task(conn, 1)[0] assert(task["ts_started"] >= task["ts_submitted"]) assert(task["ts_started"] >= before) assert(task["ts_started"] <= after)
def test_active_tasks_includes_started_task(): waterbot_db.water_zone(conn, 6, 60) waterbot_db.water_zone(conn, 7, 120) waterbot_db.water_zone(conn, 8, 180) waterbot_db.task_start(conn, 1) pending_tasks = waterbot_db.tasks_active(conn) assert(len(pending_tasks) == 1) assert(pending_tasks[0]["zone_id"] == 6) assert(pending_tasks[0]["seconds"] == 60)
def test_pending_tasks_does_not_include_started_task(): waterbot_db.water_zone(conn, 6, 60) waterbot_db.water_zone(conn, 7, 120) waterbot_db.water_zone(conn, 8, 180) waterbot_db.task_start(conn, 1) pending_tasks = waterbot_db.tasks_pending(conn) assert(len(pending_tasks) == 2) assert(pending_tasks[0]["zone_id"] == 7) assert(pending_tasks[0]["seconds"] == 120) assert(pending_tasks[1]["zone_id"] == 8) assert(pending_tasks[1]["seconds"] == 180)
def test_tasks_includes_started_and_terminated_tasks(): waterbot_db.water_zone(conn, 6, 60) waterbot_db.water_zone(conn, 7, 120) waterbot_db.water_zone(conn, 8, 180) waterbot_db.task_start(conn, 1) waterbot_db.task_terminate(conn, 2) pending_tasks = waterbot_db.tasks(conn) assert(len(pending_tasks) == 3) assert(pending_tasks[0]["zone_id"] == 6) assert(pending_tasks[1]["zone_id"] == 7) assert(pending_tasks[2]["zone_id"] == 8)
def test_start_task_already_terminated_no_effect(): waterbot_db.water_zone(conn, 6, 60) waterbot_db.task_terminate(conn, 1) assert(0 == waterbot_db.task_start(conn, 1))
def start_task(self, task_id): self.task(task_id) if 1 != waterbot_db.task_start(self.conn, task_id): raise TaskAlreadyStarted(task_id) return self.task(task_id)