summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorDavid Goldblatt <davidgoldblatt@fb.com>2017-01-27 13:16:56 -0800
committerDavid Goldblatt <davidtgoldblatt@gmail.com>2017-01-30 17:51:57 -0800
commit5260d9c12f8f83e4f37a28593d197638ad3d4e56 (patch)
tree404d68906cc5eaa602dc15ec29760c32266d6dea /scripts
parent6e7d0890cb66af3b85ab210ed781dab11c1c4614 (diff)
downloadjemalloc-5260d9c12f8f83e4f37a28593d197638ad3d4e56.tar.gz
Introduce scripts to run all possible tests
In 6e7d0890 we added better travis continuous integration tests. This is nice, but has two problems: - We run only a subset of interesting tests. - The travis builds can take hours to give us back results (especially on OS X). This adds scripts/gen_run_tests.py, and its output, run_tests.sh, which builds and runs a larger portion of possible configurations on the local machine. While a travis run takes several hours to complete , I can run these scripts on my (OS X) latop and (Linux) devserve, and get a more exhaustive set of results back in around 10 minutes.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/gen_run_tests.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/gen_run_tests.py b/scripts/gen_run_tests.py
new file mode 100755
index 00000000..694685cb
--- /dev/null
+++ b/scripts/gen_run_tests.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+
+from itertools import combinations
+
+def powerset(items):
+ result = []
+ for i in xrange(len(items) + 1):
+ result += combinations(items, i)
+ return result
+
+MAKE_J_VAL = 32
+
+possible_compilers = [('gcc', 'g++'), ('clang', 'clang++')]
+possible_compiler_opts = [
+ '-m32',
+]
+possible_config_opts = [
+ '--enable-debug',
+ '--enable-prof',
+ '--disable-stats',
+ '--disable-tcache',
+]
+
+print 'set -e'
+print 'autoconf'
+print 'unamestr=`uname`'
+
+for cc, cxx in possible_compilers:
+ for compiler_opts in powerset(possible_compiler_opts):
+ for config_opts in powerset(possible_config_opts):
+ config_line = (
+ './configure '
+ + 'CC="{} {}" '.format(cc, " ".join(compiler_opts))
+ + 'CXX="{} {}" '.format(cxx, " ".join(compiler_opts))
+ + " ".join(config_opts)
+ )
+ # Heap profiling is not supported on OS X.
+ if '--enable-prof' in config_opts:
+ print 'if [[ "$unamestr" != "Darwin" ]]; then'
+ print config_line
+ print "make clean"
+ print "make -j" + str(MAKE_J_VAL) + " check"
+ if '--enable-prof' in config_opts:
+ print 'fi'