X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=test.py;h=10ca2d6ba3a21d44d011d31becd6d8bda47cfed0;hb=94cdf17065ca32cd3a5b486a9a8dad124f962d12;hp=f3a4dbcfd3fd2a3bb4f42fbfb5ce8a7deb32dd63;hpb=8f102eb1964db2ac18d4bac9e399c069a4cb616e;p=quix0rs-apt-p2p.git diff --git a/test.py b/test.py index f3a4dbc..10ca2d6 100755 --- a/test.py +++ b/test.py @@ -1,9 +1,9 @@ #!/usr/bin/env python -"""Automated tests of the apt-dht functionality. +"""Automated tests of the apt-p2p functionality. This script runs several automatic tests of some of the functionality in -the apt-dht program. +the apt-p2p program. @type tests: C{dictionary} @var tests: all of the tests that can be run. @@ -15,11 +15,11 @@ the apt-dht program. The bootstrap nodes keys are integers, which must be in the range 1-9. The values are the dictionary of string formatting values for creating - the apt-dht configuration file (see L{apt_dht_conf_template} below). + the apt-p2p configuration file (see L{apt_p2p_conf_template} below). The downloaders keys are also integers in the range 1-99. The values are - the dictionary of string formatting values for creating the apt-dht - configuration file (see L{apt_dht_conf_template} below). + the dictionary of string formatting values for creating the apt-p2p + configuration file (see L{apt_p2p_conf_template} below). The apt-get commands' list elements are tuples with 2 elements: the downloader to run the command on, and the list of command-line @@ -312,7 +312,7 @@ Debug } """ -apt_dht_conf_template = """ +apt_p2p_conf_template = """ [DEFAULT] # Port to listen on for all requests (TCP and UDP) @@ -332,15 +332,24 @@ CACHE_DIR = %(CACHE_DIR)s # Whether it's OK to use an IP addres from a known local/private range LOCAL_OK = yes +# Unload the packages cache after an interval of inactivity this long. +# The packages cache uses a lot of memory, and only takes a few seconds +# to reload when a new request arrives. +UNLOAD_PACKAGES_CACHE = 5m + +# Refresh the DHT keys after this much time has passed. +# This should be a time slightly less than the DHT's KEY_EXPIRE value. +KEY_REFRESH = 57m + # Which DHT implementation to use. # It must be possile to do "from .DHT import DHT" to get a class that # implements the IDHT interface. -DHT = apt_dht_Khashmir +DHT = apt_p2p_Khashmir # Whether to only run the DHT (for providing only a bootstrap node) DHT-ONLY = %(DHT-ONLY)s -[apt_dht_Khashmir] +[apt_p2p_Khashmir] # bootstrap nodes to contact to join the DHT BOOTSTRAP = %(BOOTSTRAP)s @@ -362,6 +371,14 @@ CONCURRENT_REQS = 4 # how many hosts to post to STORE_REDUNDANCY = 3 +# How many values to attempt to retrieve from the DHT. +# Setting this to 0 will try and get all values (which could take a while if +# a lot of nodes have values). Setting it negative will try to get that +# number of results from only the closest STORE_REDUNDANCY nodes to the hash. +# The default is a large negative number so all values from the closest +# STORE_REDUNDANCY nodes will be retrieved. +RETRIEVE_VALUES = -10000 + # how many times in a row a node can fail to respond before it's booted from the routing table MAX_FAILURES = 3 @@ -371,14 +388,8 @@ MIN_PING_INTERVAL = 15m # refresh buckets that haven't been touched in this long BUCKET_STALENESS = 1h -# time before expirer starts running -KEINITIAL_DELAY = 15s - -# time between expirer runs -KE_DELAY = 20m - # expire entries older than this -KE_AGE = 1h +KEY_EXPIRE = 1h # whether to spew info about the requests/responses in the protocol SPEW = yes @@ -568,7 +579,7 @@ def start_downloader(bootstrap_addresses, num_down, options = {}, @param num_down: the number of the downloader to use @type options: C{dictionary} @param options: the dictionary of string formatting values for creating - the apt-dht configuration file (see L{apt_dht_conf_template} above). + the apt-p2p configuration file (see L{apt_p2p_conf_template} above). (optional, defaults to only using the default arguments) @type mirror: C{string} @param mirror: the Debian mirror to use @@ -624,20 +635,20 @@ def start_downloader(bootstrap_addresses, num_down, options = {}, for k in options: defaults[k] = options[k] - f = open(join([downloader_dir, 'apt-dht.conf']), 'w') - f.write(apt_dht_conf_template % defaults) + f = open(join([downloader_dir, 'apt-p2p.conf']), 'w') + f.write(apt_p2p_conf_template % defaults) f.close() - pid = start('python', [join([sys.path[0], 'apt-dht.py']), - '--config-file=' + join([downloader_dir, 'apt-dht.conf']), - '--log-file=' + join([downloader_dir, 'apt-dht.log']),], + pid = start('python', [join([sys.path[0], 'apt-p2p.py']), + '--config-file=' + join([downloader_dir, 'apt-p2p.conf']), + '--log-file=' + join([downloader_dir, 'apt-p2p.log']),], downloader_dir) return pid def start_bootstrap(bootstrap_addresses, num_boot, options = [], clean = True): """Initialize a new bootstrap node process. - The default arguments specified to the apt-dht invocation are + The default arguments specified to the apt-p2p invocation are the state file and port to use. Any additional arguments needed should be specified by L{options}. @@ -676,13 +687,13 @@ def start_bootstrap(bootstrap_addresses, num_boot, options = [], clean = True): for k in options: defaults[k] = options[k] - f = open(join([bootstrap_dir, 'apt-dht.conf']), 'w') - f.write(apt_dht_conf_template % defaults) + f = open(join([bootstrap_dir, 'apt-p2p.conf']), 'w') + f.write(apt_p2p_conf_template % defaults) f.close() - pid = start('python', [join([sys.path[0], 'apt-dht.py']), - '--config-file=' + join([bootstrap_dir, 'apt-dht.conf']), - '--log-file=' + join([bootstrap_dir, 'apt-dht.log']),], + pid = start('python', [join([sys.path[0], 'apt-p2p.py']), + '--config-file=' + join([bootstrap_dir, 'apt-p2p.conf']), + '--log-file=' + join([bootstrap_dir, 'apt-p2p.log']),], bootstrap_dir) return pid