Add the new stats module to the DHT.
[quix0rs-apt-p2p.git] / test.py
diff --git a/test.py b/test.py
index cfac85b572851815e030689792ed4611fbaabd10..10ca2d6ba3a21d44d011d31becd6d8bda47cfed0 100755 (executable)
--- 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)
@@ -337,15 +337,19 @@ LOCAL_OK = yes
 # 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>.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
 
@@ -367,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
 
@@ -376,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
@@ -573,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
@@ -629,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}.
     
@@ -681,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