X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=test.py;h=673d1bc71090e04324d63f4f82ec80871c640698;hb=ef79e4cb347b1fbd7df95dcd717cfb7e3121ae9d;hp=3ccaa14b3947a22d915757c09a7202966f861a16;hpb=c429a67c05afa54e5fe44607e5fe7c09fd35e81a;p=quix0rs-apt-p2p.git diff --git a/test.py b/test.py index 3ccaa14..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 @@ -357,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. @@ -372,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. @@ -387,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 @@ -553,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']) @@ -638,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)