Increase the concurrency of DHT requests to 8.
[quix0rs-apt-p2p.git] / apt_p2p / apt_p2p_conf.py
index 3f17473c9dbe46ce9c9c78ccf744fc9da111faad..98beae7fa237014f39d2372019c6481cf82aaa93 100644 (file)
@@ -23,7 +23,7 @@ class ConfigError(Exception):
     def __str__(self):
         return repr(self.message)
 
-version = versions.Version('apt-p2p', 0, 0, 0)
+version = versions.Version('apt-p2p', 0, 1, 2)
 
 # Set the home parameter
 home = os.path.expandvars('${HOME}')
@@ -71,7 +71,7 @@ DEFAULTS = {
 
     # 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',
+    'KEY_REFRESH': '2.5h',
 
     # The user name to try and run as (leave blank to run as current user)
     'USERNAME': 'apt-p2p',
@@ -97,7 +97,7 @@ DHT_DEFAULTS = {
     
     ### SEARCHING/STORING
     # concurrent xmlrpc calls per find node/value request!
-    'CONCURRENT_REQS': '4',
+    'CONCURRENT_REQS': '8',
     
     # how many hosts to post to
     'STORE_REDUNDANCY': '3',
@@ -121,8 +121,19 @@ DHT_DEFAULTS = {
     'BUCKET_STALENESS': '1h', # one hour
     
     # expire entries older than this
-    'KEY_EXPIRE': '1h', # 60 minutes
+    'KEY_EXPIRE': '3h', # 3 hours
     
+    # Timeout KRPC requests to nodes after this time.
+    'KRPC_TIMEOUT': '9s',
+    
+    # KRPC requests are resent using exponential backoff starting with this delay.
+    # The request will first be resent after the delay set here.
+    # The request will be resent again after twice the delay set here. etc.
+    # e.g. if TIMEOUT is 9 sec., and INITIAL_DELAY is 2 sec., then requests will
+    # be resent at times 0, 2 (2 sec. later), and 6 (4 sec. later), and then will
+    # timeout at 9.
+    'KRPC_INITIAL_DELAY': '2s',
+
     # whether to spew info about the requests/responses in the protocol
     'SPEW': 'no',
 }
@@ -151,7 +162,7 @@ class AptP2PConfigParser(SafeConfigParser):
         if suffix in self.time_multipliers.keys():
             mult = self.time_multipliers[suffix]
             value = value[:-1]
-        return int(value)*mult
+        return int(float(value)*mult)
     
     def getstring(self, section, option):
         """Read the config parameter as a string."""
@@ -197,6 +208,14 @@ class TestConfigParser(unittest.TestCase):
         config.set('DEFAULT', 'time_tester_4', '37s')
         self.failUnless(config.gettime('DEFAULT', 'time_tester_4') == 37)
         
+    def test_floating_time(self):
+        config.set('DEFAULT', 'time_float_tester_1', '2.5d')
+        self.failUnless(config.gettime('DEFAULT', 'time_float_tester_1') == int(2.5*86400))
+        config.set('DEFAULT', 'time_float_tester_2', '0.5h')
+        self.failUnless(config.gettime('DEFAULT', 'time_float_tester_2') == int(0.5*3600))
+        config.set('DEFAULT', 'time_float_tester_3', '4.3333m')
+        self.failUnless(config.gettime('DEFAULT', 'time_float_tester_3') == int(4.3333*60))
+        
     def test_string(self):
         config.set('DEFAULT', 'string_test', 'foobar')
         self.failUnless(type(config.getstring('DEFAULT', 'string_test')) == str)