From 28c17c0eb2c49b58007d355c2046c4dda3cb2220 Mon Sep 17 00:00:00 2001 From: Rene Milk <rene.milk@wwu.de> Date: Thu, 27 Oct 2016 15:52:04 +0200 Subject: [PATCH] move test distribution script to dune-xt and pickle files to test dir --- cmake/scripts/compiles_totals.pickle | Bin 5523 -> 0 bytes cmake/scripts/distribute_testing.py | 128 --------------------------- cmake/scripts/testruns_totals.pickle | Bin 10155 -> 0 bytes dune/gdt/test/CMakeLists.txt | 10 +-- dune/gdt/test/compiles_totals.pickle | Bin 0 -> 5523 bytes dune/gdt/test/testruns_totals.pickle | Bin 0 -> 10155 bytes 6 files changed, 1 insertion(+), 137 deletions(-) delete mode 100644 cmake/scripts/compiles_totals.pickle delete mode 100644 cmake/scripts/distribute_testing.py delete mode 100644 cmake/scripts/testruns_totals.pickle create mode 100644 dune/gdt/test/compiles_totals.pickle create mode 100644 dune/gdt/test/testruns_totals.pickle diff --git a/cmake/scripts/compiles_totals.pickle b/cmake/scripts/compiles_totals.pickle deleted file mode 100644 index 754e4db1b7d1c7b99480d3829664b2c115ff0f40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5523 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 diff --git a/cmake/scripts/distribute_testing.py b/cmake/scripts/distribute_testing.py deleted file mode 100644 index 9e93d4d80..000000000 --- a/cmake/scripts/distribute_testing.py +++ /dev/null @@ -1,128 +0,0 @@ -#!/usr/bin/env python3 - -import os -import pickle -import sys -from pprint import pprint -import subprocess -import time -from contextlib import contextmanager -import binpacking -from multiprocessing import Pool, cpu_count - - -MAXTIME = 8*60 -pickle_file = 'totals.pickle' - - -@contextmanager -def elapsed_timer(): - clock = time.time - start = clock() - elapser = lambda: clock() - start - yield lambda: elapser() - end = clock() - elapser = lambda: end-start - - -def _compile(binary): - with elapsed_timer() as timer: - try: - _ = subprocess.check_output(['ninja', '-j1', binary], universal_newlines=True, stderr=subprocess.STDOUT) - except subprocess.CalledProcessError as cpe: - if 'Timeout' not in cpe.output: - raise cpe - print('Timeout in compile {}'.format(binary)) - return timer() - - -def _run_tests(tpl): - binary, teststrings = tpl - testtimes = 0 - for test in teststrings.split(';'): - with elapsed_timer() as timer: - try: - _ = subprocess.check_output(['ctest', '-j1', '-N', '-R', test], universal_newlines=True, - stderr=subprocess.STDOUT) - except subprocess.CalledProcessError as cpe: - if 'Timeout' not in cpe.output: - raise cpe - # be pessimistic and double the timeout value as time for this run - testtimes += timer() - print('Timeout in {} from {}'.format(test, binary)) - testtimes += timer() - return testtimes - - -def _redo(processes, keys, *args): - try: - with Pool(processes=processes) as pool: - result = pool.map(*args) - return {k: v for k,v in zip(keys, result)} - except subprocess.CalledProcessError as cpe: - print('*'*79) - print(cpe.stdout) - print(cpe.stderr) - print('*' * 79) - raise cpe - -def do_timings(builddir, pickledir, binaries, testnames, processes): - os.chdir(builddir) - testlimit = -1 - - binaries = binaries[:testlimit] - compiles_fn = os.path.join(pickledir, 'compiles_' + pickle_file) - try: - compiles = pickle.load(open(compiles_fn, 'rb')) - if set(compiles.keys()) != set(binaries): - print('redoing compiles due to mismatched binaries') - compiles = _redo(processes, binaries, _compile, binaries) - except FileNotFoundError: - print('redoing compiles due to missing pickle') - compiles = _redo(processes, binaries, _compile, binaries) - pickle.dump(compiles, open(compiles_fn, 'wb')) - - testnames = testnames[:testlimit] - testruns_fn = os.path.join(pickledir, 'testruns_' + pickle_file) - try: - loaded_testnames, testruns = pickle.load(open(testruns_fn, 'rb')) - if set(compiles.keys()) != set(binaries) or loaded_testnames != testnames: - print('redoing tests due to mismatched binaries/testnames') - testruns = _redo(processes, binaries, _run_tests, zip(binaries, testnames)) - except FileNotFoundError: - print('redoing tests due to missing pickle') - testruns = _redo(processes, binaries, _run_tests, zip(binaries, testnames)) - pickle.dump((testnames, testruns), open(testruns_fn, 'wb')) - - totals = {n: compiles[n]+testruns[n] for n in binaries} - pickle.dump(totals, open(os.path.join(pickledir, pickle_file), 'wb')) - # print('totals') - # pprint(totals) - return totals - - -# list comes with a leading empty entry -all_testnames = sys.argv[4].split('/')[1:] -builddir = sys.argv[1] -module_root = sys.argv[2] -pickledir = os.path.join(module_root, 'cmake', 'scripts') -testdir = os.path.join(module_root, 'dune', 'gdt', 'test') -cmake_outfile = os.path.join(testdir, 'builder_definitions.cmake') -binaries = sys.argv[3].split(';') -testname_map = {b: t.split(';') for b,t in zip(binaries, all_testnames)} -processes = cpu_count() - -totals = do_timings(builddir, pickledir, binaries, all_testnames, processes) - -b = list(totals.keys()) -bins = binpacking.to_constant_volume(totals, MAXTIME) -# for idx, bin in enumerate(bins): -# pprint('Bin {} vol: {}'.format(idx, sum(bin.values()))) -# pprint(bin) - -with open(cmake_outfile, 'wt') as out: - for idx, bin in enumerate(bins): - out.write('add_custom_target(test_binaries_builder_{} DEPENDS {})\n'.format(idx, ' '.join(bin.keys()))) - for binary in bin.keys(): - for testname in testname_map[binary]: - out.write('set_tests_properties({} PROPERTIES LABELS "builder_{}")\n'.format(testname, idx)) diff --git a/cmake/scripts/testruns_totals.pickle b/cmake/scripts/testruns_totals.pickle deleted file mode 100644 index 1ff8479a4b3754b9d7e164ebca260aaf106c9014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10155 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 diff --git a/dune/gdt/test/CMakeLists.txt b/dune/gdt/test/CMakeLists.txt index ed0612873..bf0cb2ca6 100644 --- a/dune/gdt/test/CMakeLists.txt +++ b/dune/gdt/test/CMakeLists.txt @@ -12,15 +12,7 @@ BEGIN_TESTCASES() END_TESTCASES() -set(DXT_TRAVIS_BUILDER 18) - -set(current_idx 0) - -foreach (target ${dxt_test_binaries}) - set(all_sorted_testnames "${all_sorted_testnames}/${dxt_test_names_${target}}") -endforeach (target ${dxt_test_binaries}) -add_custom_target(refresh_test_timings python3 ${CMAKE_SOURCE_DIR}/cmake/scripts/distribute_testing.py - "${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}" "${dxt_test_binaries}" "${all_sorted_testnames}" VERBATIM) +# generated from dune-xt-common's distribute_testing.py include("builder_definitions.cmake") # link spe10 data file if present diff --git a/dune/gdt/test/compiles_totals.pickle b/dune/gdt/test/compiles_totals.pickle new file mode 100644 index 0000000000000000000000000000000000000000..4fc411f1b6ef7c87799ee9d2249400204e8d47ce GIT binary patch literal 5523 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 Bq}Kod literal 0 HcmV?d00001 diff --git a/dune/gdt/test/testruns_totals.pickle b/dune/gdt/test/testruns_totals.pickle new file mode 100644 index 0000000000000000000000000000000000000000..48d8c99caae911bd3b4ea3f17732ec46e54ed96a GIT binary patch literal 10155 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 literal 0 HcmV?d00001 -- GitLab