Merge lp:~eday/burrow/backend-unittests into lp:burrow
- backend-unittests
- Merge into trunk
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 |
Related bugs: | |
Related blueprints: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Burrow Core Team | Pending | ||
Review via email: mp+70784@code.launchpad.net |
Commit message
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) |