tests/test-hgwebdir-gc.py
branchstable
changeset 48315 a44bb185f6bd
parent 47802 de2e04fe4897
child 48875 6000f5b25c9b
equal deleted inserted replaced
48314:6f43569729d4 48315:a44bb185f6bd
       
     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