X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=apt_p2p%2Fapt_p2p_conf.py;h=69f6a9c088bbe6641fbeaf9ebda4dabd6cf96750;hb=09472169824fc47c359cdee65652a12a7ba46806;hp=aaf20133aec6794c35d43f045047c4ec9cc7dccc;hpb=7b1167d8ce780312d3689c9309c7e9c64060c085;p=quix0rs-apt-p2p.git diff --git a/apt_p2p/apt_p2p_conf.py b/apt_p2p/apt_p2p_conf.py index aaf2013..69f6a9c 100644 --- a/apt_p2p/apt_p2p_conf.py +++ b/apt_p2p/apt_p2p_conf.py @@ -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 import DHT" to get a class that + # It must be possible to do "from .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