]> git.mxchange.org Git - quix0rs-apt-p2p.git/blobdiff - apt_p2p/apt_p2p_conf.py
Save the files downloaded from peers in a peers subdirectory.
[quix0rs-apt-p2p.git] / apt_p2p / apt_p2p_conf.py
index aaf20133aec6794c35d43f045047c4ec9cc7dccc..69f6a9c088bbe6641fbeaf9ebda4dabd6cf96750 100644 (file)
@@ -14,6 +14,7 @@ import os, sys
 from ConfigParser import SafeConfigParser
 
 from twisted.python import log, versions
+from twisted.trial import unittest
 
 class ConfigError(Exception):
     """Errors that occur in the loading of configuration variables."""
@@ -39,6 +40,16 @@ DEFAULTS = {
     # Port to listen on for all requests (TCP and UDP)
     'PORT': '9977',
     
+    # The rate to limit sending data to peers to, in KBytes/sec.
+    # Set this to 0 to not limit the upload bandwidth.
+    'UPLOAD_LIMIT': '0',
+
+    # The minimum number of peers before the mirror is not used.
+    # If there are fewer peers than this for a file, the mirror will also be
+    # used to speed up the download. Set to 0 to never use the mirror if
+    # there are peers.
+    'MIN_DOWNLOAD_PEERS': '3',
+
     # Directory to store the downloaded files in
     'CACHE_DIR': home + '/.apt-p2p/cache',
     
@@ -50,7 +61,7 @@ DEFAULTS = {
     # User name to try and run as
     'USERNAME': '',
     
-    # Whether it's OK to use an IP addres from a known local/private range
+    # Whether it's OK to use an IP address from a known local/private range
     'LOCAL_OK': 'no',
 
     # Unload the packages cache after an interval of inactivity this long.
@@ -63,7 +74,7 @@ DEFAULTS = {
     'KEY_REFRESH': '57m',
 
     # Which DHT implementation to use.
-    # It must be possile to do "from <DHT>.DHT import DHT" to get a class that
+    # It must be possible to do "from <DHT>.DHT import DHT" to get a class that
     # implements the IDHT interface.
     'DHT': 'apt_p2p_Khashmir',
 
@@ -73,8 +84,7 @@ DEFAULTS = {
 
 DHT_DEFAULTS = {
     # bootstrap nodes to contact to join the DHT
-    'BOOTSTRAP': """www.camrdale.org:9977
-        steveholt.hopto.org:9976""",
+    'BOOTSTRAP': """www.camrdale.org:9977""",
     
     # whether this node is a bootstrap node
     'BOOTSTRAP_NODE': "no",
@@ -163,3 +173,46 @@ config = AptP2PConfigParser(DEFAULTS)
 config.add_section(config.get('DEFAULT', 'DHT'))
 for k in DHT_DEFAULTS:
     config.set(config.get('DEFAULT', 'DHT'), k, DHT_DEFAULTS[k])
+
+class TestConfigParser(unittest.TestCase):
+    """Unit tests for the config parser."""
+
+    def test_uppercase(self):
+        config.set('DEFAULT', 'case_tester', 'foo')
+        self.failUnless(config.get('DEFAULT', 'CASE_TESTER') == 'foo')
+        self.failUnless(config.get('DEFAULT', 'case_tester') == 'foo')
+        config.set('DEFAULT', 'TEST_CASE', 'bar')
+        self.failUnless(config.get('DEFAULT', 'TEST_CASE') == 'bar')
+        self.failUnless(config.get('DEFAULT', 'test_case') == 'bar')
+        config.set('DEFAULT', 'FINAL_test_CASE', 'foobar')
+        self.failUnless(config.get('DEFAULT', 'FINAL_TEST_CASE') == 'foobar')
+        self.failUnless(config.get('DEFAULT', 'final_test_case') == 'foobar')
+        self.failUnless(config.get('DEFAULT', 'FINAL_test_CASE') == 'foobar')
+        self.failUnless(config.get('DEFAULT', 'final_TEST_case') == 'foobar')
+    
+    def test_time(self):
+        config.set('DEFAULT', 'time_tester_1', '2d')
+        self.failUnless(config.gettime('DEFAULT', 'time_tester_1') == 2*86400)
+        config.set('DEFAULT', 'time_tester_2', '3h')
+        self.failUnless(config.gettime('DEFAULT', 'time_tester_2') == 3*3600)
+        config.set('DEFAULT', 'time_tester_3', '4m')
+        self.failUnless(config.gettime('DEFAULT', 'time_tester_3') == 4*60)
+        config.set('DEFAULT', 'time_tester_4', '37s')
+        self.failUnless(config.gettime('DEFAULT', 'time_tester_4') == 37)
+        
+    def test_string(self):
+        config.set('DEFAULT', 'string_test', 'foobar')
+        self.failUnless(type(config.getstring('DEFAULT', 'string_test')) == str)
+        self.failUnless(config.getstring('DEFAULT', 'string_test') == 'foobar')
+
+    def test_stringlist(self):
+        config.set('DEFAULT', 'stringlist_test', """foo
+        bar   
+        foobar  """)
+        l = config.getstringlist('DEFAULT', 'stringlist_test')
+        self.failUnless(type(l) == list)
+        self.failUnless(len(l) == 3)
+        self.failUnless(l[0] == 'foo')
+        self.failUnless(l[1] == 'bar')
+        self.failUnless(l[2] == 'foobar')
+        
\ No newline at end of file