X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=apt_p2p%2Fapt_p2p_conf.py;h=fe56d7c9c456f7460ae517c38c116e7ff154021c;hb=1b2b271f65329a6bfaf7a5c935b9971834662865;hp=c4ecb93aad214de4fa63227a90bbb89d8392eea6;hpb=ce20dde0bf4440dbb651bae51f85750aa8afdb8e;p=quix0rs-apt-p2p.git diff --git a/apt_p2p/apt_p2p_conf.py b/apt_p2p/apt_p2p_conf.py index c4ecb93..fe56d7c 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,10 @@ 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', + # Directory to store the downloaded files in 'CACHE_DIR': home + '/.apt-p2p/cache', @@ -50,7 +55,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 +68,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', @@ -162,3 +167,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