Skip to content

Commit

Permalink
Test error on task
Browse files Browse the repository at this point in the history
  • Loading branch information
porduna committed Aug 22, 2017
1 parent 08853cb commit 7f2164c
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 6 deletions.
51 changes: 50 additions & 1 deletion test_weblablib.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,10 @@ def test_token(self):
token2 = self.weblab.create_token()
self.assertNotEquals(token1, token2)

def test_task_not_found(self):
task = self.weblab.get_task("does.not.exist")
self.assertIsNone(task)

def test_callback_initial_url(self):
self.weblab._initial_url = None

Expand All @@ -196,6 +200,11 @@ def test_anonymous(self):
self.assertTrue(weblablib.weblab_user.is_anonymous)
self.assertFalse(weblablib.weblab_user.active)

def test_anonymous_on_active(self):
with self.app.test_client() as client:
rv = client.get('/lab/active')
self.assertIn("forbidden", self.get_text(rv))

def test_poll_url(self):
with self.app.test_client() as client:
client.get('/lab/')
Expand Down Expand Up @@ -339,7 +348,6 @@ def lab(self):

def task(self):
self.counter += 1
time.sleep(0.2)
return [ self.counter, weblablib.weblab_user.data['foo'] ]

def test_simple(self):
Expand Down Expand Up @@ -419,6 +427,9 @@ def test_simple(self):

self.status(session_id1)
self.dispose(session_id1)

rv = self.client.get('/lab/active')
self.assertEquals(rv.location, 'http://weblab.deusto.es')

self.client.get('/lab/')
self.assertFalse(weblablib.weblab_user.active)
Expand All @@ -429,6 +440,44 @@ def test_simple(self):
with self.assertRaises(NotImplementedError):
weblablib.weblab_user.data = {}

class TaskFail(BaseSessionWebLabTest):

def lab(self):
task = self.current_task.delay()
return str(task.task_id)

def task(self):
10 / 0
return -1

def test_task_fail(self):
# New user
launch_url1, session_id1 = self.new_user()

# counter is zero
self.counter = 0

# We call the relative_launch_url. It is redirected to the lab, which
# starts a new task, which establishes that counter is zero
response = self.get_text(self.client.get(launch_url1, follow_redirects=True))

task_id = response

task = self.weblab.get_task(response)
self.assertEquals(task.status, 'submitted')

with StdWrap():
self.weblab.run_tasks()

self.assertEquals(task.status, 'failed')
self.assertIsNone(task.result)
self.assertIsNotNone(task.error)
self.assertEqual(task.error['code'], 'exception')
self.assertIn('zero', task.error['message'])
self.assertEqual(task.error['class'], 'ZeroDivisionError')



class CLITest(BaseWebLabTest):

def test_cli_flow(self):
Expand Down
7 changes: 2 additions & 5 deletions weblablib.py
Original file line number Diff line number Diff line change
Expand Up @@ -1305,12 +1305,9 @@ def find_expired_sessions(self):

return expired_sessions

def session_exists(self, session_id, retrieve_expired=True):
def session_exists(self, session_id):
user = self.get_user(session_id)
if retrieve_expired:
return not user.is_anonymous

return user.active
return not user.is_anonymous

def poll(self, session_id):
key = '{}:weblab:active:{}'.format(self.key_base, session_id)
Expand Down

0 comments on commit 7f2164c

Please sign in to comment.