Merge lp:~eday/burrow/backend-unittests into lp:burrow

Proposed by Eric Day
Status: Merged
Approved by: Eric Day
Approved revision: 30
Merged at revision: 29
Proposed branch: lp:~eday/burrow/backend-unittests
Merge into: lp:burrow
Diff against target: 342 lines (+180/-27)
3 files modified
burrow/backend/memory.py (+5/-10)
burrow/backend/sqlite.py (+4/-5)
test/backend/test_memory.py (+171/-12)
To merge this branch: bzr merge lp:~eday/burrow/backend-unittests
Reviewer Review Type Date Requested Status
Burrow Core Team Pending
Review via email: mp+70784@code.launchpad.net

Description of the change

Added more unit test coverage around update_messages.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'burrow/backend/memory.py'
2--- burrow/backend/memory.py 2011-08-04 23:43:09 +0000
3+++ burrow/backend/memory.py 2011-08-08 20:07:30 +0000
4@@ -75,14 +75,11 @@
5 account, queue = self.accounts.get_queue(account, queue)
6 if queue is None:
7 raise burrow.backend.NotFound()
8- if len(filters) == 0:
9- queue.messages.reset()
10- else:
11- detail = self._get_message_detail(filters)
12- for message in queue.messages.iter(filters):
13- queue.messages.delete(message.id)
14- if detail is not None:
15- yield message.detail(detail)
16+ detail = self._get_message_detail(filters)
17+ for message in queue.messages.iter(filters):
18+ queue.messages.delete(message.id)
19+ if detail is not None:
20+ yield message.detail(detail)
21 if queue.messages.count() == 0:
22 self.accounts.delete_queue(account.id, queue.id)
23
24@@ -247,8 +244,6 @@
25 return len(self.index)
26
27 def delete(self, id):
28- if id not in self.index:
29- return
30 item = self.index.pop(id)
31 if item.next is not None:
32 item.next.prev = item.prev
33
34=== modified file 'burrow/backend/sqlite.py'
35--- burrow/backend/sqlite.py 2011-08-04 23:43:09 +0000
36+++ burrow/backend/sqlite.py 2011-08-08 20:07:30 +0000
37@@ -52,6 +52,9 @@
38
39 def delete_accounts(self, filters={}):
40 if len(filters) == 0:
41+ count = self.db.execute('SELECT COUNT(*) FROM queues').fetchall()
42+ if count[0][0] == 0:
43+ raise burrow.backend.NotFound()
44 self.db.execute('DELETE FROM queues')
45 self.db.execute('DELETE FROM messages')
46 return
47@@ -234,8 +237,6 @@
48 ids.append(message[0])
49 if detail is not None:
50 yield self._message_detail(message, detail)
51- if len(ids) == 0:
52- return
53 values = (rowid,) + tuple(ids)
54 query = 'DELETE FROM messages WHERE queue=? AND name IN (%s)'
55 self.db.execute(query % ','.join('?' * len(ids)), values)
56@@ -272,8 +273,6 @@
57 message[2] = hide
58 if detail is not None:
59 yield self._message_detail(message, detail)
60- if len(ids) == 0:
61- return
62 query = 'UPDATE messages SET'
63 comma = ''
64 values = tuple()
65@@ -482,5 +481,5 @@
66 if hide > 0:
67 hide -= int(time.time())
68 if detail == 'attributes':
69- return dict(id=self.id, ttl=ttl, hide=hide)
70+ return dict(id=row[0], ttl=ttl, hide=hide)
71 return dict(id=row[0], ttl=ttl, hide=hide, body=str(row[3]))
72
73=== modified file 'test/backend/test_memory.py'
74--- test/backend/test_memory.py 2011-08-04 23:43:09 +0000
75+++ test/backend/test_memory.py 2011-08-08 20:07:30 +0000
76@@ -30,11 +30,13 @@
77 self.assertRaises(burrow.backend.NotFound, list, accounts)
78 queues = self.backend.get_queues('a')
79 self.assertRaises(burrow.backend.NotFound, list, queues)
80- messages = self.backend.get_messages('a', 'q')
81+ filters = dict(match_hidden=True)
82+ messages = self.backend.get_messages('a', 'q', filters)
83 self.assertRaises(burrow.backend.NotFound, list, messages)
84
85 def tearDown(self):
86- messages = self.backend.get_messages('a', 'q')
87+ filters = dict(match_hidden=True)
88+ messages = self.backend.get_messages('a', 'q', filters)
89 self.assertRaises(burrow.backend.NotFound, list, messages)
90 queues = self.backend.get_queues('a')
91 self.assertRaises(burrow.backend.NotFound, list, queues)
92@@ -45,6 +47,8 @@
93 self.backend.create_message('a', 'q', 'm', 'test')
94 self.assertEquals(['a'], list(self.backend.get_accounts()))
95 self.assertEquals([], list(self.backend.delete_accounts()))
96+ accounts = self.backend.delete_accounts()
97+ self.assertRaises(burrow.backend.NotFound, list, accounts)
98
99 def test_accounts_delete_detail_all(self):
100 self.backend.create_message('a', 'q', 'm', 'test')
101@@ -199,6 +203,8 @@
102 self.backend.create_message('a', 'q', 'm', 'test')
103 self.assertEquals(['q'], list(self.backend.get_queues('a')))
104 self.assertEquals([], list(self.backend.delete_queues('a')))
105+ queues = self.backend.delete_queues('a')
106+ self.assertRaises(burrow.backend.NotFound, list, queues)
107
108 def test_queues_delete_detail_all(self):
109 self.backend.create_message('a', 'q', 'm', 'test')
110@@ -354,7 +360,14 @@
111 message = dict(id='m', ttl=0, hide=0, body='test')
112 messages = list(self.backend.get_messages('a', 'q'))
113 self.assertEquals([message], messages)
114- self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
115+ attributes = dict(ttl=100, hide=200)
116+ messages = list(self.backend.update_messages('a', 'q', attributes))
117+ self.assertEquals([], messages)
118+ self.delete_messages()
119+ messages = self.backend.delete_messages('a', 'q')
120+ self.assertRaises(burrow.backend.NotFound, list, messages)
121+ messages = self.backend.update_messages('a', 'q', attributes)
122+ self.assertRaises(burrow.backend.NotFound, list, messages)
123
124 def test_messages_delete_detail_all(self):
125 self.backend.create_message('a', 'q', 'm', 'test')
126@@ -363,11 +376,24 @@
127 messages = list(self.backend.delete_messages('a', 'q', filters))
128 self.assertEquals([message], messages)
129
130+ def test_messages_delete_detail_attributes(self):
131+ self.backend.create_message('a', 'q', 'm', 'test')
132+ message = dict(id='m', ttl=0, hide=0)
133+ filters = dict(detail='attributes')
134+ messages = list(self.backend.delete_messages('a', 'q', filters))
135+ self.assertEquals([message], messages)
136+
137+ def test_messages_delete_detail_body(self):
138+ self.backend.create_message('a', 'q', 'm', 'test')
139+ filters = dict(detail='body')
140+ messages = list(self.backend.delete_messages('a', 'q', filters))
141+ self.assertEquals(['test'], messages)
142+
143 def test_messages_delete_detail_id(self):
144 self.backend.create_message('a', 'q', 'm', 'test')
145 filters = dict(detail='id')
146- queues = list(self.backend.delete_messages('a', 'q', filters))
147- self.assertEquals(['m'], queues)
148+ messages = list(self.backend.delete_messages('a', 'q', filters))
149+ self.assertEquals(['m'], messages)
150
151 def test_messages_delete_detail_none(self):
152 self.backend.create_message('a', 'q', 'm', 'test')
153@@ -430,28 +456,43 @@
154 filters = dict(detail='all')
155 messages = list(self.backend.get_messages('a', 'q', filters))
156 self.assertEquals([message], messages)
157- self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
158+ self.delete_messages()
159+
160+ def test_messages_get_detail_attributes(self):
161+ self.backend.create_message('a', 'q', 'm', 'test')
162+ message = dict(id='m', ttl=0, hide=0)
163+ filters = dict(detail='attributes')
164+ messages = list(self.backend.get_messages('a', 'q', filters))
165+ self.assertEquals([message], messages)
166+ self.delete_messages()
167+
168+ def test_messages_get_detail_body(self):
169+ self.backend.create_message('a', 'q', 'm', 'test')
170+ filters = dict(detail='body')
171+ messages = list(self.backend.get_messages('a', 'q', filters))
172+ self.assertEquals(['test'], messages)
173+ self.delete_messages()
174
175 def test_messages_get_detail_id(self):
176 self.backend.create_message('a', 'q', 'm', 'test')
177 filters = dict(detail='id')
178 messages = list(self.backend.get_messages('a', 'q', filters))
179 self.assertEquals(['m'], messages)
180- self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
181+ self.delete_messages()
182
183 def test_messages_get_detail_none(self):
184 self.backend.create_message('a', 'q', 'm', 'test')
185 filters = dict(detail='none')
186 messages = list(self.backend.get_messages('a', 'q', filters))
187 self.assertEquals([], messages)
188- self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
189+ self.delete_messages()
190
191 def test_messages_get_detail_bad(self):
192 self.backend.create_message('a', 'q', 'm', 'test')
193 filters = dict(detail='bad')
194 messages = self.backend.get_messages('a', 'q', filters)
195 self.assertRaises(burrow.backend.BadDetail, list, messages)
196- self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
197+ self.delete_messages()
198
199 def test_messages_get_marker(self):
200 self.backend.create_message('a', 'q', 'm1', 'test')
201@@ -471,7 +512,7 @@
202 filters = dict(marker='unknown')
203 messages2 = list(self.backend.get_messages('a', 'q', filters))
204 self.assertEquals(messages, messages2)
205- self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
206+ self.delete_messages()
207
208 def test_messages_get_limit(self):
209 self.backend.create_message('a', 'q', 'm1', 'test')
210@@ -491,7 +532,7 @@
211 filters = dict(limit=100)
212 messages2 = list(self.backend.get_messages('a', 'q', filters))
213 self.assertEquals(messages, messages2)
214- self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
215+ self.delete_messages()
216
217 def test_messages_get_marker_limit(self):
218 self.backend.create_message('a', 'q', 'm1', 'test')
219@@ -505,4 +546,122 @@
220 filters = dict(marker=messages[0]['id'], limit=2)
221 messages2 = list(self.backend.get_messages('a', 'q', filters))
222 self.assertEquals(messages[1:3], messages2)
223- self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
224+ self.delete_messages()
225+
226+ def test_messages_update_detail_all(self):
227+ self.backend.create_message('a', 'q', 'm', 'test')
228+ message = dict(id='m', ttl=100, hide=200, body='test')
229+ attributes = dict(ttl=100, hide=200)
230+ filters = dict(detail='all')
231+ messages = self.backend.update_messages('a', 'q', attributes, filters)
232+ self.assertEquals([message], list(messages))
233+ self.delete_messages()
234+
235+ def test_messages_update_detail_attributes(self):
236+ self.backend.create_message('a', 'q', 'm', 'test')
237+ message = dict(id='m', ttl=100, hide=200)
238+ attributes = dict(ttl=100, hide=200)
239+ filters = dict(detail='attributes')
240+ messages = self.backend.update_messages('a', 'q', attributes, filters)
241+ self.assertEquals([message], list(messages))
242+ self.delete_messages()
243+
244+ def test_messages_update_detail_body(self):
245+ self.backend.create_message('a', 'q', 'm', 'test')
246+ attributes = dict(ttl=100, hide=200)
247+ filters = dict(detail='body')
248+ messages = self.backend.update_messages('a', 'q', attributes, filters)
249+ self.assertEquals(['test'], list(messages))
250+ self.delete_messages()
251+
252+ def test_messages_update_detail_id(self):
253+ self.backend.create_message('a', 'q', 'm', 'test')
254+ attributes = dict(ttl=100, hide=200)
255+ filters = dict(detail='id')
256+ messages = self.backend.update_messages('a', 'q', attributes, filters)
257+ self.assertEquals(['m'], list(messages))
258+ self.delete_messages()
259+
260+ def test_messages_update_detail_none(self):
261+ self.backend.create_message('a', 'q', 'm', 'test')
262+ attributes = dict(ttl=100, hide=200)
263+ filters = dict(detail='none')
264+ messages = self.backend.update_messages('a', 'q', attributes, filters)
265+ self.assertEquals([], list(messages))
266+ self.delete_messages()
267+
268+ def test_messages_update_detail_bad(self):
269+ self.backend.create_message('a', 'q', 'm', 'test')
270+ attributes = dict(ttl=100, hide=200)
271+ filters = dict(detail='bad')
272+ messages = self.backend.update_messages('a', 'q', attributes, filters)
273+ self.assertRaises(burrow.backend.BadDetail, list, messages)
274+ self.delete_messages()
275+
276+ def test_messages_update_marker(self):
277+ self.backend.create_message('a', 'q', 'm1', 'test')
278+ self.backend.create_message('a', 'q', 'm2', 'test')
279+ self.backend.create_message('a', 'q', 'm3', 'test')
280+ attributes = dict(ttl=100, hide=200)
281+ filters = dict(detail='all', match_hidden=True)
282+ messages = self.backend.update_messages('a', 'q', attributes, filters)
283+ messages = list(messages)
284+ self.assertEquals(3, len(messages))
285+ filters.update(marker=messages[0]['id'])
286+ messages2 = self.backend.update_messages('a', 'q', attributes, filters)
287+ self.assertEquals(messages[1:], list(messages2))
288+ filters.update(marker=messages[1]['id'])
289+ messages2 = self.backend.update_messages('a', 'q', attributes, filters)
290+ self.assertEquals(messages[2:], list(messages2))
291+ filters.update(marker=messages[2]['id'])
292+ messages2 = self.backend.update_messages('a', 'q', attributes, filters)
293+ self.assertRaises(burrow.backend.NotFound, list, messages2)
294+ filters = dict(detail='all', marker='unknown', match_hidden=True)
295+ messages2 = self.backend.update_messages('a', 'q', attributes, filters)
296+ self.assertEquals(messages, list(messages2))
297+ self.delete_messages()
298+
299+ def test_messages_update_limit(self):
300+ self.backend.create_message('a', 'q', 'm1', 'test')
301+ self.backend.create_message('a', 'q', 'm2', 'test')
302+ self.backend.create_message('a', 'q', 'm3', 'test')
303+ attributes = dict(ttl=100, hide=200)
304+ filters = dict(detail='all', match_hidden=True)
305+ messages = self.backend.update_messages('a', 'q', attributes, filters)
306+ messages = list(messages)
307+ self.assertEquals(3, len(messages))
308+ filters.update(limit=1)
309+ messages2 = self.backend.update_messages('a', 'q', attributes, filters)
310+ self.assertEquals(messages[:1], list(messages2))
311+ filters.update(limit=2)
312+ messages2 = self.backend.update_messages('a', 'q', attributes, filters)
313+ self.assertEquals(messages[:2], list(messages2))
314+ filters.update(limit=3)
315+ messages2 = self.backend.update_messages('a', 'q', attributes, filters)
316+ self.assertEquals(messages, list(messages2))
317+ filters.update(limit=100)
318+ messages2 = self.backend.update_messages('a', 'q', attributes, filters)
319+ self.assertEquals(messages, list(messages2))
320+ self.delete_messages()
321+
322+ def test_messages_update_marker_limit(self):
323+ self.backend.create_message('a', 'q', 'm1', 'test')
324+ self.backend.create_message('a', 'q', 'm2', 'test')
325+ self.backend.create_message('a', 'q', 'm3', 'test')
326+ attributes = dict(ttl=100, hide=200)
327+ filters = dict(detail='all', match_hidden=True)
328+ messages = self.backend.update_messages('a', 'q', attributes, filters)
329+ messages = list(messages)
330+ self.assertEquals(3, len(messages))
331+ filters.update(marker=messages[1]['id'], limit=1)
332+ messages2 = self.backend.update_messages('a', 'q', attributes, filters)
333+ self.assertEquals(messages[2:3], list(messages2))
334+ filters.update(marker=messages[0]['id'], limit=2)
335+ messages2 = self.backend.update_messages('a', 'q', attributes, filters)
336+ self.assertEquals(messages[1:3], list(messages2))
337+ self.delete_messages()
338+
339+ def delete_messages(self):
340+ filters = dict(match_hidden=True)
341+ messages = list(self.backend.delete_messages('a', 'q', filters))
342+ self.assertEquals([], messages)

Subscribers

People subscribed via source and target branches