##// END OF EJS Templates
Add tests and fix some issues...
Thomas Kluyver -
Show More
@@ -189,7 +189,10 b' class SessionManager(LoggingConfigurable):'
189 """Takes sqlite database session row and turns it into a dictionary"""
189 """Takes sqlite database session row and turns it into a dictionary"""
190 if row['kernel_id'] not in self.kernel_manager:
190 if row['kernel_id'] not in self.kernel_manager:
191 # The kernel was killed or died without deleting the session.
191 # The kernel was killed or died without deleting the session.
192 self.delete_session(row['session_id'])
192 # We can't use delete_session here because that tries to find
193 # and shut down the kernel.
194 self.cursor.execute("DELETE FROM session WHERE session_id=?",
195 (row['session_id'],))
193 raise KeyError
196 raise KeyError
194
197
195 model = {
198 model = {
@@ -207,7 +210,9 b' class SessionManager(LoggingConfigurable):'
207 the session database"""
210 the session database"""
208 c = self.cursor.execute("SELECT * FROM session")
211 c = self.cursor.execute("SELECT * FROM session")
209 result = []
212 result = []
210 for row in c:
213 # We need to use fetchall() here, because row_to_model can delete rows,
214 # which messes up the cursor if we're iterating over rows.
215 for row in c.fetchall():
211 try:
216 try:
212 result.append(self.row_to_model(row))
217 result.append(self.row_to_model(row))
213 except KeyError:
218 except KeyError:
@@ -47,6 +47,17 b' class TestSessionManager(TestCase):'
47 kernel_name='foo')['id']
47 kernel_name='foo')['id']
48 self.assertRaises(TypeError, sm.get_session, bad_id=session_id) # Bad keyword
48 self.assertRaises(TypeError, sm.get_session, bad_id=session_id) # Bad keyword
49
49
50 def test_get_session_dead_kernel(self):
51 sm = SessionManager(kernel_manager=DummyMKM())
52 session = sm.create_session(name='test1.ipynb', path='/path/to/1/', kernel_name='python')
53 # kill the kernel
54 sm.kernel_manager.shutdown_kernel(session['kernel']['id'])
55 with self.assertRaises(KeyError):
56 sm.get_session(session_id=session['id'])
57 # no sessions left
58 listed = sm.list_sessions()
59 self.assertEqual(listed, [])
60
50 def test_list_sessions(self):
61 def test_list_sessions(self):
51 sm = SessionManager(kernel_manager=DummyMKM())
62 sm = SessionManager(kernel_manager=DummyMKM())
52 sessions = [
63 sessions = [
@@ -63,6 +74,30 b' class TestSessionManager(TestCase):'
63 'path': u'/path/to/3/'}, 'kernel':{'id':u'C', 'name':'python'}}]
74 'path': u'/path/to/3/'}, 'kernel':{'id':u'C', 'name':'python'}}]
64 self.assertEqual(sessions, expected)
75 self.assertEqual(sessions, expected)
65
76
77 def test_list_sessions_dead_kernel(self):
78 sm = SessionManager(kernel_manager=DummyMKM())
79 sessions = [
80 sm.create_session(name='test1.ipynb', path='/path/to/1/', kernel_name='python'),
81 sm.create_session(name='test2.ipynb', path='/path/to/2/', kernel_name='python'),
82 ]
83 # kill one of the kernels
84 sm.kernel_manager.shutdown_kernel(sessions[0]['kernel']['id'])
85 listed = sm.list_sessions()
86 expected = [
87 {
88 'id': sessions[1]['id'],
89 'notebook': {
90 'name': u'test2.ipynb',
91 'path': u'/path/to/2/',
92 },
93 'kernel': {
94 'id': u'B',
95 'name':'python',
96 }
97 }
98 ]
99 self.assertEqual(listed, expected)
100
66 def test_update_session(self):
101 def test_update_session(self):
67 sm = SessionManager(kernel_manager=DummyMKM())
102 sm = SessionManager(kernel_manager=DummyMKM())
68 session_id = sm.create_session(name='test.ipynb', path='/path/to/',
103 session_id = sm.create_session(name='test.ipynb', path='/path/to/',
General Comments 0
You need to be logged in to leave comments. Login now