Merge lp:~eday/burrow/doc-updates into lp:burrow

Proposed by Eric Day
Status: Merged
Approved by: Eric Day
Approved revision: 34
Merged at revision: 34
Proposed branch: lp:~eday/burrow/doc-updates
Merge into: lp:burrow
Diff against target: 2159 lines (+1109/-943)
6 files modified
.pylintrc (+5/-0)
test/__init__.py (+15/-0)
test/backend/__init__.py (+963/-0)
test/backend/test_http.py (+50/-24)
test/backend/test_memory.py (+27/-912)
test/backend/test_sqlite.py (+49/-7)
To merge this branch: bzr merge lp:~eday/burrow/doc-updates
Reviewer Review Type Date Requested Status
Burrow Core Team Pending
Review via email: mp+71777@code.launchpad.net

Description of the change

Test case cleanup, moved backend base test cases to test.backend (out of memory test).

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
=== modified file '.pylintrc'
--- .pylintrc 2011-04-20 05:14:30 +0000
+++ .pylintrc 2011-08-16 21:02:23 +0000
@@ -1,5 +1,10 @@
1[Basic]
2method-rgx=([a-z_][a-z0-9_]{2,30}$)|setUp|tearDown
3no-docstring-rgx=(__.*__)|(test_.*)
4
1[Design]5[Design]
2min-public-methods=06min-public-methods=0
7max-public-methods=80
38
4[Messages Control]9[Messages Control]
5# W0142: Allow use of *args and **kwargs10# W0142: Allow use of *args and **kwargs
611
=== modified file 'test/__init__.py'
--- test/__init__.py 2011-03-17 23:42:41 +0000
+++ test/__init__.py 2011-08-16 21:02:23 +0000
@@ -0,0 +1,15 @@
1# Copyright (C) 2011 OpenStack LLC.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15'''Unittests for burrow.'''
016
=== modified file 'test/backend/__init__.py'
--- test/backend/__init__.py 2011-06-10 21:36:49 +0000
+++ test/backend/__init__.py 2011-08-16 21:02:23 +0000
@@ -0,0 +1,963 @@
1# Copyright (C) 2011 OpenStack LLC.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15'''Unittests for burrow backends.'''
16
17import time
18import unittest
19
20import eventlet
21eventlet.monkey_patch(socket=True)
22
23import burrow.backend
24
25
26class Base(unittest.TestCase):
27 '''Base test case.'''
28
29 def __init__(self, *args, **kwargs):
30 super(Base, self).__init__(*args, **kwargs)
31 self.backend = None
32 self.success = False
33
34 def setUp(self):
35 self.check_empty()
36
37 def tearDown(self):
38 self.check_empty()
39
40 def check_empty(self):
41 '''Ensure the backend is empty before, used before and after
42 each test.'''
43 accounts = self.backend.get_accounts()
44 self.assertRaises(burrow.backend.NotFound, list, accounts)
45 queues = self.backend.get_queues('a')
46 self.assertRaises(burrow.backend.NotFound, list, queues)
47 filters = dict(match_hidden=True)
48 messages = self.backend.get_messages('a', 'q', filters)
49 self.assertRaises(burrow.backend.NotFound, list, messages)
50
51 def delete_messages(self):
52 '''Delete messages, including those that are hidden. Use
53 after tests that don't need to delete.'''
54 filters = dict(match_hidden=True)
55 messages = list(self.backend.delete_messages('a', 'q', filters))
56 self.assertEquals([], messages)
57
58 def get_messages(self):
59 '''Get messages and ensure it is correct. Used for concurrent
60 tests as an eventlet thread.'''
61 message = dict(id='m', ttl=0, hide=0, body='test')
62 filters = dict(wait=2)
63 messages = list(self.backend.get_messages('a', 'q', filters))
64 self.assertEquals([message], messages)
65 self.success = True
66
67
68class TestAccounts(Base):
69 '''Test case for accounts.'''
70
71 def test_basic(self):
72 self.backend.create_message('a', 'q', 'm', 'test')
73 self.assertEquals(['a'], list(self.backend.get_accounts()))
74 self.assertEquals([], list(self.backend.delete_accounts()))
75 accounts = self.backend.delete_accounts()
76 self.assertRaises(burrow.backend.NotFound, list, accounts)
77
78 def test_large(self):
79 for name in xrange(0, 1000):
80 name = str(name)
81 self.backend.create_message(name, name, name, name)
82 filters = dict(marker='unknown')
83 self.assertEquals([], list(self.backend.delete_accounts(filters)))
84
85 def test_delete_detail_all(self):
86 self.backend.create_message('a', 'q', 'm', 'test')
87 filters = dict(detail='all')
88 accounts = list(self.backend.delete_accounts(filters))
89 self.assertEquals([dict(id='a')], accounts)
90
91 def test_delete_detail_id(self):
92 self.backend.create_message('a', 'q', 'm', 'test')
93 filters = dict(detail='id')
94 accounts = list(self.backend.delete_accounts(filters))
95 self.assertEquals(['a'], accounts)
96
97 def test_delete_detail_none(self):
98 self.backend.create_message('a', 'q', 'm', 'test')
99 filters = dict(detail='none')
100 accounts = list(self.backend.delete_accounts(filters))
101 self.assertEquals([], accounts)
102
103 def test_delete_detail_bad(self):
104 self.backend.create_message('a', 'q', 'm', 'test')
105 filters = dict(detail='bad')
106 accounts = self.backend.delete_accounts(filters)
107 self.assertRaises(burrow.backend.InvalidArguments, list, accounts)
108 self.assertEquals([], list(self.backend.delete_accounts()))
109
110 def test_delete_marker(self):
111 self.backend.create_message('a1', 'q', 'm', 'test')
112 self.backend.create_message('a2', 'q', 'm', 'test')
113 self.backend.create_message('a3', 'q', 'm', 'test')
114 accounts = list(self.backend.get_accounts())
115 self.assertEquals(3, len(accounts))
116 filters = dict(detail='id', marker=accounts[0])
117 accounts2 = list(self.backend.delete_accounts(filters))
118 self.assertEquals(accounts[1:], accounts2)
119 accounts2 = list(self.backend.get_accounts())
120 self.assertEquals(accounts[:1], accounts2)
121 filters = dict(detail='id', marker='unknown')
122 accounts2 = list(self.backend.delete_accounts(filters))
123 self.assertEquals(accounts[:1], accounts2)
124
125 def test_delete_limit(self):
126 self.backend.create_message('a1', 'q', 'm', 'test')
127 self.backend.create_message('a2', 'q', 'm', 'test')
128 self.backend.create_message('a3', 'q', 'm', 'test')
129 accounts = list(self.backend.get_accounts())
130 self.assertEquals(3, len(accounts))
131 filters = dict(detail='id', limit=1)
132 accounts2 = list(self.backend.delete_accounts(filters))
133 self.assertEquals(accounts[:1], accounts2)
134 filters = dict(detail='id', limit=2)
135 accounts2 = list(self.backend.delete_accounts(filters))
136 self.assertEquals(accounts[1:3], accounts2)
137
138 def test_delete_marker_limit(self):
139 self.backend.create_message('a1', 'q', 'm', 'test')
140 self.backend.create_message('a2', 'q', 'm', 'test')
141 self.backend.create_message('a3', 'q', 'm', 'test')
142 accounts = list(self.backend.get_accounts())
143 self.assertEquals(3, len(accounts))
144 filters = dict(detail='id', marker=accounts[1], limit=1)
145 accounts2 = list(self.backend.delete_accounts(filters))
146 self.assertEquals(accounts[2:3], accounts2)
147 filters = dict(detail='id', marker=accounts[0], limit=2)
148 accounts2 = list(self.backend.delete_accounts(filters))
149 self.assertEquals(accounts[1:2], accounts2)
150 self.assertEquals([], list(self.backend.delete_accounts()))
151
152 def test_get_detail_all(self):
153 self.backend.create_message('a', 'q', 'm', 'test')
154 filters = dict(detail='all')
155 accounts = list(self.backend.get_accounts(filters))
156 self.assertEquals([dict(id='a')], accounts)
157 self.assertEquals([], list(self.backend.delete_accounts()))
158
159 def test_get_detail_id(self):
160 self.backend.create_message('a', 'q', 'm', 'test')
161 filters = dict(detail='id')
162 accounts = list(self.backend.get_accounts(filters))
163 self.assertEquals(['a'], accounts)
164 self.assertEquals([], list(self.backend.delete_accounts()))
165
166 def test_get_detail_none(self):
167 self.backend.create_message('a', 'q', 'm', 'test')
168 filters = dict(detail='none')
169 accounts = list(self.backend.get_accounts(filters))
170 self.assertEquals([], accounts)
171 self.assertEquals([], list(self.backend.delete_accounts()))
172
173 def test_get_detail_bad(self):
174 self.backend.create_message('a', 'q', 'm', 'test')
175 filters = dict(detail='bad')
176 accounts = self.backend.get_accounts(filters)
177 self.assertRaises(burrow.backend.InvalidArguments, list, accounts)
178 self.assertEquals([], list(self.backend.delete_accounts()))
179
180 def test_get_marker(self):
181 self.backend.create_message('a1', 'q', 'm', 'test')
182 self.backend.create_message('a2', 'q', 'm', 'test')
183 self.backend.create_message('a3', 'q', 'm', 'test')
184 accounts = list(self.backend.get_accounts())
185 self.assertEquals(3, len(accounts))
186 filters = dict(marker=accounts[0])
187 accounts2 = list(self.backend.get_accounts(filters))
188 self.assertEquals(accounts[1:], accounts2)
189 filters = dict(marker=accounts[1])
190 accounts2 = list(self.backend.get_accounts(filters))
191 self.assertEquals(accounts[2:], accounts2)
192 filters = dict(marker=accounts[2])
193 accounts2 = self.backend.get_accounts(filters)
194 self.assertRaises(burrow.backend.NotFound, list, accounts2)
195 filters = dict(marker='unknown')
196 accounts2 = list(self.backend.get_accounts(filters))
197 self.assertEquals(accounts, accounts2)
198 self.assertEquals([], list(self.backend.delete_accounts()))
199
200 def test_get_limit(self):
201 self.backend.create_message('a1', 'q', 'm', 'test')
202 self.backend.create_message('a2', 'q', 'm', 'test')
203 self.backend.create_message('a3', 'q', 'm', 'test')
204 accounts = list(self.backend.get_accounts())
205 self.assertEquals(3, len(accounts))
206 filters = dict(limit=1)
207 accounts2 = list(self.backend.get_accounts(filters))
208 self.assertEquals(accounts[:1], accounts2)
209 filters = dict(limit=2)
210 accounts2 = list(self.backend.get_accounts(filters))
211 self.assertEquals(accounts[:2], accounts2)
212 filters = dict(limit=3)
213 accounts2 = list(self.backend.get_accounts(filters))
214 self.assertEquals(accounts, accounts2)
215 filters = dict(limit=100)
216 accounts2 = list(self.backend.get_accounts(filters))
217 self.assertEquals(accounts, accounts2)
218 self.assertEquals([], list(self.backend.delete_accounts()))
219
220 def test_get_marker_limit(self):
221 self.backend.create_message('a1', 'q', 'm', 'test')
222 self.backend.create_message('a2', 'q', 'm', 'test')
223 self.backend.create_message('a3', 'q', 'm', 'test')
224 accounts = list(self.backend.get_accounts())
225 self.assertEquals(3, len(accounts))
226 filters = dict(marker=accounts[1], limit=1)
227 accounts2 = list(self.backend.get_accounts(filters))
228 self.assertEquals(accounts[2:3], accounts2)
229 filters = dict(marker=accounts[0], limit=2)
230 accounts2 = list(self.backend.get_accounts(filters))
231 self.assertEquals(accounts[1:3], accounts2)
232 self.assertEquals([], list(self.backend.delete_accounts()))
233
234
235class TestQueues(Base):
236 '''Test case for queues.'''
237
238 def test_basic(self):
239 self.backend.create_message('a', 'q', 'm', 'test')
240 self.assertEquals(['q'], list(self.backend.get_queues('a')))
241 self.assertEquals([], list(self.backend.delete_queues('a')))
242 queues = self.backend.delete_queues('a')
243 self.assertRaises(burrow.backend.NotFound, list, queues)
244
245 def test_large(self):
246 for name in xrange(0, 1000):
247 name = str(name)
248 self.backend.create_message('a', name, name, name)
249 filters = dict(marker='unknown')
250 self.assertEquals([], list(self.backend.delete_queues('a', filters)))
251
252 def test_delete_detail_all(self):
253 self.backend.create_message('a', 'q', 'm', 'test')
254 filters = dict(detail='all')
255 queues = list(self.backend.delete_queues('a', filters))
256 self.assertEquals([dict(id='q')], queues)
257
258 def test_delete_detail_id(self):
259 self.backend.create_message('a', 'q', 'm', 'test')
260 filters = dict(detail='id')
261 queues = list(self.backend.delete_queues('a', filters))
262 self.assertEquals(['q'], queues)
263
264 def test_delete_detail_none(self):
265 self.backend.create_message('a', 'q', 'm', 'test')
266 filters = dict(detail='none')
267 queues = list(self.backend.delete_queues('a', filters))
268 self.assertEquals([], queues)
269
270 def test_delete_detail_bad(self):
271 self.backend.create_message('a', 'q', 'm', 'test')
272 filters = dict(detail='bad')
273 queues = self.backend.delete_queues('a', filters)
274 self.assertRaises(burrow.backend.InvalidArguments, list, queues)
275 self.assertEquals([], list(self.backend.delete_queues('a')))
276
277 def test_delete_marker(self):
278 self.backend.create_message('a', 'q1', 'm', 'test')
279 self.backend.create_message('a', 'q2', 'm', 'test')
280 self.backend.create_message('a', 'q3', 'm', 'test')
281 queues = list(self.backend.get_queues('a'))
282 self.assertEquals(3, len(queues))
283 filters = dict(detail='id', marker=queues[0])
284 queues2 = list(self.backend.delete_queues('a', filters))
285 self.assertEquals(queues[1:], queues2)
286 queues2 = list(self.backend.get_queues('a'))
287 self.assertEquals(queues[:1], queues2)
288 filters = dict(detail='id', marker='unknown')
289 queues2 = list(self.backend.delete_queues('a', filters))
290 self.assertEquals(queues[:1], queues2)
291
292 def test_delete_limit(self):
293 self.backend.create_message('a', 'q1', 'm', 'test')
294 self.backend.create_message('a', 'q2', 'm', 'test')
295 self.backend.create_message('a', 'q3', 'm', 'test')
296 queues = list(self.backend.get_queues('a'))
297 self.assertEquals(3, len(queues))
298 filters = dict(detail='id', limit=1)
299 queues2 = list(self.backend.delete_queues('a', filters))
300 self.assertEquals(queues[:1], queues2)
301 filters = dict(detail='id', limit=2)
302 queues2 = list(self.backend.delete_queues('a', filters))
303 self.assertEquals(queues[1:3], queues2)
304
305 def test_delete_marker_limit(self):
306 self.backend.create_message('a', 'q1', 'm', 'test')
307 self.backend.create_message('a', 'q2', 'm', 'test')
308 self.backend.create_message('a', 'q3', 'm', 'test')
309 queues = list(self.backend.get_queues('a'))
310 self.assertEquals(3, len(queues))
311 filters = dict(detail='id', marker=queues[1], limit=1)
312 queues2 = list(self.backend.delete_queues('a', filters))
313 self.assertEquals(queues[2:3], queues2)
314 filters = dict(detail='id', marker=queues[0], limit=2)
315 queues2 = list(self.backend.delete_queues('a', filters))
316 self.assertEquals(queues[1:2], queues2)
317 self.assertEquals([], list(self.backend.delete_queues('a')))
318
319 def test_get_detail_all(self):
320 self.backend.create_message('a', 'q', 'm', 'test')
321 filters = dict(detail='all')
322 queues = list(self.backend.get_queues('a', filters))
323 self.assertEquals([dict(id='q')], queues)
324 self.assertEquals([], list(self.backend.delete_queues('a')))
325
326 def test_get_detail_id(self):
327 self.backend.create_message('a', 'q', 'm', 'test')
328 filters = dict(detail='id')
329 queues = list(self.backend.get_queues('a', filters))
330 self.assertEquals(['q'], queues)
331 self.assertEquals([], list(self.backend.delete_queues('a')))
332
333 def test_get_detail_none(self):
334 self.backend.create_message('a', 'q', 'm', 'test')
335 filters = dict(detail='none')
336 queues = list(self.backend.get_queues('a', filters))
337 self.assertEquals([], queues)
338 self.assertEquals([], list(self.backend.delete_queues('a')))
339
340 def test_get_detail_bad(self):
341 self.backend.create_message('a', 'q', 'm', 'test')
342 filters = dict(detail='bad')
343 queues = self.backend.get_queues('a', filters)
344 self.assertRaises(burrow.backend.InvalidArguments, list, queues)
345 self.assertEquals([], list(self.backend.delete_queues('a')))
346
347 def test_get_marker(self):
348 self.backend.create_message('a', 'q1', 'm', 'test')
349 self.backend.create_message('a', 'q2', 'm', 'test')
350 self.backend.create_message('a', 'q3', 'm', 'test')
351 queues = list(self.backend.get_queues('a'))
352 self.assertEquals(3, len(queues))
353 filters = dict(marker=queues[0])
354 queues2 = list(self.backend.get_queues('a', filters))
355 self.assertEquals(queues[1:], queues2)
356 filters = dict(marker=queues[1])
357 queues2 = list(self.backend.get_queues('a', filters))
358 self.assertEquals(queues[2:], queues2)
359 filters = dict(marker=queues[2])
360 queues2 = self.backend.get_queues('a', filters)
361 self.assertRaises(burrow.backend.NotFound, list, queues2)
362 filters = dict(marker='unknown')
363 queues2 = list(self.backend.get_queues('a', filters))
364 self.assertEquals(queues, queues2)
365 self.assertEquals([], list(self.backend.delete_queues('a')))
366
367 def test_get_limit(self):
368 self.backend.create_message('a', 'q1', 'm', 'test')
369 self.backend.create_message('a', 'q2', 'm', 'test')
370 self.backend.create_message('a', 'q3', 'm', 'test')
371 queues = list(self.backend.get_queues('a'))
372 self.assertEquals(3, len(queues))
373 filters = dict(limit=1)
374 queues2 = list(self.backend.get_queues('a', filters))
375 self.assertEquals(queues[:1], queues2)
376 filters = dict(limit=2)
377 queues2 = list(self.backend.get_queues('a', filters))
378 self.assertEquals(queues[:2], queues2)
379 filters = dict(limit=3)
380 queues2 = list(self.backend.get_queues('a', filters))
381 self.assertEquals(queues, queues2)
382 filters = dict(limit=100)
383 queues2 = list(self.backend.get_queues('a', filters))
384 self.assertEquals(queues, queues2)
385 self.assertEquals([], list(self.backend.delete_queues('a')))
386
387 def test_get_marker_limit(self):
388 self.backend.create_message('a', 'q1', 'm', 'test')
389 self.backend.create_message('a', 'q2', 'm', 'test')
390 self.backend.create_message('a', 'q3', 'm', 'test')
391 queues = list(self.backend.get_queues('a'))
392 self.assertEquals(3, len(queues))
393 filters = dict(marker=queues[1], limit=1)
394 queues2 = list(self.backend.get_queues('a', filters))
395 self.assertEquals(queues[2:3], queues2)
396 filters = dict(marker=queues[0], limit=2)
397 queues2 = list(self.backend.get_queues('a', filters))
398 self.assertEquals(queues[1:3], queues2)
399 self.assertEquals([], list(self.backend.delete_queues('a')))
400
401
402class TestMessages(Base):
403 '''Test case for messages.'''
404
405 def test_basic(self):
406 self.backend.create_message('a', 'q', 'm', 'test')
407 message = dict(id='m', ttl=0, hide=0, body='test')
408 messages = list(self.backend.get_messages('a', 'q'))
409 self.assertEquals([message], messages)
410 attributes = dict(ttl=100, hide=200)
411 messages = list(self.backend.update_messages('a', 'q', attributes))
412 self.assertEquals([], messages)
413 attributes = dict(ttl=0, hide=0)
414 filters = dict(match_hidden=True)
415 messages = self.backend.update_messages('a', 'q', attributes, filters)
416 self.assertEquals([], list(messages))
417 messages = self.backend.update_messages('a', 'q', dict(), filters)
418 self.assertEquals([], list(messages))
419 self.delete_messages()
420 messages = self.backend.delete_messages('a', 'q')
421 self.assertRaises(burrow.backend.NotFound, list, messages)
422 messages = self.backend.update_messages('a', 'q', attributes)
423 self.assertRaises(burrow.backend.NotFound, list, messages)
424
425 def test_large(self):
426 for name in xrange(0, 1000):
427 name = str(name)
428 self.backend.create_message('a', 'q', name, name)
429 attributes = dict(ttl=100, hide=200)
430 messages = self.backend.update_messages('a', 'q', attributes)
431 self.assertEquals([], list(messages))
432 self.delete_messages()
433
434 def test_delete_detail_all(self):
435 self.backend.create_message('a', 'q', 'm', 'test')
436 message = dict(id='m', ttl=0, hide=0, body='test')
437 filters = dict(detail='all')
438 messages = list(self.backend.delete_messages('a', 'q', filters))
439 self.assertEquals([message], messages)
440
441 def test_delete_detail_attributes(self):
442 self.backend.create_message('a', 'q', 'm', 'test')
443 message = dict(id='m', ttl=0, hide=0)
444 filters = dict(detail='attributes')
445 messages = list(self.backend.delete_messages('a', 'q', filters))
446 self.assertEquals([message], messages)
447
448 def test_delete_detail_body(self):
449 self.backend.create_message('a', 'q', 'm', 'test')
450 filters = dict(detail='body')
451 messages = list(self.backend.delete_messages('a', 'q', filters))
452 self.assertEquals(['test'], messages)
453
454 def test_delete_detail_id(self):
455 self.backend.create_message('a', 'q', 'm', 'test')
456 filters = dict(detail='id')
457 messages = list(self.backend.delete_messages('a', 'q', filters))
458 self.assertEquals(['m'], messages)
459
460 def test_delete_detail_none(self):
461 self.backend.create_message('a', 'q', 'm', 'test')
462 filters = dict(detail='none')
463 messages = list(self.backend.delete_messages('a', 'q', filters))
464 self.assertEquals([], messages)
465
466 def test_delete_detail_bad(self):
467 self.backend.create_message('a', 'q', 'm', 'test')
468 filters = dict(detail='bad')
469 messages = self.backend.delete_messages('a', 'q', filters)
470 self.assertRaises(burrow.backend.InvalidArguments, list, messages)
471 self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
472
473 def test_delete_marker(self):
474 self.backend.create_message('a', 'q', 'm1', 'test')
475 self.backend.create_message('a', 'q', 'm2', 'test')
476 self.backend.create_message('a', 'q', 'm3', 'test')
477 messages = list(self.backend.get_messages('a', 'q'))
478 self.assertEquals(3, len(messages))
479 filters = dict(detail='all', marker=messages[0]['id'])
480 messages2 = list(self.backend.delete_messages('a', 'q', filters))
481 self.assertEquals(messages[1:], messages2)
482 messages2 = list(self.backend.get_messages('a', 'q'))
483 self.assertEquals(messages[:1], messages2)
484 filters = dict(detail='all', marker='unknown')
485 messages2 = list(self.backend.delete_messages('a', 'q', filters))
486 self.assertEquals(messages[:1], messages2)
487
488 def test_delete_limit(self):
489 self.backend.create_message('a', 'q', 'm1', 'test')
490 self.backend.create_message('a', 'q', 'm2', 'test')
491 self.backend.create_message('a', 'q', 'm3', 'test')
492 messages = list(self.backend.get_messages('a', 'q'))
493 self.assertEquals(3, len(messages))
494 filters = dict(detail='all', limit=1)
495 messages2 = list(self.backend.delete_messages('a', 'q', filters))
496 self.assertEquals(messages[:1], messages2)
497 filters = dict(detail='all', limit=2)
498 messages2 = list(self.backend.delete_messages('a', 'q', filters))
499 self.assertEquals(messages[1:3], messages2)
500
501 def test_delete_marker_limit(self):
502 self.backend.create_message('a', 'q', 'm1', 'test')
503 self.backend.create_message('a', 'q', 'm2', 'test')
504 self.backend.create_message('a', 'q', 'm3', 'test')
505 messages = list(self.backend.get_messages('a', 'q'))
506 self.assertEquals(3, len(messages))
507 filters = dict(detail='all', marker=messages[1]['id'], limit=1)
508 messages2 = list(self.backend.delete_messages('a', 'q', filters))
509 self.assertEquals(messages[2:3], messages2)
510 filters = dict(detail='all', marker=messages[0]['id'], limit=2)
511 messages2 = list(self.backend.delete_messages('a', 'q', filters))
512 self.assertEquals(messages[1:2], messages2)
513 self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
514
515 def test_get_detail_all(self):
516 self.backend.create_message('a', 'q', 'm', 'test')
517 message = dict(id='m', ttl=0, hide=0, body='test')
518 filters = dict(detail='all')
519 messages = list(self.backend.get_messages('a', 'q', filters))
520 self.assertEquals([message], messages)
521 self.delete_messages()
522
523 def test_get_detail_attributes(self):
524 self.backend.create_message('a', 'q', 'm', 'test')
525 message = dict(id='m', ttl=0, hide=0)
526 filters = dict(detail='attributes')
527 messages = list(self.backend.get_messages('a', 'q', filters))
528 self.assertEquals([message], messages)
529 self.delete_messages()
530
531 def test_get_detail_body(self):
532 self.backend.create_message('a', 'q', 'm', 'test')
533 filters = dict(detail='body')
534 messages = list(self.backend.get_messages('a', 'q', filters))
535 self.assertEquals(['test'], messages)
536 self.delete_messages()
537
538 def test_get_detail_id(self):
539 self.backend.create_message('a', 'q', 'm', 'test')
540 filters = dict(detail='id')
541 messages = list(self.backend.get_messages('a', 'q', filters))
542 self.assertEquals(['m'], messages)
543 self.delete_messages()
544
545 def test_get_detail_none(self):
546 self.backend.create_message('a', 'q', 'm', 'test')
547 filters = dict(detail='none')
548 messages = list(self.backend.get_messages('a', 'q', filters))
549 self.assertEquals([], messages)
550 self.delete_messages()
551
552 def test_get_detail_bad(self):
553 self.backend.create_message('a', 'q', 'm', 'test')
554 filters = dict(detail='bad')
555 messages = self.backend.get_messages('a', 'q', filters)
556 self.assertRaises(burrow.backend.InvalidArguments, list, messages)
557 self.delete_messages()
558
559 def test_get_marker(self):
560 self.backend.create_message('a', 'q', 'm1', 'test')
561 self.backend.create_message('a', 'q', 'm2', 'test')
562 self.backend.create_message('a', 'q', 'm3', 'test')
563 messages = list(self.backend.get_messages('a', 'q'))
564 self.assertEquals(3, len(messages))
565 filters = dict(marker=messages[0]['id'])
566 messages2 = list(self.backend.get_messages('a', 'q', filters))
567 self.assertEquals(messages[1:], messages2)
568 filters = dict(marker=messages[1]['id'])
569 messages2 = list(self.backend.get_messages('a', 'q', filters))
570 self.assertEquals(messages[2:], messages2)
571 filters = dict(marker=messages[2]['id'])
572 messages2 = self.backend.get_messages('a', 'q', filters)
573 self.assertRaises(burrow.backend.NotFound, list, messages2)
574 filters = dict(marker='unknown')
575 messages2 = list(self.backend.get_messages('a', 'q', filters))
576 self.assertEquals(messages, messages2)
577 self.delete_messages()
578
579 def test_get_limit(self):
580 self.backend.create_message('a', 'q', 'm1', 'test')
581 self.backend.create_message('a', 'q', 'm2', 'test')
582 self.backend.create_message('a', 'q', 'm3', 'test')
583 messages = list(self.backend.get_messages('a', 'q'))
584 self.assertEquals(3, len(messages))
585 filters = dict(limit=1)
586 messages2 = list(self.backend.get_messages('a', 'q', filters))
587 self.assertEquals(messages[:1], messages2)
588 filters = dict(limit=2)
589 messages2 = list(self.backend.get_messages('a', 'q', filters))
590 self.assertEquals(messages[:2], messages2)
591 filters = dict(limit=3)
592 messages2 = list(self.backend.get_messages('a', 'q', filters))
593 self.assertEquals(messages, messages2)
594 filters = dict(limit=100)
595 messages2 = list(self.backend.get_messages('a', 'q', filters))
596 self.assertEquals(messages, messages2)
597 self.delete_messages()
598
599 def test_get_marker_limit(self):
600 self.backend.create_message('a', 'q', 'm1', 'test')
601 self.backend.create_message('a', 'q', 'm2', 'test')
602 self.backend.create_message('a', 'q', 'm3', 'test')
603 messages = list(self.backend.get_messages('a', 'q'))
604 self.assertEquals(3, len(messages))
605 filters = dict(marker=messages[1]['id'], limit=1)
606 messages2 = list(self.backend.get_messages('a', 'q', filters))
607 self.assertEquals(messages[2:3], messages2)
608 filters = dict(marker=messages[0]['id'], limit=2)
609 messages2 = list(self.backend.get_messages('a', 'q', filters))
610 self.assertEquals(messages[1:3], messages2)
611 self.delete_messages()
612
613 def test_update_detail_all(self):
614 self.backend.create_message('a', 'q', 'm', 'test')
615 message = dict(id='m', ttl=100, hide=200, body='test')
616 attributes = dict(ttl=100, hide=200)
617 filters = dict(detail='all')
618 messages = self.backend.update_messages('a', 'q', attributes, filters)
619 self.assertEquals([message], list(messages))
620 self.delete_messages()
621
622 def test_update_detail_attributes(self):
623 self.backend.create_message('a', 'q', 'm', 'test')
624 message = dict(id='m', ttl=100, hide=200)
625 attributes = dict(ttl=100, hide=200)
626 filters = dict(detail='attributes')
627 messages = self.backend.update_messages('a', 'q', attributes, filters)
628 self.assertEquals([message], list(messages))
629 self.delete_messages()
630
631 def test_update_detail_body(self):
632 self.backend.create_message('a', 'q', 'm', 'test')
633 attributes = dict(ttl=100, hide=200)
634 filters = dict(detail='body')
635 messages = self.backend.update_messages('a', 'q', attributes, filters)
636 self.assertEquals(['test'], list(messages))
637 self.delete_messages()
638
639 def test_update_detail_id(self):
640 self.backend.create_message('a', 'q', 'm', 'test')
641 attributes = dict(ttl=100, hide=200)
642 filters = dict(detail='id')
643 messages = self.backend.update_messages('a', 'q', attributes, filters)
644 self.assertEquals(['m'], list(messages))
645 self.delete_messages()
646
647 def test_update_detail_none(self):
648 self.backend.create_message('a', 'q', 'm', 'test')
649 attributes = dict(ttl=100, hide=200)
650 filters = dict(detail='none')
651 messages = self.backend.update_messages('a', 'q', attributes, filters)
652 self.assertEquals([], list(messages))
653 self.delete_messages()
654
655 def test_update_detail_bad(self):
656 self.backend.create_message('a', 'q', 'm', 'test')
657 attributes = dict(ttl=100, hide=200)
658 filters = dict(detail='bad')
659 messages = self.backend.update_messages('a', 'q', attributes, filters)
660 self.assertRaises(burrow.backend.InvalidArguments, list, messages)
661 self.delete_messages()
662
663 def test_update_marker(self):
664 self.backend.create_message('a', 'q', 'm1', 'test')
665 self.backend.create_message('a', 'q', 'm2', 'test')
666 self.backend.create_message('a', 'q', 'm3', 'test')
667 attributes = dict(ttl=100, hide=200)
668 filters = dict(detail='all', match_hidden=True)
669 messages = self.backend.update_messages('a', 'q', attributes, filters)
670 messages = list(messages)
671 self.assertEquals(3, len(messages))
672 filters.update(marker=messages[0]['id'])
673 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
674 self.assertEquals(messages[1:], list(messages2))
675 filters.update(marker=messages[1]['id'])
676 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
677 self.assertEquals(messages[2:], list(messages2))
678 filters.update(marker=messages[2]['id'])
679 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
680 self.assertRaises(burrow.backend.NotFound, list, messages2)
681 filters = dict(detail='all', marker='unknown', match_hidden=True)
682 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
683 self.assertEquals(messages, list(messages2))
684 self.delete_messages()
685
686 def test_update_limit(self):
687 self.backend.create_message('a', 'q', 'm1', 'test')
688 self.backend.create_message('a', 'q', 'm2', 'test')
689 self.backend.create_message('a', 'q', 'm3', 'test')
690 attributes = dict(ttl=100, hide=200)
691 filters = dict(detail='all', match_hidden=True)
692 messages = self.backend.update_messages('a', 'q', attributes, filters)
693 messages = list(messages)
694 self.assertEquals(3, len(messages))
695 filters.update(limit=1)
696 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
697 self.assertEquals(messages[:1], list(messages2))
698 filters.update(limit=2)
699 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
700 self.assertEquals(messages[:2], list(messages2))
701 filters.update(limit=3)
702 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
703 self.assertEquals(messages, list(messages2))
704 filters.update(limit=100)
705 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
706 self.assertEquals(messages, list(messages2))
707 self.delete_messages()
708
709 def test_update_marker_limit(self):
710 self.backend.create_message('a', 'q', 'm1', 'test')
711 self.backend.create_message('a', 'q', 'm2', 'test')
712 self.backend.create_message('a', 'q', 'm3', 'test')
713 attributes = dict(ttl=100, hide=200)
714 filters = dict(detail='all', match_hidden=True)
715 messages = self.backend.update_messages('a', 'q', attributes, filters)
716 messages = list(messages)
717 self.assertEquals(3, len(messages))
718 filters.update(marker=messages[1]['id'], limit=1)
719 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
720 self.assertEquals(messages[2:3], list(messages2))
721 filters.update(marker=messages[0]['id'], limit=2)
722 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
723 self.assertEquals(messages[1:3], list(messages2))
724 self.delete_messages()
725
726 def test_update_wait(self):
727 attributes = dict(hide=100)
728 self.backend.create_message('a', 'q', 'm', 'test', attributes)
729 self.success = False
730 thread = eventlet.spawn(self.get_messages)
731 attributes = dict(hide=0)
732 filters = dict(match_hidden=True)
733 messages = self.backend.update_messages('a', 'q', attributes, filters)
734 eventlet.spawn_after(0.2, list, messages)
735 thread.wait()
736 self.assertTrue(self.success)
737 self.delete_messages()
738
739
740class TestMessage(Base):
741 '''Test case for message.'''
742
743 def test_basic(self):
744 self.backend.create_message('a', 'q', 'm', 'test')
745 message = self.backend.get_message('a', 'q', 'm')
746 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test'), message)
747 attributes = dict(ttl=100, hide=200)
748 message = self.backend.update_message('a', 'q', 'm', attributes)
749 attributes = dict(ttl=0, hide=0)
750 message = self.backend.update_message('a', 'q', 'm', attributes)
751 self.assertEquals(None, message)
752 message = self.backend.update_message('a', 'q', 'm', dict())
753 self.assertEquals(None, message)
754 message = self.backend.delete_message('a', 'q', 'm')
755 self.assertEquals(None, message)
756
757 def test_create(self):
758 created = self.backend.create_message('a', 'q', 'm', 'test1')
759 self.assertEquals(created, True)
760 message = self.backend.get_message('a', 'q', 'm')
761 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test1'), message)
762 attributes = dict(ttl=100, hide=200)
763 created = self.backend.create_message('a', 'q', 'm', 'test2',
764 attributes)
765 self.assertEquals(created, False)
766 message = self.backend.get_message('a', 'q', 'm')
767 self.assertEquals(dict(id='m', ttl=100, hide=200, body='test2'),
768 message)
769 attributes = dict(ttl=0, hide=0)
770 created = self.backend.create_message('a', 'q', 'm', 'test3',
771 attributes)
772 self.assertEquals(created, False)
773 message = self.backend.get_message('a', 'q', 'm')
774 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test3'), message)
775 self.delete_messages()
776
777 def test_delete_detail_all(self):
778 self.backend.create_message('a', 'q', 'm', 'test')
779 filters = dict(detail='all')
780 message = self.backend.delete_message('a', 'q', 'm', filters)
781 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test'), message)
782
783 def test_delete_detail_attributes(self):
784 self.backend.create_message('a', 'q', 'm', 'test')
785 filters = dict(detail='attributes')
786 message = self.backend.delete_message('a', 'q', 'm', filters)
787 self.assertEquals(dict(id='m', ttl=0, hide=0), message)
788
789 def test_delete_detail_body(self):
790 self.backend.create_message('a', 'q', 'm', 'test')
791 filters = dict(detail='body')
792 message = self.backend.delete_message('a', 'q', 'm', filters)
793 self.assertEquals('test', message)
794
795 def test_delete_detail_id(self):
796 self.backend.create_message('a', 'q', 'm', 'test')
797 filters = dict(detail='id')
798 message = self.backend.delete_message('a', 'q', 'm', filters)
799 self.assertEquals('m', message)
800
801 def test_delete_detail_none(self):
802 self.backend.create_message('a', 'q', 'm', 'test')
803 filters = dict(detail='none')
804 message = self.backend.delete_message('a', 'q', 'm', filters)
805 self.assertEquals(None, message)
806
807 def test_delete_detail_bad(self):
808 self.backend.create_message('a', 'q', 'm', 'test')
809 filters = dict(detail='bad')
810 self.assertRaises(burrow.backend.InvalidArguments,
811 self.backend.delete_message, 'a', 'q', 'm', filters)
812 self.delete_messages()
813
814 def test_get_detail_all(self):
815 self.backend.create_message('a', 'q', 'm', 'test')
816 filters = dict(detail='all')
817 message = self.backend.get_message('a', 'q', 'm', filters)
818 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test'), message)
819 self.delete_messages()
820
821 def test_get_detail_attributes(self):
822 self.backend.create_message('a', 'q', 'm', 'test')
823 filters = dict(detail='attributes')
824 message = self.backend.get_message('a', 'q', 'm', filters)
825 self.assertEquals(dict(id='m', ttl=0, hide=0), message)
826 self.delete_messages()
827
828 def test_get_detail_body(self):
829 self.backend.create_message('a', 'q', 'm', 'test')
830 filters = dict(detail='body')
831 message = self.backend.get_message('a', 'q', 'm', filters)
832 self.assertEquals('test', message)
833 self.delete_messages()
834
835 def test_get_detail_id(self):
836 self.backend.create_message('a', 'q', 'm', 'test')
837 filters = dict(detail='id')
838 message = self.backend.get_message('a', 'q', 'm', filters)
839 self.assertEquals('m', message)
840 self.delete_messages()
841
842 def test_get_detail_none(self):
843 self.backend.create_message('a', 'q', 'm', 'test')
844 filters = dict(detail='none')
845 message = self.backend.get_message('a', 'q', 'm', filters)
846 self.assertEquals(None, message)
847 self.delete_messages()
848
849 def test_get_detail_bad(self):
850 self.backend.create_message('a', 'q', 'm', 'test')
851 filters = dict(detail='bad')
852 self.assertRaises(burrow.backend.InvalidArguments,
853 self.backend.get_message, 'a', 'q', 'm', filters)
854 self.delete_messages()
855
856 def test_update_detail_all(self):
857 self.backend.create_message('a', 'q', 'm', 'test')
858 attributes = dict(ttl=100, hide=200)
859 filters = dict(detail='all')
860 message = self.backend.update_message('a', 'q', 'm', attributes,
861 filters)
862 self.assertEquals(dict(id='m', ttl=100, hide=200, body='test'),
863 message)
864 self.delete_messages()
865
866 def test_update_detail_attributes(self):
867 self.backend.create_message('a', 'q', 'm', 'test')
868 attributes = dict(ttl=100, hide=200)
869 filters = dict(detail='attributes')
870 message = self.backend.update_message('a', 'q', 'm', attributes,
871 filters)
872 self.assertEquals(dict(id='m', ttl=100, hide=200), message)
873 self.delete_messages()
874
875 def test_update_detail_body(self):
876 self.backend.create_message('a', 'q', 'm', 'test')
877 attributes = dict(ttl=100, hide=200)
878 filters = dict(detail='body')
879 message = self.backend.update_message('a', 'q', 'm', attributes,
880 filters)
881 self.assertEquals('test', message)
882 self.delete_messages()
883
884 def test_update_detail_id(self):
885 self.backend.create_message('a', 'q', 'm', 'test')
886 attributes = dict(ttl=100, hide=200)
887 filters = dict(detail='id')
888 message = self.backend.update_message('a', 'q', 'm', attributes,
889 filters)
890 self.assertEquals('m', message)
891 self.delete_messages()
892
893 def test_update_detail_none(self):
894 self.backend.create_message('a', 'q', 'm', 'test')
895 attributes = dict(ttl=100, hide=200)
896 filters = dict(detail='none')
897 message = self.backend.update_message('a', 'q', 'm', attributes,
898 filters)
899 self.assertEquals(None, message)
900 self.delete_messages()
901
902 def test_update_detail_bad(self):
903 self.backend.create_message('a', 'q', 'm', 'test')
904 attributes = dict(ttl=100, hide=200)
905 filters = dict(detail='bad')
906 self.assertRaises(burrow.backend.InvalidArguments,
907 self.backend.update_message, 'a', 'q', 'm', attributes, filters)
908 self.delete_messages()
909
910 def test_ttl(self):
911 attributes = dict(ttl=1)
912 self.backend.create_message('a', 'q', 'm', 'test', attributes)
913 time.sleep(2)
914 self.backend.clean()
915
916 def test_ttl_large(self):
917 attributes = dict(ttl=1)
918 for name in xrange(0, 1000):
919 name = str(name)
920 self.backend.create_message('a', 'q', name, name, attributes)
921 time.sleep(2)
922 self.backend.clean()
923
924 def test_hide(self):
925 attributes = dict(hide=1)
926 self.backend.create_message('a', 'q', 'm', 'test', attributes)
927 time.sleep(2)
928 self.backend.clean()
929 message = self.backend.get_message('a', 'q', 'm')
930 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test'), message)
931 self.delete_messages()
932
933 def test_hide_large(self):
934 attributes = dict(hide=1)
935 for name in xrange(0, 1000):
936 name = str(name)
937 self.backend.create_message('a', 'q', name, name, attributes)
938 time.sleep(2)
939 self.backend.clean()
940 message = self.backend.get_message('a', 'q', '0')
941 self.assertEquals(dict(id='0', ttl=0, hide=0, body='0'), message)
942 self.delete_messages()
943
944 def test_create_wait(self):
945 self.success = False
946 thread = eventlet.spawn(self.get_messages)
947 eventlet.spawn_after(0.2,
948 self.backend.create_message, 'a', 'q', 'm', 'test')
949 thread.wait()
950 self.assertTrue(self.success)
951 self.delete_messages()
952
953 def test_update_wait(self):
954 attributes = dict(hide=100)
955 self.backend.create_message('a', 'q', 'm', 'test', attributes)
956 self.success = False
957 thread = eventlet.spawn(self.get_messages)
958 attributes = dict(hide=0)
959 eventlet.spawn_after(0.2,
960 self.backend.update_message, 'a', 'q', 'm', attributes)
961 thread.wait()
962 self.assertTrue(self.success)
963 self.delete_messages()
0964
=== modified file 'test/backend/test_http.py'
--- test/backend/test_http.py 2011-08-10 07:16:07 +0000
+++ test/backend/test_http.py 2011-08-16 21:02:23 +0000
@@ -12,19 +12,22 @@
12# See the License for the specific language governing permissions and12# See the License for the specific language governing permissions and
13# limitations under the License.13# limitations under the License.
1414
15'''Unittests for the HTTP backend. This starts the WSGI server so
16tests the WSGI frontend as well.'''
17
15import atexit18import atexit
16import ConfigParser19import ConfigParser
17import os20import os
18import signal21import signal
22import sys
19import time23import time
2024
21import burrow.server
22import burrow.backend.http25import burrow.backend.http
23import test.backend.test_memory26import test.backend
2427
2528
26class TestHTTP(test.backend.test_memory.TestMemory):29class HTTPBase(test.backend.Base):
27 '''Unittests for the HTTP backend.'''30 '''Base test case for http backend.'''
2831
29 def setUp(self):32 def setUp(self):
30 config = (ConfigParser.ConfigParser(), 'test')33 config = (ConfigParser.ConfigParser(), 'test')
@@ -32,23 +35,28 @@
32 self.check_empty()35 self.check_empty()
3336
3437
35def kill_server():38class TestHTTPAccounts(HTTPBase, test.backend.TestAccounts):
36 try:39 '''Test case for accounts with http backend.'''
37 pid_file = open('TestHTTP.pid', 'r')40 pass
38 pid = pid_file.read()41
39 pid_file.close()42
40 try:43class TestHTTPQueues(HTTPBase, test.backend.TestQueues):
41 os.kill(int(pid), signal.SIGUSR1)44 '''Test case for queues with http backend.'''
42 time.sleep(1)45 pass
43 os.kill(int(pid), signal.SIGTERM)46
44 except OSError:47
45 pass48class TestHTTPMessages(HTTPBase, test.backend.TestMessages):
46 os.unlink('TestHTTP.pid')49 '''Test case for messages with http backend.'''
47 except IOError:50 pass
48 pass51
52
53class TestHTTPMessage(HTTPBase, test.backend.TestMessage):
54 '''Test case for message with http backend.'''
55 pass
4956
5057
51def start_server():58def start_server():
59 '''Fork and start the server, saving the pid in a file.'''
52 kill_server()60 kill_server()
53 pid = os.fork()61 pid = os.fork()
54 if pid == 0:62 if pid == 0:
@@ -57,16 +65,17 @@
57 cov = coverage.coverage(data_suffix=True)65 cov = coverage.coverage(data_suffix=True)
58 cov.start()66 cov.start()
5967
60 def save_coverage(signum, frame):68 def save_coverage(_signum, _frame):
69 '''Callback for signal to save coverage info to file.'''
61 cov.save()70 cov.save()
6271
63 signal.signal(signal.SIGUSR1, save_coverage)72 signal.signal(signal.SIGUSR1, save_coverage)
64 except:73 except ImportError:
65 pass74 pass
66 server = burrow.server.Server(add_default_log_handler=False)75 server = burrow.Server(add_default_log_handler=False)
67 server.frontends[0].default_ttl = 076 server.frontends[0].default_ttl = 0
68 server.run()77 server.run()
69 os.exit(0)78 sys.exit(0)
70 pid_file = open('TestHTTP.pid', 'w')79 pid_file = open('TestHTTP.pid', 'w')
71 pid_file.write(str(pid))80 pid_file.write(str(pid))
72 pid_file.close()81 pid_file.close()
@@ -74,4 +83,21 @@
74 time.sleep(1)83 time.sleep(1)
7584
7685
86def kill_server():
87 '''Try killing the server if the pid file exists.'''
88 try:
89 pid_file = open('TestHTTP.pid', 'r')
90 pid = pid_file.read()
91 pid_file.close()
92 try:
93 os.kill(int(pid), signal.SIGUSR1)
94 time.sleep(1)
95 os.kill(int(pid), signal.SIGTERM)
96 except OSError:
97 pass
98 os.unlink('TestHTTP.pid')
99 except IOError:
100 pass
101
102
77start_server()103start_server()
78104
=== modified file 'test/backend/test_memory.py'
--- test/backend/test_memory.py 2011-08-10 07:16:07 +0000
+++ test/backend/test_memory.py 2011-08-16 21:02:23 +0000
@@ -12,923 +12,38 @@
12# See the License for the specific language governing permissions and12# See the License for the specific language governing permissions and
13# limitations under the License.13# limitations under the License.
1414
15'''Unittests for the memory backend.'''
16
15import ConfigParser17import ConfigParser
16import time18
17import unittest
18
19import eventlet
20eventlet.monkey_patch(socket=True)
21
22import burrow.backend
23import burrow.backend.memory19import burrow.backend.memory
2420import test.backend
2521
26class TestMemory(unittest.TestCase):22
27 '''Unittests for the memory backend.'''23class MemoryBase(test.backend.Base):
24 '''Base test case for memory backend.'''
2825
29 def setUp(self):26 def setUp(self):
30 config = (ConfigParser.ConfigParser(), 'test')27 config = (ConfigParser.ConfigParser(), 'test')
31 self.backend = burrow.backend.memory.Backend(config)28 self.backend = burrow.backend.memory.Backend(config)
32 self.check_empty()29 self.check_empty()
3330
34 def tearDown(self):31
35 self.check_empty()32class TestMemoryAccounts(MemoryBase, test.backend.TestAccounts):
3633 '''Test case for accounts with memory backend.'''
37 def check_empty(self):34 pass
38 accounts = self.backend.get_accounts()35
39 self.assertRaises(burrow.backend.NotFound, list, accounts)36
40 queues = self.backend.get_queues('a')37class TestMemoryQueues(MemoryBase, test.backend.TestQueues):
41 self.assertRaises(burrow.backend.NotFound, list, queues)38 '''Test case for queues with memory backend.'''
42 filters = dict(match_hidden=True)39 pass
43 messages = self.backend.get_messages('a', 'q', filters)40
44 self.assertRaises(burrow.backend.NotFound, list, messages)41
4542class TestMemoryMessages(MemoryBase, test.backend.TestMessages):
46 def test_accounts(self):43 '''Test case for messages with memory backend.'''
47 self.backend.create_message('a', 'q', 'm', 'test')44 pass
48 self.assertEquals(['a'], list(self.backend.get_accounts()))45
49 self.assertEquals([], list(self.backend.delete_accounts()))46
50 accounts = self.backend.delete_accounts()47class TestMemoryMessage(MemoryBase, test.backend.TestMessage):
51 self.assertRaises(burrow.backend.NotFound, list, accounts)48 '''Test case for message with memory backend.'''
5249 pass
53 def test_accounts_large(self):
54 for x in xrange(0, 1000):
55 self.backend.create_message(str(x), str(x), str(x), str(x))
56 filters = dict(marker='unknown')
57 self.assertEquals([], list(self.backend.delete_accounts(filters)))
58
59 def test_accounts_delete_detail_all(self):
60 self.backend.create_message('a', 'q', 'm', 'test')
61 filters = dict(detail='all')
62 accounts = list(self.backend.delete_accounts(filters))
63 self.assertEquals([dict(id='a')], accounts)
64
65 def test_accounts_delete_detail_id(self):
66 self.backend.create_message('a', 'q', 'm', 'test')
67 filters = dict(detail='id')
68 accounts = list(self.backend.delete_accounts(filters))
69 self.assertEquals(['a'], accounts)
70
71 def test_accounts_delete_detail_none(self):
72 self.backend.create_message('a', 'q', 'm', 'test')
73 filters = dict(detail='none')
74 accounts = list(self.backend.delete_accounts(filters))
75 self.assertEquals([], accounts)
76
77 def test_accounts_delete_detail_bad(self):
78 self.backend.create_message('a', 'q', 'm', 'test')
79 filters = dict(detail='bad')
80 accounts = self.backend.delete_accounts(filters)
81 self.assertRaises(burrow.backend.InvalidArguments, list, accounts)
82 self.assertEquals([], list(self.backend.delete_accounts()))
83
84 def test_accounts_delete_marker(self):
85 self.backend.create_message('a1', 'q', 'm', 'test')
86 self.backend.create_message('a2', 'q', 'm', 'test')
87 self.backend.create_message('a3', 'q', 'm', 'test')
88 accounts = list(self.backend.get_accounts())
89 self.assertEquals(3, len(accounts))
90 filters = dict(detail='id', marker=accounts[0])
91 accounts2 = list(self.backend.delete_accounts(filters))
92 self.assertEquals(accounts[1:], accounts2)
93 accounts2 = list(self.backend.get_accounts())
94 self.assertEquals(accounts[:1], accounts2)
95 filters = dict(detail='id', marker='unknown')
96 accounts2 = list(self.backend.delete_accounts(filters))
97 self.assertEquals(accounts[:1], accounts2)
98
99 def test_accounts_delete_limit(self):
100 self.backend.create_message('a1', 'q', 'm', 'test')
101 self.backend.create_message('a2', 'q', 'm', 'test')
102 self.backend.create_message('a3', 'q', 'm', 'test')
103 accounts = list(self.backend.get_accounts())
104 self.assertEquals(3, len(accounts))
105 filters = dict(detail='id', limit=1)
106 accounts2 = list(self.backend.delete_accounts(filters))
107 self.assertEquals(accounts[:1], accounts2)
108 filters = dict(detail='id', limit=2)
109 accounts2 = list(self.backend.delete_accounts(filters))
110 self.assertEquals(accounts[1:3], accounts2)
111
112 def test_accounts_delete_marker_limit(self):
113 self.backend.create_message('a1', 'q', 'm', 'test')
114 self.backend.create_message('a2', 'q', 'm', 'test')
115 self.backend.create_message('a3', 'q', 'm', 'test')
116 accounts = list(self.backend.get_accounts())
117 self.assertEquals(3, len(accounts))
118 filters = dict(detail='id', marker=accounts[1], limit=1)
119 accounts2 = list(self.backend.delete_accounts(filters))
120 self.assertEquals(accounts[2:3], accounts2)
121 filters = dict(detail='id', marker=accounts[0], limit=2)
122 accounts2 = list(self.backend.delete_accounts(filters))
123 self.assertEquals(accounts[1:2], accounts2)
124 self.assertEquals([], list(self.backend.delete_accounts()))
125
126 def test_accounts_get_detail_all(self):
127 self.backend.create_message('a', 'q', 'm', 'test')
128 filters = dict(detail='all')
129 accounts = list(self.backend.get_accounts(filters))
130 self.assertEquals([dict(id='a')], accounts)
131 self.assertEquals([], list(self.backend.delete_accounts()))
132
133 def test_accounts_get_detail_id(self):
134 self.backend.create_message('a', 'q', 'm', 'test')
135 filters = dict(detail='id')
136 accounts = list(self.backend.get_accounts(filters))
137 self.assertEquals(['a'], accounts)
138 self.assertEquals([], list(self.backend.delete_accounts()))
139
140 def test_accounts_get_detail_none(self):
141 self.backend.create_message('a', 'q', 'm', 'test')
142 filters = dict(detail='none')
143 accounts = list(self.backend.get_accounts(filters))
144 self.assertEquals([], accounts)
145 self.assertEquals([], list(self.backend.delete_accounts()))
146
147 def test_accounts_get_detail_bad(self):
148 self.backend.create_message('a', 'q', 'm', 'test')
149 filters = dict(detail='bad')
150 accounts = self.backend.get_accounts(filters)
151 self.assertRaises(burrow.backend.InvalidArguments, list, accounts)
152 self.assertEquals([], list(self.backend.delete_accounts()))
153
154 def test_accounts_get_marker(self):
155 self.backend.create_message('a1', 'q', 'm', 'test')
156 self.backend.create_message('a2', 'q', 'm', 'test')
157 self.backend.create_message('a3', 'q', 'm', 'test')
158 accounts = list(self.backend.get_accounts())
159 self.assertEquals(3, len(accounts))
160 filters = dict(marker=accounts[0])
161 accounts2 = list(self.backend.get_accounts(filters))
162 self.assertEquals(accounts[1:], accounts2)
163 filters = dict(marker=accounts[1])
164 accounts2 = list(self.backend.get_accounts(filters))
165 self.assertEquals(accounts[2:], accounts2)
166 filters = dict(marker=accounts[2])
167 accounts2 = self.backend.get_accounts(filters)
168 self.assertRaises(burrow.backend.NotFound, list, accounts2)
169 filters = dict(marker='unknown')
170 accounts2 = list(self.backend.get_accounts(filters))
171 self.assertEquals(accounts, accounts2)
172 self.assertEquals([], list(self.backend.delete_accounts()))
173
174 def test_accounts_get_limit(self):
175 self.backend.create_message('a1', 'q', 'm', 'test')
176 self.backend.create_message('a2', 'q', 'm', 'test')
177 self.backend.create_message('a3', 'q', 'm', 'test')
178 accounts = list(self.backend.get_accounts())
179 self.assertEquals(3, len(accounts))
180 filters = dict(limit=1)
181 accounts2 = list(self.backend.get_accounts(filters))
182 self.assertEquals(accounts[:1], accounts2)
183 filters = dict(limit=2)
184 accounts2 = list(self.backend.get_accounts(filters))
185 self.assertEquals(accounts[:2], accounts2)
186 filters = dict(limit=3)
187 accounts2 = list(self.backend.get_accounts(filters))
188 self.assertEquals(accounts, accounts2)
189 filters = dict(limit=100)
190 accounts2 = list(self.backend.get_accounts(filters))
191 self.assertEquals(accounts, accounts2)
192 self.assertEquals([], list(self.backend.delete_accounts()))
193
194 def test_accounts_get_marker_limit(self):
195 self.backend.create_message('a1', 'q', 'm', 'test')
196 self.backend.create_message('a2', 'q', 'm', 'test')
197 self.backend.create_message('a3', 'q', 'm', 'test')
198 accounts = list(self.backend.get_accounts())
199 self.assertEquals(3, len(accounts))
200 filters = dict(marker=accounts[1], limit=1)
201 accounts2 = list(self.backend.get_accounts(filters))
202 self.assertEquals(accounts[2:3], accounts2)
203 filters = dict(marker=accounts[0], limit=2)
204 accounts2 = list(self.backend.get_accounts(filters))
205 self.assertEquals(accounts[1:3], accounts2)
206 self.assertEquals([], list(self.backend.delete_accounts()))
207
208 def test_queues(self):
209 self.backend.create_message('a', 'q', 'm', 'test')
210 self.assertEquals(['q'], list(self.backend.get_queues('a')))
211 self.assertEquals([], list(self.backend.delete_queues('a')))
212 queues = self.backend.delete_queues('a')
213 self.assertRaises(burrow.backend.NotFound, list, queues)
214
215 def test_queues_large(self):
216 for x in xrange(0, 1000):
217 self.backend.create_message('a', str(x), str(x), str(x))
218 filters = dict(marker='unknown')
219 self.assertEquals([], list(self.backend.delete_queues('a', filters)))
220
221 def test_queues_delete_detail_all(self):
222 self.backend.create_message('a', 'q', 'm', 'test')
223 filters = dict(detail='all')
224 queues = list(self.backend.delete_queues('a', filters))
225 self.assertEquals([dict(id='q')], queues)
226
227 def test_queues_delete_detail_id(self):
228 self.backend.create_message('a', 'q', 'm', 'test')
229 filters = dict(detail='id')
230 queues = list(self.backend.delete_queues('a', filters))
231 self.assertEquals(['q'], queues)
232
233 def test_queues_delete_detail_none(self):
234 self.backend.create_message('a', 'q', 'm', 'test')
235 filters = dict(detail='none')
236 queues = list(self.backend.delete_queues('a', filters))
237 self.assertEquals([], queues)
238
239 def test_queues_delete_detail_bad(self):
240 self.backend.create_message('a', 'q', 'm', 'test')
241 filters = dict(detail='bad')
242 queues = self.backend.delete_queues('a', filters)
243 self.assertRaises(burrow.backend.InvalidArguments, list, queues)
244 self.assertEquals([], list(self.backend.delete_queues('a')))
245
246 def test_queues_delete_marker(self):
247 self.backend.create_message('a', 'q1', 'm', 'test')
248 self.backend.create_message('a', 'q2', 'm', 'test')
249 self.backend.create_message('a', 'q3', 'm', 'test')
250 queues = list(self.backend.get_queues('a'))
251 self.assertEquals(3, len(queues))
252 filters = dict(detail='id', marker=queues[0])
253 queues2 = list(self.backend.delete_queues('a', filters))
254 self.assertEquals(queues[1:], queues2)
255 queues2 = list(self.backend.get_queues('a'))
256 self.assertEquals(queues[:1], queues2)
257 filters = dict(detail='id', marker='unknown')
258 queues2 = list(self.backend.delete_queues('a', filters))
259 self.assertEquals(queues[:1], queues2)
260
261 def test_queues_delete_limit(self):
262 self.backend.create_message('a', 'q1', 'm', 'test')
263 self.backend.create_message('a', 'q2', 'm', 'test')
264 self.backend.create_message('a', 'q3', 'm', 'test')
265 queues = list(self.backend.get_queues('a'))
266 self.assertEquals(3, len(queues))
267 filters = dict(detail='id', limit=1)
268 queues2 = list(self.backend.delete_queues('a', filters))
269 self.assertEquals(queues[:1], queues2)
270 filters = dict(detail='id', limit=2)
271 queues2 = list(self.backend.delete_queues('a', filters))
272 self.assertEquals(queues[1:3], queues2)
273
274 def test_queues_delete_marker_limit(self):
275 self.backend.create_message('a', 'q1', 'm', 'test')
276 self.backend.create_message('a', 'q2', 'm', 'test')
277 self.backend.create_message('a', 'q3', 'm', 'test')
278 queues = list(self.backend.get_queues('a'))
279 self.assertEquals(3, len(queues))
280 filters = dict(detail='id', marker=queues[1], limit=1)
281 queues2 = list(self.backend.delete_queues('a', filters))
282 self.assertEquals(queues[2:3], queues2)
283 filters = dict(detail='id', marker=queues[0], limit=2)
284 queues2 = list(self.backend.delete_queues('a', filters))
285 self.assertEquals(queues[1:2], queues2)
286 self.assertEquals([], list(self.backend.delete_queues('a')))
287
288 def test_queues_get_detail_all(self):
289 self.backend.create_message('a', 'q', 'm', 'test')
290 filters = dict(detail='all')
291 queues = list(self.backend.get_queues('a', filters))
292 self.assertEquals([dict(id='q')], queues)
293 self.assertEquals([], list(self.backend.delete_queues('a')))
294
295 def test_queues_get_detail_id(self):
296 self.backend.create_message('a', 'q', 'm', 'test')
297 filters = dict(detail='id')
298 queues = list(self.backend.get_queues('a', filters))
299 self.assertEquals(['q'], queues)
300 self.assertEquals([], list(self.backend.delete_queues('a')))
301
302 def test_queues_get_detail_none(self):
303 self.backend.create_message('a', 'q', 'm', 'test')
304 filters = dict(detail='none')
305 queues = list(self.backend.get_queues('a', filters))
306 self.assertEquals([], queues)
307 self.assertEquals([], list(self.backend.delete_queues('a')))
308
309 def test_queues_get_detail_bad(self):
310 self.backend.create_message('a', 'q', 'm', 'test')
311 filters = dict(detail='bad')
312 queues = self.backend.get_queues('a', filters)
313 self.assertRaises(burrow.backend.InvalidArguments, list, queues)
314 self.assertEquals([], list(self.backend.delete_queues('a')))
315
316 def test_queues_get_marker(self):
317 self.backend.create_message('a', 'q1', 'm', 'test')
318 self.backend.create_message('a', 'q2', 'm', 'test')
319 self.backend.create_message('a', 'q3', 'm', 'test')
320 queues = list(self.backend.get_queues('a'))
321 self.assertEquals(3, len(queues))
322 filters = dict(marker=queues[0])
323 queues2 = list(self.backend.get_queues('a', filters))
324 self.assertEquals(queues[1:], queues2)
325 filters = dict(marker=queues[1])
326 queues2 = list(self.backend.get_queues('a', filters))
327 self.assertEquals(queues[2:], queues2)
328 filters = dict(marker=queues[2])
329 queues2 = self.backend.get_queues('a', filters)
330 self.assertRaises(burrow.backend.NotFound, list, queues2)
331 filters = dict(marker='unknown')
332 queues2 = list(self.backend.get_queues('a', filters))
333 self.assertEquals(queues, queues2)
334 self.assertEquals([], list(self.backend.delete_queues('a')))
335
336 def test_queues_get_limit(self):
337 self.backend.create_message('a', 'q1', 'm', 'test')
338 self.backend.create_message('a', 'q2', 'm', 'test')
339 self.backend.create_message('a', 'q3', 'm', 'test')
340 queues = list(self.backend.get_queues('a'))
341 self.assertEquals(3, len(queues))
342 filters = dict(limit=1)
343 queues2 = list(self.backend.get_queues('a', filters))
344 self.assertEquals(queues[:1], queues2)
345 filters = dict(limit=2)
346 queues2 = list(self.backend.get_queues('a', filters))
347 self.assertEquals(queues[:2], queues2)
348 filters = dict(limit=3)
349 queues2 = list(self.backend.get_queues('a', filters))
350 self.assertEquals(queues, queues2)
351 filters = dict(limit=100)
352 queues2 = list(self.backend.get_queues('a', filters))
353 self.assertEquals(queues, queues2)
354 self.assertEquals([], list(self.backend.delete_queues('a')))
355
356 def test_queues_get_marker_limit(self):
357 self.backend.create_message('a', 'q1', 'm', 'test')
358 self.backend.create_message('a', 'q2', 'm', 'test')
359 self.backend.create_message('a', 'q3', 'm', 'test')
360 queues = list(self.backend.get_queues('a'))
361 self.assertEquals(3, len(queues))
362 filters = dict(marker=queues[1], limit=1)
363 queues2 = list(self.backend.get_queues('a', filters))
364 self.assertEquals(queues[2:3], queues2)
365 filters = dict(marker=queues[0], limit=2)
366 queues2 = list(self.backend.get_queues('a', filters))
367 self.assertEquals(queues[1:3], queues2)
368 self.assertEquals([], list(self.backend.delete_queues('a')))
369
370 def test_messages(self):
371 self.backend.create_message('a', 'q', 'm', 'test')
372 message = dict(id='m', ttl=0, hide=0, body='test')
373 messages = list(self.backend.get_messages('a', 'q'))
374 self.assertEquals([message], messages)
375 attributes = dict(ttl=100, hide=200)
376 messages = list(self.backend.update_messages('a', 'q', attributes))
377 self.assertEquals([], messages)
378 attributes = dict(ttl=0, hide=0)
379 filters = dict(match_hidden=True)
380 messages = self.backend.update_messages('a', 'q', attributes, filters)
381 self.assertEquals([], list(messages))
382 messages = self.backend.update_messages('a', 'q', dict(), filters)
383 self.assertEquals([], list(messages))
384 self.delete_messages()
385 messages = self.backend.delete_messages('a', 'q')
386 self.assertRaises(burrow.backend.NotFound, list, messages)
387 messages = self.backend.update_messages('a', 'q', attributes)
388 self.assertRaises(burrow.backend.NotFound, list, messages)
389
390 def test_messages_large(self):
391 for x in xrange(0, 1000):
392 self.backend.create_message('a', 'q', str(x), str(x))
393 attributes = dict(ttl=100, hide=200)
394 messages = self.backend.update_messages('a', 'q', attributes)
395 self.assertEquals([], list(messages))
396 self.delete_messages()
397
398 def test_messages_delete_detail_all(self):
399 self.backend.create_message('a', 'q', 'm', 'test')
400 message = dict(id='m', ttl=0, hide=0, body='test')
401 filters = dict(detail='all')
402 messages = list(self.backend.delete_messages('a', 'q', filters))
403 self.assertEquals([message], messages)
404
405 def test_messages_delete_detail_attributes(self):
406 self.backend.create_message('a', 'q', 'm', 'test')
407 message = dict(id='m', ttl=0, hide=0)
408 filters = dict(detail='attributes')
409 messages = list(self.backend.delete_messages('a', 'q', filters))
410 self.assertEquals([message], messages)
411
412 def test_messages_delete_detail_body(self):
413 self.backend.create_message('a', 'q', 'm', 'test')
414 filters = dict(detail='body')
415 messages = list(self.backend.delete_messages('a', 'q', filters))
416 self.assertEquals(['test'], messages)
417
418 def test_messages_delete_detail_id(self):
419 self.backend.create_message('a', 'q', 'm', 'test')
420 filters = dict(detail='id')
421 messages = list(self.backend.delete_messages('a', 'q', filters))
422 self.assertEquals(['m'], messages)
423
424 def test_messages_delete_detail_none(self):
425 self.backend.create_message('a', 'q', 'm', 'test')
426 filters = dict(detail='none')
427 messages = list(self.backend.delete_messages('a', 'q', filters))
428 self.assertEquals([], messages)
429
430 def test_messages_delete_detail_bad(self):
431 self.backend.create_message('a', 'q', 'm', 'test')
432 filters = dict(detail='bad')
433 messages = self.backend.delete_messages('a', 'q', filters)
434 self.assertRaises(burrow.backend.InvalidArguments, list, messages)
435 self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
436
437 def test_messages_delete_marker(self):
438 self.backend.create_message('a', 'q', 'm1', 'test')
439 self.backend.create_message('a', 'q', 'm2', 'test')
440 self.backend.create_message('a', 'q', 'm3', 'test')
441 messages = list(self.backend.get_messages('a', 'q'))
442 self.assertEquals(3, len(messages))
443 filters = dict(detail='all', marker=messages[0]['id'])
444 messages2 = list(self.backend.delete_messages('a', 'q', filters))
445 self.assertEquals(messages[1:], messages2)
446 messages2 = list(self.backend.get_messages('a', 'q'))
447 self.assertEquals(messages[:1], messages2)
448 filters = dict(detail='all', marker='unknown')
449 messages2 = list(self.backend.delete_messages('a', 'q', filters))
450 self.assertEquals(messages[:1], messages2)
451
452 def test_messages_delete_limit(self):
453 self.backend.create_message('a', 'q', 'm1', 'test')
454 self.backend.create_message('a', 'q', 'm2', 'test')
455 self.backend.create_message('a', 'q', 'm3', 'test')
456 messages = list(self.backend.get_messages('a', 'q'))
457 self.assertEquals(3, len(messages))
458 filters = dict(detail='all', limit=1)
459 messages2 = list(self.backend.delete_messages('a', 'q', filters))
460 self.assertEquals(messages[:1], messages2)
461 filters = dict(detail='all', limit=2)
462 messages2 = list(self.backend.delete_messages('a', 'q', filters))
463 self.assertEquals(messages[1:3], messages2)
464
465 def test_messages_delete_marker_limit(self):
466 self.backend.create_message('a', 'q', 'm1', 'test')
467 self.backend.create_message('a', 'q', 'm2', 'test')
468 self.backend.create_message('a', 'q', 'm3', 'test')
469 messages = list(self.backend.get_messages('a', 'q'))
470 self.assertEquals(3, len(messages))
471 filters = dict(detail='all', marker=messages[1]['id'], limit=1)
472 messages2 = list(self.backend.delete_messages('a', 'q', filters))
473 self.assertEquals(messages[2:3], messages2)
474 filters = dict(detail='all', marker=messages[0]['id'], limit=2)
475 messages2 = list(self.backend.delete_messages('a', 'q', filters))
476 self.assertEquals(messages[1:2], messages2)
477 self.assertEquals([], list(self.backend.delete_messages('a', 'q')))
478
479 def test_messages_get_detail_all(self):
480 self.backend.create_message('a', 'q', 'm', 'test')
481 message = dict(id='m', ttl=0, hide=0, body='test')
482 filters = dict(detail='all')
483 messages = list(self.backend.get_messages('a', 'q', filters))
484 self.assertEquals([message], messages)
485 self.delete_messages()
486
487 def test_messages_get_detail_attributes(self):
488 self.backend.create_message('a', 'q', 'm', 'test')
489 message = dict(id='m', ttl=0, hide=0)
490 filters = dict(detail='attributes')
491 messages = list(self.backend.get_messages('a', 'q', filters))
492 self.assertEquals([message], messages)
493 self.delete_messages()
494
495 def test_messages_get_detail_body(self):
496 self.backend.create_message('a', 'q', 'm', 'test')
497 filters = dict(detail='body')
498 messages = list(self.backend.get_messages('a', 'q', filters))
499 self.assertEquals(['test'], messages)
500 self.delete_messages()
501
502 def test_messages_get_detail_id(self):
503 self.backend.create_message('a', 'q', 'm', 'test')
504 filters = dict(detail='id')
505 messages = list(self.backend.get_messages('a', 'q', filters))
506 self.assertEquals(['m'], messages)
507 self.delete_messages()
508
509 def test_messages_get_detail_none(self):
510 self.backend.create_message('a', 'q', 'm', 'test')
511 filters = dict(detail='none')
512 messages = list(self.backend.get_messages('a', 'q', filters))
513 self.assertEquals([], messages)
514 self.delete_messages()
515
516 def test_messages_get_detail_bad(self):
517 self.backend.create_message('a', 'q', 'm', 'test')
518 filters = dict(detail='bad')
519 messages = self.backend.get_messages('a', 'q', filters)
520 self.assertRaises(burrow.backend.InvalidArguments, list, messages)
521 self.delete_messages()
522
523 def test_messages_get_marker(self):
524 self.backend.create_message('a', 'q', 'm1', 'test')
525 self.backend.create_message('a', 'q', 'm2', 'test')
526 self.backend.create_message('a', 'q', 'm3', 'test')
527 messages = list(self.backend.get_messages('a', 'q'))
528 self.assertEquals(3, len(messages))
529 filters = dict(marker=messages[0]['id'])
530 messages2 = list(self.backend.get_messages('a', 'q', filters))
531 self.assertEquals(messages[1:], messages2)
532 filters = dict(marker=messages[1]['id'])
533 messages2 = list(self.backend.get_messages('a', 'q', filters))
534 self.assertEquals(messages[2:], messages2)
535 filters = dict(marker=messages[2]['id'])
536 messages2 = self.backend.get_messages('a', 'q', filters)
537 self.assertRaises(burrow.backend.NotFound, list, messages2)
538 filters = dict(marker='unknown')
539 messages2 = list(self.backend.get_messages('a', 'q', filters))
540 self.assertEquals(messages, messages2)
541 self.delete_messages()
542
543 def test_messages_get_limit(self):
544 self.backend.create_message('a', 'q', 'm1', 'test')
545 self.backend.create_message('a', 'q', 'm2', 'test')
546 self.backend.create_message('a', 'q', 'm3', 'test')
547 messages = list(self.backend.get_messages('a', 'q'))
548 self.assertEquals(3, len(messages))
549 filters = dict(limit=1)
550 messages2 = list(self.backend.get_messages('a', 'q', filters))
551 self.assertEquals(messages[:1], messages2)
552 filters = dict(limit=2)
553 messages2 = list(self.backend.get_messages('a', 'q', filters))
554 self.assertEquals(messages[:2], messages2)
555 filters = dict(limit=3)
556 messages2 = list(self.backend.get_messages('a', 'q', filters))
557 self.assertEquals(messages, messages2)
558 filters = dict(limit=100)
559 messages2 = list(self.backend.get_messages('a', 'q', filters))
560 self.assertEquals(messages, messages2)
561 self.delete_messages()
562
563 def test_messages_get_marker_limit(self):
564 self.backend.create_message('a', 'q', 'm1', 'test')
565 self.backend.create_message('a', 'q', 'm2', 'test')
566 self.backend.create_message('a', 'q', 'm3', 'test')
567 messages = list(self.backend.get_messages('a', 'q'))
568 self.assertEquals(3, len(messages))
569 filters = dict(marker=messages[1]['id'], limit=1)
570 messages2 = list(self.backend.get_messages('a', 'q', filters))
571 self.assertEquals(messages[2:3], messages2)
572 filters = dict(marker=messages[0]['id'], limit=2)
573 messages2 = list(self.backend.get_messages('a', 'q', filters))
574 self.assertEquals(messages[1:3], messages2)
575 self.delete_messages()
576
577 def test_messages_update_detail_all(self):
578 self.backend.create_message('a', 'q', 'm', 'test')
579 message = dict(id='m', ttl=100, hide=200, body='test')
580 attributes = dict(ttl=100, hide=200)
581 filters = dict(detail='all')
582 messages = self.backend.update_messages('a', 'q', attributes, filters)
583 self.assertEquals([message], list(messages))
584 self.delete_messages()
585
586 def test_messages_update_detail_attributes(self):
587 self.backend.create_message('a', 'q', 'm', 'test')
588 message = dict(id='m', ttl=100, hide=200)
589 attributes = dict(ttl=100, hide=200)
590 filters = dict(detail='attributes')
591 messages = self.backend.update_messages('a', 'q', attributes, filters)
592 self.assertEquals([message], list(messages))
593 self.delete_messages()
594
595 def test_messages_update_detail_body(self):
596 self.backend.create_message('a', 'q', 'm', 'test')
597 attributes = dict(ttl=100, hide=200)
598 filters = dict(detail='body')
599 messages = self.backend.update_messages('a', 'q', attributes, filters)
600 self.assertEquals(['test'], list(messages))
601 self.delete_messages()
602
603 def test_messages_update_detail_id(self):
604 self.backend.create_message('a', 'q', 'm', 'test')
605 attributes = dict(ttl=100, hide=200)
606 filters = dict(detail='id')
607 messages = self.backend.update_messages('a', 'q', attributes, filters)
608 self.assertEquals(['m'], list(messages))
609 self.delete_messages()
610
611 def test_messages_update_detail_none(self):
612 self.backend.create_message('a', 'q', 'm', 'test')
613 attributes = dict(ttl=100, hide=200)
614 filters = dict(detail='none')
615 messages = self.backend.update_messages('a', 'q', attributes, filters)
616 self.assertEquals([], list(messages))
617 self.delete_messages()
618
619 def test_messages_update_detail_bad(self):
620 self.backend.create_message('a', 'q', 'm', 'test')
621 attributes = dict(ttl=100, hide=200)
622 filters = dict(detail='bad')
623 messages = self.backend.update_messages('a', 'q', attributes, filters)
624 self.assertRaises(burrow.backend.InvalidArguments, list, messages)
625 self.delete_messages()
626
627 def test_messages_update_marker(self):
628 self.backend.create_message('a', 'q', 'm1', 'test')
629 self.backend.create_message('a', 'q', 'm2', 'test')
630 self.backend.create_message('a', 'q', 'm3', 'test')
631 attributes = dict(ttl=100, hide=200)
632 filters = dict(detail='all', match_hidden=True)
633 messages = self.backend.update_messages('a', 'q', attributes, filters)
634 messages = list(messages)
635 self.assertEquals(3, len(messages))
636 filters.update(marker=messages[0]['id'])
637 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
638 self.assertEquals(messages[1:], list(messages2))
639 filters.update(marker=messages[1]['id'])
640 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
641 self.assertEquals(messages[2:], list(messages2))
642 filters.update(marker=messages[2]['id'])
643 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
644 self.assertRaises(burrow.backend.NotFound, list, messages2)
645 filters = dict(detail='all', marker='unknown', match_hidden=True)
646 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
647 self.assertEquals(messages, list(messages2))
648 self.delete_messages()
649
650 def test_messages_update_limit(self):
651 self.backend.create_message('a', 'q', 'm1', 'test')
652 self.backend.create_message('a', 'q', 'm2', 'test')
653 self.backend.create_message('a', 'q', 'm3', 'test')
654 attributes = dict(ttl=100, hide=200)
655 filters = dict(detail='all', match_hidden=True)
656 messages = self.backend.update_messages('a', 'q', attributes, filters)
657 messages = list(messages)
658 self.assertEquals(3, len(messages))
659 filters.update(limit=1)
660 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
661 self.assertEquals(messages[:1], list(messages2))
662 filters.update(limit=2)
663 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
664 self.assertEquals(messages[:2], list(messages2))
665 filters.update(limit=3)
666 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
667 self.assertEquals(messages, list(messages2))
668 filters.update(limit=100)
669 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
670 self.assertEquals(messages, list(messages2))
671 self.delete_messages()
672
673 def test_messages_update_marker_limit(self):
674 self.backend.create_message('a', 'q', 'm1', 'test')
675 self.backend.create_message('a', 'q', 'm2', 'test')
676 self.backend.create_message('a', 'q', 'm3', 'test')
677 attributes = dict(ttl=100, hide=200)
678 filters = dict(detail='all', match_hidden=True)
679 messages = self.backend.update_messages('a', 'q', attributes, filters)
680 messages = list(messages)
681 self.assertEquals(3, len(messages))
682 filters.update(marker=messages[1]['id'], limit=1)
683 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
684 self.assertEquals(messages[2:3], list(messages2))
685 filters.update(marker=messages[0]['id'], limit=2)
686 messages2 = self.backend.update_messages('a', 'q', attributes, filters)
687 self.assertEquals(messages[1:3], list(messages2))
688 self.delete_messages()
689
690 def test_message(self):
691 self.backend.create_message('a', 'q', 'm', 'test')
692 message = self.backend.get_message('a', 'q', 'm')
693 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test'), message)
694 attributes = dict(ttl=100, hide=200)
695 message = self.backend.update_message('a', 'q', 'm', attributes)
696 attributes = dict(ttl=0, hide=0)
697 message = self.backend.update_message('a', 'q', 'm', attributes)
698 self.assertEquals(None, message)
699 message = self.backend.update_message('a', 'q', 'm', dict())
700 self.assertEquals(None, message)
701 message = self.backend.delete_message('a', 'q', 'm')
702 self.assertEquals(None, message)
703
704 def test_message_create(self):
705 created = self.backend.create_message('a', 'q', 'm', 'test1')
706 self.assertEquals(created, True)
707 message = self.backend.get_message('a', 'q', 'm')
708 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test1'), message)
709 attributes = dict(ttl=100, hide=200)
710 created = self.backend.create_message('a', 'q', 'm', 'test2',
711 attributes)
712 self.assertEquals(created, False)
713 message = self.backend.get_message('a', 'q', 'm')
714 self.assertEquals(dict(id='m', ttl=100, hide=200, body='test2'),
715 message)
716 attributes = dict(ttl=0, hide=0)
717 created = self.backend.create_message('a', 'q', 'm', 'test3',
718 attributes)
719 self.assertEquals(created, False)
720 message = self.backend.get_message('a', 'q', 'm')
721 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test3'), message)
722
723 self.delete_messages()
724
725 def test_message_delete_detail_all(self):
726 self.backend.create_message('a', 'q', 'm', 'test')
727 filters = dict(detail='all')
728 message = self.backend.delete_message('a', 'q', 'm', filters)
729 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test'), message)
730
731 def test_message_delete_detail_attributes(self):
732 self.backend.create_message('a', 'q', 'm', 'test')
733 filters = dict(detail='attributes')
734 message = self.backend.delete_message('a', 'q', 'm', filters)
735 self.assertEquals(dict(id='m', ttl=0, hide=0), message)
736
737 def test_message_delete_detail_body(self):
738 self.backend.create_message('a', 'q', 'm', 'test')
739 filters = dict(detail='body')
740 message = self.backend.delete_message('a', 'q', 'm', filters)
741 self.assertEquals('test', message)
742
743 def test_message_delete_detail_id(self):
744 self.backend.create_message('a', 'q', 'm', 'test')
745 filters = dict(detail='id')
746 message = self.backend.delete_message('a', 'q', 'm', filters)
747 self.assertEquals('m', message)
748
749 def test_message_delete_detail_none(self):
750 self.backend.create_message('a', 'q', 'm', 'test')
751 filters = dict(detail='none')
752 message = self.backend.delete_message('a', 'q', 'm', filters)
753 self.assertEquals(None, message)
754
755 def test_message_delete_detail_bad(self):
756 self.backend.create_message('a', 'q', 'm', 'test')
757 filters = dict(detail='bad')
758 self.assertRaises(burrow.backend.InvalidArguments,
759 self.backend.delete_message, 'a', 'q', 'm', filters)
760 self.delete_messages()
761
762 def test_message_get_detail_all(self):
763 self.backend.create_message('a', 'q', 'm', 'test')
764 filters = dict(detail='all')
765 message = self.backend.get_message('a', 'q', 'm', filters)
766 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test'), message)
767 self.delete_messages()
768
769 def test_message_get_detail_attributes(self):
770 self.backend.create_message('a', 'q', 'm', 'test')
771 filters = dict(detail='attributes')
772 message = self.backend.get_message('a', 'q', 'm', filters)
773 self.assertEquals(dict(id='m', ttl=0, hide=0), message)
774 self.delete_messages()
775
776 def test_message_get_detail_body(self):
777 self.backend.create_message('a', 'q', 'm', 'test')
778 filters = dict(detail='body')
779 message = self.backend.get_message('a', 'q', 'm', filters)
780 self.assertEquals('test', message)
781 self.delete_messages()
782
783 def test_message_get_detail_id(self):
784 self.backend.create_message('a', 'q', 'm', 'test')
785 filters = dict(detail='id')
786 message = self.backend.get_message('a', 'q', 'm', filters)
787 self.assertEquals('m', message)
788 self.delete_messages()
789
790 def test_message_get_detail_none(self):
791 self.backend.create_message('a', 'q', 'm', 'test')
792 filters = dict(detail='none')
793 message = self.backend.get_message('a', 'q', 'm', filters)
794 self.assertEquals(None, message)
795 self.delete_messages()
796
797 def test_message_get_detail_bad(self):
798 self.backend.create_message('a', 'q', 'm', 'test')
799 filters = dict(detail='bad')
800 self.assertRaises(burrow.backend.InvalidArguments,
801 self.backend.get_message, 'a', 'q', 'm', filters)
802 self.delete_messages()
803
804 def test_message_update_detail_all(self):
805 self.backend.create_message('a', 'q', 'm', 'test')
806 attributes = dict(ttl=100, hide=200)
807 filters = dict(detail='all')
808 message = self.backend.update_message('a', 'q', 'm', attributes,
809 filters)
810 self.assertEquals(dict(id='m', ttl=100, hide=200, body='test'),
811 message)
812 self.delete_messages()
813
814 def test_message_update_detail_attributes(self):
815 self.backend.create_message('a', 'q', 'm', 'test')
816 attributes = dict(ttl=100, hide=200)
817 filters = dict(detail='attributes')
818 message = self.backend.update_message('a', 'q', 'm', attributes,
819 filters)
820 self.assertEquals(dict(id='m', ttl=100, hide=200), message)
821 self.delete_messages()
822
823 def test_message_update_detail_body(self):
824 self.backend.create_message('a', 'q', 'm', 'test')
825 attributes = dict(ttl=100, hide=200)
826 filters = dict(detail='body')
827 message = self.backend.update_message('a', 'q', 'm', attributes,
828 filters)
829 self.assertEquals('test', message)
830 self.delete_messages()
831
832 def test_message_update_detail_id(self):
833 self.backend.create_message('a', 'q', 'm', 'test')
834 attributes = dict(ttl=100, hide=200)
835 filters = dict(detail='id')
836 message = self.backend.update_message('a', 'q', 'm', attributes,
837 filters)
838 self.assertEquals('m', message)
839 self.delete_messages()
840
841 def test_message_update_detail_none(self):
842 self.backend.create_message('a', 'q', 'm', 'test')
843 attributes = dict(ttl=100, hide=200)
844 filters = dict(detail='none')
845 message = self.backend.update_message('a', 'q', 'm', attributes,
846 filters)
847 self.assertEquals(None, message)
848 self.delete_messages()
849
850 def test_message_update_detail_bad(self):
851 self.backend.create_message('a', 'q', 'm', 'test')
852 attributes = dict(ttl=100, hide=200)
853 filters = dict(detail='bad')
854 self.assertRaises(burrow.backend.InvalidArguments,
855 self.backend.update_message, 'a', 'q', 'm', attributes, filters)
856 self.delete_messages()
857
858 def test_message_ttl(self):
859 attributes = dict(ttl=1)
860 self.backend.create_message('a', 'q', 'm', 'test', attributes)
861 time.sleep(2)
862 self.backend.clean()
863
864 def test_message_ttl_large(self):
865 attributes = dict(ttl=1)
866 for x in xrange(0, 1000):
867 self.backend.create_message('a', 'q', str(x), str(x), attributes)
868 time.sleep(2)
869 self.backend.clean()
870
871 def test_message_hide(self):
872 attributes = dict(hide=1)
873 self.backend.create_message('a', 'q', 'm', 'test', attributes)
874 time.sleep(2)
875 self.backend.clean()
876 message = self.backend.get_message('a', 'q', 'm')
877 self.assertEquals(dict(id='m', ttl=0, hide=0, body='test'), message)
878 self.delete_messages()
879
880 def test_message_hide_large(self):
881 attributes = dict(hide=1)
882 for x in xrange(0, 1000):
883 self.backend.create_message('a', 'q', str(x), str(x), attributes)
884 time.sleep(2)
885 self.backend.clean()
886 message = self.backend.get_message('a', 'q', '0')
887 self.assertEquals(dict(id='0', ttl=0, hide=0, body='0'), message)
888 self.delete_messages()
889
890 def test_message_create_wait(self):
891 self.success = False
892 thread = eventlet.spawn(self.get_messages)
893 eventlet.spawn_after(0.2,
894 self.backend.create_message, 'a', 'q', 'm', 'test')
895 thread.wait()
896 self.assertTrue(self.success)
897 self.delete_messages()
898
899 def test_message_update_wait(self):
900 attributes = dict(hide=100)
901 self.backend.create_message('a', 'q', 'm', 'test', attributes)
902 self.success = False
903 thread = eventlet.spawn(self.get_messages)
904 attributes = dict(hide=0)
905 eventlet.spawn_after(0.2,
906 self.backend.update_message, 'a', 'q', 'm', attributes)
907 thread.wait()
908 self.assertTrue(self.success)
909 self.delete_messages()
910
911 def test_messages_update_wait(self):
912 attributes = dict(hide=100)
913 self.backend.create_message('a', 'q', 'm', 'test', attributes)
914 self.success = False
915 thread = eventlet.spawn(self.get_messages)
916 attributes = dict(hide=0)
917 filters = dict(match_hidden=True)
918 messages = self.backend.update_messages('a', 'q', attributes, filters)
919 eventlet.spawn_after(0.2, list, messages)
920 thread.wait()
921 self.assertTrue(self.success)
922 self.delete_messages()
923
924 def delete_messages(self):
925 filters = dict(match_hidden=True)
926 messages = list(self.backend.delete_messages('a', 'q', filters))
927 self.assertEquals([], messages)
928
929 def get_messages(self):
930 message = dict(id='m', ttl=0, hide=0, body='test')
931 filters = dict(wait=2)
932 messages = list(self.backend.get_messages('a', 'q', filters))
933 self.assertEquals([message], messages)
934 self.success = True
93550
=== modified file 'test/backend/test_sqlite.py'
--- test/backend/test_sqlite.py 2011-08-09 23:04:39 +0000
+++ test/backend/test_sqlite.py 2011-08-16 21:02:23 +0000
@@ -12,15 +12,17 @@
12# See the License for the specific language governing permissions and12# See the License for the specific language governing permissions and
13# limitations under the License.13# limitations under the License.
1414
15'''Unittests for the sqlite backend.'''
16
15import ConfigParser17import ConfigParser
16import os18import os
1719
18import burrow.backend.sqlite20import burrow.backend.sqlite
19import test.backend.test_memory21import test.backend
2022
2123
22class TestSQLite(test.backend.test_memory.TestMemory):24class SQLiteBase(test.backend.Base):
23 '''Unittests for the memory-based SQLite backend.'''25 '''Base test case for sqlite backend.'''
2426
25 def setUp(self):27 def setUp(self):
26 config = (ConfigParser.ConfigParser(), 'test')28 config = (ConfigParser.ConfigParser(), 'test')
@@ -28,8 +30,28 @@
28 self.check_empty()30 self.check_empty()
2931
3032
31class TestSQLiteFile(test.backend.test_memory.TestMemory):33class TestSQLiteAccounts(SQLiteBase, test.backend.TestAccounts):
32 '''Unittests for the file-based SQLite backend.'''34 '''Test case for accounts with sqlite backend.'''
35 pass
36
37
38class TestSQLiteQueues(SQLiteBase, test.backend.TestQueues):
39 '''Test case for queues with sqlite backend.'''
40 pass
41
42
43class TestSQLiteMessages(SQLiteBase, test.backend.TestMessages):
44 '''Test case for messages with sqlite backend.'''
45 pass
46
47
48class TestSQLiteMessage(SQLiteBase, test.backend.TestMessage):
49 '''Test case for message with sqlite backend.'''
50 pass
51
52
53class SQLiteFileBase(test.backend.Base):
54 '''Base test case for file-based sqlite backend.'''
3355
34 def setUp(self):56 def setUp(self):
35 try:57 try:
@@ -47,3 +69,23 @@
47 def tearDown(self):69 def tearDown(self):
48 self.check_empty()70 self.check_empty()
49 os.unlink('TestSQLiteFile.db')71 os.unlink('TestSQLiteFile.db')
72
73
74class TestSQLiteFileAccounts(SQLiteFileBase, test.backend.TestAccounts):
75 '''Test case for accounts with file-based sqlite backend.'''
76 pass
77
78
79class TestSQLiteFileQueues(SQLiteFileBase, test.backend.TestQueues):
80 '''Test case for queues with file-based sqlite backend.'''
81 pass
82
83
84class TestSQLiteFileMessages(SQLiteFileBase, test.backend.TestMessages):
85 '''Test case for messages with file-based sqlite backend.'''
86 pass
87
88
89class TestSQLiteFileMessage(SQLiteFileBase, test.backend.TestMessage):
90 '''Test case for message with file-based sqlite backend.'''
91 pass

Subscribers

People subscribed via source and target branches