Mercurial > p > roundup > code
annotate test/test_misc.py @ 6565:2c2dbfc332ba
Try to handle multiple connections better.
The session database is a hot spot. When multiple requests (e.g. 20)
come in at the same time session database contention can get great.
The original code didn't retry session database access when the open
failed. This resulted in errors at the client.
The second pass delayed 0.01 seconds and retried. It was better but we
still had multiple second stalls. I think the first request got in,
everybody else backed up and then retried at the same time. Again they
stepped on each other. With logging I would see many counters go all
the way to low single digits or to -1 indicating falure.
This pass uses randomint to generate delays from 0-.125 seconds in 5ms
increments. This performs better in testing. I rarely saw a counter
less than 13 (2 failed retries). Current logging starts after 6
failures and counts down until success or failure.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 16 Dec 2021 20:02:00 -0500 |
| parents | 3b945aee0919 |
| children | 5986ddd0d2e7 |
| rev | line source |
|---|---|
|
5155
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
1 # misc tests |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
2 |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
3 import unittest |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5155
diff
changeset
|
4 import roundup.anypy.cmp_ |
|
5155
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
5 from roundup.cgi.accept_language import parse |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
6 |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
7 class AcceptLanguageTest(unittest.TestCase): |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
8 def testParse(self): |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
9 self.assertEqual(parse("da, en-gb;q=0.8, en;q=0.7"), |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
10 ['da', 'en_gb', 'en']) |
|
6347
3b945aee0919
accept_language parse; fix priority order; preserve insertion order
John Rouillard <rouilj@ieee.org>
parents:
5481
diff
changeset
|
11 self.assertEqual(parse("da, en-gb;q=0.7, en;q=0.8"), |
|
3b945aee0919
accept_language parse; fix priority order; preserve insertion order
John Rouillard <rouilj@ieee.org>
parents:
5481
diff
changeset
|
12 ['da', 'en', 'en_gb']) |
|
5155
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
13 self.assertEqual(parse("en;q=0.2, fr;q=1"), ['fr', 'en']) |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
14 self.assertEqual(parse("zn; q = 0.2 ,pt-br;q =1"), ['pt_br', 'zn']) |
|
6347
3b945aee0919
accept_language parse; fix priority order; preserve insertion order
John Rouillard <rouilj@ieee.org>
parents:
5481
diff
changeset
|
15 self.assertEqual(parse("pt-br;q =1, zn; q = 0.2"), ['pt_br', 'zn']) |
|
3b945aee0919
accept_language parse; fix priority order; preserve insertion order
John Rouillard <rouilj@ieee.org>
parents:
5481
diff
changeset
|
16 self.assertEqual(parse("pt-br,zn;q= 0.1, en-US;q=0.5"), |
|
3b945aee0919
accept_language parse; fix priority order; preserve insertion order
John Rouillard <rouilj@ieee.org>
parents:
5481
diff
changeset
|
17 ['pt_br', 'en_US', 'zn']) |
|
3b945aee0919
accept_language parse; fix priority order; preserve insertion order
John Rouillard <rouilj@ieee.org>
parents:
5481
diff
changeset
|
18 # verify that items with q=1.0 are in same output order as input |
|
3b945aee0919
accept_language parse; fix priority order; preserve insertion order
John Rouillard <rouilj@ieee.org>
parents:
5481
diff
changeset
|
19 self.assertEqual(parse("pt-br,en-US; q=0.5, zn;q= 1.0" ), |
|
3b945aee0919
accept_language parse; fix priority order; preserve insertion order
John Rouillard <rouilj@ieee.org>
parents:
5481
diff
changeset
|
20 ['pt_br', 'zn', 'en_US']) |
|
3b945aee0919
accept_language parse; fix priority order; preserve insertion order
John Rouillard <rouilj@ieee.org>
parents:
5481
diff
changeset
|
21 self.assertEqual(parse("zn;q=1.0;q= 1.0,pt-br,en-US; q=0.5" ), |
|
3b945aee0919
accept_language parse; fix priority order; preserve insertion order
John Rouillard <rouilj@ieee.org>
parents:
5481
diff
changeset
|
22 ['zn', 'pt_br', 'en_US']) |
|
5155
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
23 self.assertEqual(parse("es-AR"), ['es_AR']) |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
24 self.assertEqual(parse("es-es-cat"), ['es_es_cat']) |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
25 self.assertEqual(parse(""), []) |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
26 self.assertEqual(parse(None),[]) |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
27 self.assertEqual(parse(" "), []) |
|
e1e3531b4d9b
add tests for roundup/cgi/accept_language.py copied from embedded doctests already in file.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
28 self.assertEqual(parse("en,"), ['en']) |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5155
diff
changeset
|
29 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5155
diff
changeset
|
30 class CmpTest(unittest.TestCase): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5155
diff
changeset
|
31 def testCmp(self): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5155
diff
changeset
|
32 roundup.anypy.cmp_._test() |
