Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/certbot/certbot.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBrad Warren <bmw@users.noreply.github.com>2020-08-20 04:26:28 +0300
committerGitHub <noreply@github.com>2020-08-20 04:26:28 +0300
commit085967ad293343a68f925bfd66402a991676a0ae (patch)
tree4078421242ea67d45d569bdc095c363d540eb478 /tests
parent4e9d3afcc4104fc646c37899efc41cc4e62e5e09 (diff)
Fix test farm tests on macOS and update macOS images (#8219)
* Run one of the test farm tests on macOS. * it break with 38? * Remove LOGDIR global * add comment * include macOS in name * Update macOS image.
Diffstat (limited to 'tests')
-rw-r--r--tests/letstest/multitester.py82
1 files changed, 42 insertions, 40 deletions
diff --git a/tests/letstest/multitester.py b/tests/letstest/multitester.py
index 5ed5ae549..dc070b950 100644
--- a/tests/letstest/multitester.py
+++ b/tests/letstest/multitester.py
@@ -99,7 +99,6 @@ PROFILE = None if cl_args.aws_profile == 'SET_BY_ENV' else cl_args.aws_profile
# Globals
#-------------------------------------------------------------------------------
BOULDER_AMI = 'ami-072a9534772bec854' # premade shared boulder AMI 18.04LTS us-east-1
-LOGDIR = "letest-%d"%int(time.time()) #points to logging / working directory
SECURITY_GROUP_NAME = 'certbot-security-group'
SENTINEL = None #queue kill signal
SUBNET_NAME = 'certbot-subnet'
@@ -233,43 +232,43 @@ def block_until_instance_ready(booting_instance, wait_time=5, extra_wait_time=20
# Fabric Routines
#-------------------------------------------------------------------------------
-def local_git_clone(local_cxn, repo_url):
+def local_git_clone(local_cxn, repo_url, log_dir):
"""clones master of repo_url"""
- local_cxn.local('cd %s && if [ -d letsencrypt ]; then rm -rf letsencrypt; fi' % LOGDIR)
- local_cxn.local('cd %s && git clone %s letsencrypt'% (LOGDIR, repo_url))
- local_cxn.local('cd %s && tar czf le.tar.gz letsencrypt'% LOGDIR)
+ local_cxn.local('cd %s && if [ -d letsencrypt ]; then rm -rf letsencrypt; fi' % log_dir)
+ local_cxn.local('cd %s && git clone %s letsencrypt'% (log_dir, repo_url))
+ local_cxn.local('cd %s && tar czf le.tar.gz letsencrypt'% log_dir)
-def local_git_branch(local_cxn, repo_url, branch_name):
+def local_git_branch(local_cxn, repo_url, branch_name, log_dir):
"""clones branch <branch_name> of repo_url"""
- local_cxn.local('cd %s && if [ -d letsencrypt ]; then rm -rf letsencrypt; fi' % LOGDIR)
+ local_cxn.local('cd %s && if [ -d letsencrypt ]; then rm -rf letsencrypt; fi' % log_dir)
local_cxn.local('cd %s && git clone %s letsencrypt --branch %s --single-branch'%
- (LOGDIR, repo_url, branch_name))
- local_cxn.local('cd %s && tar czf le.tar.gz letsencrypt' % LOGDIR)
+ (log_dir, repo_url, branch_name))
+ local_cxn.local('cd %s && tar czf le.tar.gz letsencrypt' % log_dir)
-def local_git_PR(local_cxn, repo_url, PRnumstr, merge_master=True):
+def local_git_PR(local_cxn, repo_url, PRnumstr, log_dir, merge_master=True):
"""clones specified pull request from repo_url and optionally merges into master"""
- local_cxn.local('cd %s && if [ -d letsencrypt ]; then rm -rf letsencrypt; fi' % LOGDIR)
- local_cxn.local('cd %s && git clone %s letsencrypt' % (LOGDIR, repo_url))
+ local_cxn.local('cd %s && if [ -d letsencrypt ]; then rm -rf letsencrypt; fi' % log_dir)
+ local_cxn.local('cd %s && git clone %s letsencrypt' % (log_dir, repo_url))
local_cxn.local('cd %s && cd letsencrypt && '
- 'git fetch origin pull/%s/head:lePRtest' % (LOGDIR, PRnumstr))
- local_cxn.local('cd %s && cd letsencrypt && git checkout lePRtest' % LOGDIR)
+ 'git fetch origin pull/%s/head:lePRtest' % (log_dir, PRnumstr))
+ local_cxn.local('cd %s && cd letsencrypt && git checkout lePRtest' % log_dir)
if merge_master:
- local_cxn.local('cd %s && cd letsencrypt && git remote update origin' % LOGDIR)
+ local_cxn.local('cd %s && cd letsencrypt && git remote update origin' % log_dir)
local_cxn.local('cd %s && cd letsencrypt && '
- 'git merge origin/master -m "testmerge"' % LOGDIR)
- local_cxn.local('cd %s && tar czf le.tar.gz letsencrypt' % LOGDIR)
+ 'git merge origin/master -m "testmerge"' % log_dir)
+ local_cxn.local('cd %s && tar czf le.tar.gz letsencrypt' % log_dir)
-def local_repo_to_remote(cxn):
+def local_repo_to_remote(cxn, log_dir):
"""copies local tarball of repo to remote"""
filename = 'le.tar.gz'
- local_path = os.path.join(LOGDIR, filename)
+ local_path = os.path.join(log_dir, filename)
cxn.put(local=local_path, remote='')
cxn.run('tar xzf %s' % filename)
-def local_repo_clean(local_cxn):
+def local_repo_clean(local_cxn, log_dir):
"""delete tarball"""
filename = 'le.tar.gz'
- local_path = os.path.join(LOGDIR, filename)
+ local_path = os.path.join(log_dir, filename)
local_cxn.local('rm %s' % local_path)
def deploy_script(cxn, scriptpath, *args):
@@ -289,8 +288,8 @@ def config_and_launch_boulder(cxn, instance):
deploy_script(cxn, 'scripts/boulder_config.sh')
run_boulder(cxn)
-def install_and_launch_certbot(cxn, instance, boulder_url, target):
- local_repo_to_remote(cxn)
+def install_and_launch_certbot(cxn, instance, boulder_url, target, log_dir):
+ local_repo_to_remote(cxn, log_dir)
# This needs to be like this, I promise. 1) The env argument to run doesn't work.
# See https://github.com/fabric/fabric/issues/1744. 2) prefix() sticks an && between
# the commands, so it needs to be exports rather than no &&s in between for the script subshell.
@@ -339,7 +338,7 @@ def create_client_instance(ec2_client, target, security_group_id, subnet_id):
userdata=userdata)
-def test_client_process(fab_config, inqueue, outqueue, boulder_url):
+def test_client_process(fab_config, inqueue, outqueue, boulder_url, log_dir):
cur_proc = mp.current_process()
for inreq in iter(inqueue.get, SENTINEL):
ii, instance_id, target = inreq
@@ -351,7 +350,7 @@ def test_client_process(fab_config, inqueue, outqueue, boulder_url):
instance = ec2_client.Instance(id=instance_id)
#save all stdout to log file
- sys.stdout = open(LOGDIR+'/'+'%d_%s.log'%(ii,target['name']), 'w')
+ sys.stdout = open(log_dir+'/'+'%d_%s.log'%(ii,target['name']), 'w')
print("[%s : client %d %s %s]" % (cur_proc.name, ii, target['ami'], target['name']))
instance = block_until_instance_ready(instance)
@@ -361,7 +360,7 @@ def test_client_process(fab_config, inqueue, outqueue, boulder_url):
with Connection(host_string, config=fab_config) as cxn:
try:
- install_and_launch_certbot(cxn, instance, boulder_url, target)
+ install_and_launch_certbot(cxn, instance, boulder_url, target, log_dir)
outqueue.put((ii, target, Status.PASS))
print("%s - %s SUCCESS"%(target['ami'], target['name']))
except:
@@ -380,8 +379,8 @@ def test_client_process(fab_config, inqueue, outqueue, boulder_url):
pass
-def cleanup(cl_args, instances, targetlist, boulder_server):
- print('Logs in ', LOGDIR)
+def cleanup(cl_args, instances, targetlist, boulder_server, log_dir):
+ print('Logs in ', log_dir)
# If lengths of instances and targetlist aren't equal, instances failed to
# start before running tests so leaving instances running for debugging
# isn't very useful. Let's cleanup after ourselves instead.
@@ -418,22 +417,24 @@ def main():
# Set up local copy of git repo
#-------------------------------------------------------------------------------
- print("Making local dir for test repo and logs: %s"%LOGDIR)
- local_cxn.local('mkdir %s'%LOGDIR)
+ log_dir = "letest-%d"%int(time.time()) #points to logging / working directory
+ print("Making local dir for test repo and logs: %s"%log_dir)
+ local_cxn.local('mkdir %s'%log_dir)
try:
- # figure out what git object to test and locally create it in LOGDIR
+ # figure out what git object to test and locally create it in log_dir
print("Making local git repo")
if cl_args.pull_request != '~':
print('Testing PR %s ' % cl_args.pull_request,
"MERGING into master" if cl_args.merge_master else "")
- local_git_PR(local_cxn, cl_args.repo, cl_args.pull_request, cl_args.merge_master)
+ local_git_PR(local_cxn, cl_args.repo, cl_args.pull_request, log_dir,
+ cl_args.merge_master)
elif cl_args.branch != '~':
print('Testing branch %s of %s' % (cl_args.branch, cl_args.repo))
- local_git_branch(local_cxn, cl_args.repo, cl_args.branch)
+ local_git_branch(local_cxn, cl_args.repo, cl_args.branch, log_dir)
else:
- print('Testing current branch of %s' % cl_args.repo)
- local_git_clone(local_cxn, cl_args.repo)
+ print('Testing current branch of %s' % cl_args.repo, log_dir)
+ local_git_clone(local_cxn, cl_args.repo, log_dir)
except BaseException:
print("FAIL: trouble with git repo")
traceback.print_exc()
@@ -537,7 +538,7 @@ def main():
# Install and launch client scripts in parallel
#-------------------------------------------------------------------------------
print("Uploading and running test script in parallel: %s"%cl_args.test_script)
- print("Output routed to log files in %s"%LOGDIR)
+ print("Output routed to log files in %s"%log_dir)
# (Advice: always use Manager.Queue, never regular multiprocessing.Queue
# the latter has implementation flaws that deadlock it in some circumstances)
manager = Manager()
@@ -550,8 +551,9 @@ def main():
# initiate process execution
+ client_process_args=(fab_config, inqueue, outqueue, boulder_url, log_dir)
for i in range(num_processes):
- p = mp.Process(target=test_client_process, args=(fab_config, inqueue, outqueue, boulder_url))
+ p = mp.Process(target=test_client_process, args=client_process_args)
jobs.append(p)
p.daemon = True # kills subprocesses if parent is killed
p.start()
@@ -575,10 +577,10 @@ def main():
outqueue.put(SENTINEL)
# clean up
- local_repo_clean(local_cxn)
+ local_repo_clean(local_cxn, log_dir)
# print and save summary results
- results_file = open(LOGDIR+'/results', 'w')
+ results_file = open(log_dir+'/results', 'w')
outputs = [outq for outq in iter(outqueue.get, SENTINEL)]
outputs.sort(key=lambda x: x[0])
failed = False
@@ -600,7 +602,7 @@ def main():
sys.exit(1)
finally:
- cleanup(cl_args, instances, targetlist, boulder_server)
+ cleanup(cl_args, instances, targetlist, boulder_server, log_dir)
if __name__ == '__main__':