support running tests for different branches. assume regression_tests is a shared folder

This commit is contained in:
Arvid Norberg 2013-06-17 01:30:45 +00:00
parent 1774e989f0
commit 311249c948
4 changed files with 23 additions and 15 deletions

View File

@ -4,6 +4,9 @@ test_dirs:
project: project:
libtorrent libtorrent
branch:
trunk
features: features:
- variant=release asserts=production - variant=release asserts=production
- statistics=on logging=verbose disk-stats=on bandwidth-limit-logging=on dht=logging - statistics=on logging=verbose disk-stats=on bandwidth-limit-logging=on dht=logging

View File

@ -68,9 +68,14 @@ except:
print '.regression.yml not found in current directory' print '.regression.yml not found in current directory'
sys.exit(1) sys.exit(1)
cfg = yaml.load(cfg.read()) cfg = yaml.load(cfg.read())
if 'project' in cfg: if 'project' in cfg:
project_name = cfg['project'] project_name = cfg['project']
branch_name = 'trunk'
if 'branch' in cfg:
branch_name = cfg['branch']
os.chdir('regression_tests') os.chdir('regression_tests')
def modification_time(file): def modification_time(file):
@ -84,9 +89,11 @@ index_mtime = modification_time('index.html')
latest_rev = 0 latest_rev = 0
for rev in os.listdir('.'): for rev in os.listdir('.'):
try: try:
r = int(rev) if not rev.startswith('%s-', branch_name): continue
r = int(rev[len(branch_name)+1:])
if r > latest_rev: latest_rev = r if r > latest_rev: latest_rev = r
except: pass except: pass
@ -94,7 +101,7 @@ if latest_rev == 0:
print 'no test files found' print 'no test files found'
sys.exit(1) sys.exit(1)
rev_dir = '%d' % latest_rev rev_dir = '%s-%d' % (branch_name, latest_rev)
need_refresh = False need_refresh = False

View File

@ -33,12 +33,11 @@ def svn_up(revision):
os.system('svn up %d' % revision) os.system('svn up %d' % revision)
def print_usage(): def print_usage():
print '''usage: run_regression_tests.py remote-path [options] toolset [toolset...] print '''usage: run_regression_tests.py [options] toolset [toolset...]
toolset are bjam toolsets. For instance clang, gcc, darwin, msvc etc. toolset are bjam toolsets. For instance clang, gcc, darwin, msvc etc.
remote-path is an scp path where the results are copied. This path has The path "./regression_tests" is expected to be a shared folder
the form: user@hostname:/path between all testsers.
if the remote-path is set to "-", no copying will be done
options: options:
@ -47,8 +46,6 @@ options:
def loop(): def loop():
remote_path = sys.argv[1]
root_path = os.path.join(os.getcwd(), 'regression_tests')
if len(sys.argv) < 3: if len(sys.argv) < 3:
print_usage() print_usage()
@ -64,10 +61,7 @@ def loop():
print '\n\nREVISION %d ===\n' % r print '\n\nREVISION %d ===\n' % r
svn_up(r) svn_up(r)
run_tests.main(sys.argv[2:]) run_tests.main(sys.argv[1:])
if remote_path != '-':
os.system('scp -r %s %s' % (os.path.join(root_path, '%d' % r), remote_path))
time.sleep(120) time.sleep(120)

View File

@ -196,6 +196,10 @@ def main(argv):
else: else:
configs = [['']] configs = [['']]
branch_name = 'trunk'
if 'branch' in cfg:
branch_name = cfg['branch']
architecture = platform.machine() architecture = platform.machine()
build_platform = platform.system() + '-' + platform.release() build_platform = platform.system() + '-' + platform.release()
@ -205,7 +209,7 @@ def main(argv):
tester_pool = Pool(processes=num_processes) tester_pool = Pool(processes=num_processes)
print '%d - %s - %s' % (revision, author, timestamp) print '%s-%d - %s - %s' % (branch_name, revision, author, timestamp)
print 'toolsets: %s' % ' '.join(toolsets) print 'toolsets: %s' % ' '.join(toolsets)
# print 'configs: %s' % '|'.join(configs) # print 'configs: %s' % '|'.join(configs)
@ -216,12 +220,12 @@ def main(argv):
rev_dir = os.path.join(current_dir, 'regression_tests') rev_dir = os.path.join(current_dir, 'regression_tests')
try: os.mkdir(rev_dir) try: os.mkdir(rev_dir)
except: pass except: pass
rev_dir = os.path.join(rev_dir, '%d' % revision) rev_dir = os.path.join(rev_dir, '%s-%d' % (branch_name, revision))
try: os.mkdir(rev_dir) try: os.mkdir(rev_dir)
except: pass except: pass
for test_dir in test_dirs: for test_dir in test_dirs:
print 'running tests from "%s"' % test_dir print 'running tests from "%s" in %s' % (test_dir, branch_name)
os.chdir(test_dir) os.chdir(test_dir)
test_dir = os.getcwd() test_dir = os.getcwd()