X-Git-Url: https://git.mxchange.org/?p=quix0rs-apt-p2p.git;a=blobdiff_plain;f=test.py;h=673d1bc71090e04324d63f4f82ec80871c640698;hp=acbeeae50c808ae7d47144aae2276e4ffe447752;hb=458fed367aab6b449d6a59d992fa164f7cc6579d;hpb=bb608b26926f9a1db5f4c8583ed7a37e6f5a6b25 diff --git a/test.py b/test.py index acbeeae..673d1bc 100755 --- a/test.py +++ b/test.py @@ -264,6 +264,64 @@ tests = {'1': ('Start a single bootstrap and downloader, test updating and downl (6, ['install', 'kde-icons-oxygen']), ]), + 'a': ('Test pipelining and caching, can also interrupt or restart to test resuming.', + {1: {'clean': False}}, + {1: {'clean': False}, + 2: {'clean': False}}, + [(1, ['install', 'aboot-base', 'aap-doc', 'ada-reference-manual', + 'aspectj-doc', 'fop-doc', 'asis-doc', + 'bison-doc', 'crash-whitepaper', + 'bash-doc', 'apt-howto-common', 'autotools-dev', + 'aptitude-doc-en', 'asr-manpages', + 'atomix-data', 'alcovebook-sgml-doc', + 'afbackup-common', 'airstrike-common', + ]), + (1, ['update']), + (1, ['update']), + (1, ['install', 'aboot-base', 'aap-doc', 'ada-reference-manual', + 'aspectj-doc', 'fop-doc', 'asis-doc', + 'bison-doc', 'crash-whitepaper', + 'bash-doc', 'apt-howto-common', 'autotools-dev', + 'aptitude-doc-en', 'asr-manpages', + 'atomix-data', 'alcovebook-sgml-doc', + 'afbackup-common', 'airstrike-common', + ]), + (1, ['install', 'aboot-base', 'aap-doc', 'ada-reference-manual', + 'aspectj-doc', 'fop-doc', 'asis-doc', + 'bison-doc', 'crash-whitepaper', + 'bash-doc', 'apt-howto-common', 'autotools-dev', + 'aptitude-doc-en', 'asr-manpages', + 'atomix-data', 'alcovebook-sgml-doc', + 'afbackup-common', 'airstrike-common', + ]), + (2, ['install', 'aboot-base', 'aap-doc', 'ada-reference-manual', + 'aspectj-doc', 'fop-doc', 'asis-doc', + 'bison-doc', 'crash-whitepaper', + 'bash-doc', 'apt-howto-common', 'autotools-dev', + 'aptitude-doc-en', 'asr-manpages', + 'atomix-data', 'alcovebook-sgml-doc', + 'afbackup-common', 'airstrike-common', + ]), + (2, ['update']), + (2, ['update']), + (2, ['install', 'aboot-base', 'aap-doc', 'ada-reference-manual', + 'aspectj-doc', 'fop-doc', 'asis-doc', + 'bison-doc', 'crash-whitepaper', + 'bash-doc', 'apt-howto-common', 'autotools-dev', + 'aptitude-doc-en', 'asr-manpages', + 'atomix-data', 'alcovebook-sgml-doc', + 'afbackup-common', 'airstrike-common', + ]), + (2, ['install', 'aboot-base', 'aap-doc', 'ada-reference-manual', + 'aspectj-doc', 'fop-doc', 'asis-doc', + 'bison-doc', 'crash-whitepaper', + 'bash-doc', 'apt-howto-common', 'autotools-dev', + 'aptitude-doc-en', 'asr-manpages', + 'atomix-data', 'alcovebook-sgml-doc', + 'afbackup-common', 'airstrike-common', + ]), + ]), + } assert 'all' not in tests @@ -343,6 +401,12 @@ PORT = %(PORT)s # Set this to 0 to not limit the upload bandwidth. UPLOAD_LIMIT = 100 +# 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 = %(CACHE_DIR)s @@ -351,12 +415,12 @@ CACHE_DIR = %(CACHE_DIR)s # for everybody to download # OTHER_DIRS = -# User name to try and run as -# USERNAME = - # Whether it's OK to use an IP addres from a known local/private range LOCAL_OK = yes +# Whether a remote peer can access the statistics page +REMOTE_STATS = yes + # Unload the packages cache after an interval of inactivity this long. # The packages cache uses a lot of memory, and only takes a few seconds # to reload when a new request arrives. @@ -366,6 +430,9 @@ UNLOAD_PACKAGES_CACHE = 5m # This should be a time slightly less than the DHT's KEY_EXPIRE value. KEY_REFRESH = 57m +# The user name to try and run as (leave blank to run as current user) +USERNAME = + # Which DHT implementation to use. # It must be possile to do "from .DHT import DHT" to get a class that # implements the IDHT interface. @@ -381,12 +448,6 @@ BOOTSTRAP = %(BOOTSTRAP)s # whether this node is a bootstrap node BOOTSTRAP_NODE = %(BOOTSTRAP_NODE)s -# Kademlia "K" constant, this should be an even number -K = 8 - -# SHA1 is 160 bits long -HASH_LENGTH = 160 - # checkpoint every this many seconds CHECKPOINT_INTERVAL = 5m @@ -547,6 +608,10 @@ def apt_get(num_down, cmd): """ + downloader_dir = down_dir(num_down) + rmrf(join([downloader_dir, 'var', 'cache', 'apt', 'archives'])) + makedirs([downloader_dir, 'var', 'cache', 'apt', 'archives', 'partial']) + print '*************** apt-get (' + str(num_down) + ') ' + ' '.join(cmd) + ' ****************' apt_conf = join([down_dir(num_down), 'etc', 'apt', 'apt.conf']) dpkg_status = join([down_dir(num_down), 'var', 'lib', 'dpkg', 'status']) @@ -632,21 +697,24 @@ def start_downloader(bootstrap_addresses, num_down, options = {}, except: pass - # Create the directory structure needed by apt - makedirs([downloader_dir, 'etc', 'apt', 'apt.conf.d']) - makedirs([downloader_dir, 'var', 'lib', 'apt', 'lists', 'partial']) - makedirs([downloader_dir, 'var', 'lib', 'dpkg']) - makedirs([downloader_dir, 'var', 'cache', 'apt', 'archives', 'partial']) - touch([downloader_dir, 'var', 'lib', 'apt', 'lists', 'lock']) - touch([downloader_dir, 'var', 'lib', 'dpkg', 'lock']) - touch([downloader_dir, 'var', 'lib', 'dpkg', 'status']) - touch([downloader_dir, 'var', 'cache', 'apt', 'archives', 'lock']) - + # Create the directory structure needed by apt + makedirs([downloader_dir, 'etc', 'apt', 'apt.conf.d']) + makedirs([downloader_dir, 'var', 'lib', 'apt', 'lists', 'partial']) + makedirs([downloader_dir, 'var', 'lib', 'dpkg']) + rmrf(join([downloader_dir, 'var', 'cache', 'apt', 'archives'])) + makedirs([downloader_dir, 'var', 'cache', 'apt', 'archives', 'partial']) + touch([downloader_dir, 'var', 'lib', 'apt', 'lists', 'lock']) + touch([downloader_dir, 'var', 'lib', 'dpkg', 'lock']) + touch([downloader_dir, 'var', 'lib', 'dpkg', 'status']) + touch([downloader_dir, 'var', 'cache', 'apt', 'archives', 'lock']) + + if not exists(join([downloader_dir, 'etc', 'apt', 'sources.list'])): # Create apt's config files f = open(join([downloader_dir, 'etc', 'apt', 'sources.list']), 'w') f.write('deb http://localhost:1%02d77/%s/ unstable %s\n' % (num_down, mirror, suites)) f.close() + if not exists(join([downloader_dir, 'etc', 'apt', 'apt.conf'])): f = open(join([downloader_dir, 'etc', 'apt', 'apt.conf']), 'w') f.write('Dir "' + downloader_dir + '"') f.write(apt_conf_template)