|
1 from __future__ import absolute_import |
|
2 |
|
3 import os |
|
4 from mercurial.hgweb import hgwebdir_mod |
|
5 |
|
6 hgwebdir = hgwebdir_mod.hgwebdir |
|
7 |
|
8 os.mkdir(b'webdir') |
|
9 os.chdir(b'webdir') |
|
10 |
|
11 webdir = os.path.realpath(b'.') |
|
12 |
|
13 |
|
14 def trivial_response(req, res): |
|
15 return [] |
|
16 |
|
17 |
|
18 def make_hgwebdir(gc_rate=None): |
|
19 config = os.path.join(webdir, b'hgwebdir.conf') |
|
20 with open(config, 'wb') as configfile: |
|
21 configfile.write(b'[experimental]\n') |
|
22 if gc_rate is not None: |
|
23 configfile.write(b'web.full-garbage-collection-rate=%d\n' % gc_rate) |
|
24 hg_wd = hgwebdir(config) |
|
25 hg_wd._runwsgi = trivial_response |
|
26 return hg_wd |
|
27 |
|
28 |
|
29 def process_requests(webdir_instance, number): |
|
30 # we don't care for now about passing realistic arguments |
|
31 for _ in range(number): |
|
32 for chunk in webdir_instance.run_wsgi(None, None): |
|
33 pass |
|
34 |
|
35 |
|
36 without_gc = make_hgwebdir(gc_rate=0) |
|
37 process_requests(without_gc, 5) |
|
38 assert without_gc.requests_count == 5 |
|
39 assert without_gc.gc_full_collections_done == 0 |
|
40 |
|
41 with_gc = make_hgwebdir(gc_rate=2) |
|
42 process_requests(with_gc, 5) |
|
43 assert with_gc.requests_count == 5 |
|
44 assert with_gc.gc_full_collections_done == 2 |
|
45 |
|
46 with_systematic_gc = make_hgwebdir() # default value of the setting |
|
47 process_requests(with_systematic_gc, 3) |
|
48 assert with_systematic_gc.requests_count == 3 |
|
49 assert with_systematic_gc.gc_full_collections_done == 3 |