rust/src/test
Alex Crichton 7bc2cbf5db travis: Parallelize tests on Android
Currently our slowest test suite on android, run-pass, takes over 5 times longer
than the x86_64 component (~400 -> ~2200s). Typically QEMU emulation does indeed
add overhead, but not 5x for this kind of workload. One of the slowest parts of
the Android process is that *compilation* happens serially. Tests themselves
need to run single-threaded on the emulator (due to how the test harness works)
and this forces the compiles themselves to be single threaded.

Now Travis gives us more than one core per machine, so it'd be much better if we
could take advantage of them! The emulator itself is still fundamentally
single-threaded, but we should see a nice speedup by sending binaries for it to
run much more quickly.

It turns out that we've already got all the tools to do this in-tree. The
qemu-test-{server,client} that are in use for the ARM Linux testing are a
perfect match for the Android emulator. This commit migrates the custom adb
management code in compiletest/rustbuild to the same qemu-test-{server,client}
implementation that ARM Linux uses.

This allows us to lift the parallelism restriction on the compiletest test
suites, namely run-pass. Consequently although we'll still basically run the
tests themselves in single threaded mode we'll be able to compile all of them in
parallel, keeping the pipeline much more full and using more cores for the work
at hand. Additionally the architecture here should be a bit speedier as it
should have less overhead than adb which is a whole new process on both the host
and the emulator!

Locally on an 8 core machine I've seen the run-pass test suite speed up from
taking nearly an hour to only taking 6 minutes. I don't think we'll see quite a
drastic speedup on Travis but I'm hoping this change can place the Android tests
well below 2 hours instead of just above 2 hours.

Because the client/server here are now repurposed for more than just QEMU,
they've been renamed to `remote-test-{server,client}`.

Note that this PR does not currently modify how debuginfo tests are executed on
Android. While parallelizable it wouldn't be quite as easy, so that's left to
another day. Thankfully that test suite is much smaller than the run-pass test
suite.

As a final fix I discovered that the ARM and Android test suites were actually
running all library unit tests (e.g. stdtest, coretest, etc) twice. I've
corrected that to only run tests once which should also give a nice boost in
overall cycle time here.
2017-04-27 20:20:13 -07:00
..
codegen remove cleanup branches to the resume block 2017-04-22 21:00:50 +03:00
codegen-units translate drop glue using MIR 2017-03-18 02:53:08 +02:00
compile-fail Rollup merge of #41523 - estebank:moved, r=arielb1 2017-04-27 19:59:14 -04:00
compile-fail-fulldeps Don't panic if an attribute macro fails to resolve at crate root 2017-04-20 16:13:13 -07:00
debuginfo update gdbr tests 2017-03-09 22:12:36 +01:00
incremental rustc: use monomorphic const_eval for cross-crate enum discriminants. 2017-04-16 01:31:37 +03:00
mir-opt borrowck::mir::dataflow: ignore unwind edges of empty drops 2017-04-08 22:46:50 +03:00
parse-fail Fix issue with single question mark or paren 2017-04-21 21:32:44 +03:00
pretty Update pretty test for derive attributes 2017-02-05 12:22:29 +10:30
run-fail
run-fail-fulldeps Merge ExpnId and SyntaxContext. 2017-03-29 00:41:10 +00:00
run-make Do not check if libclang_rt.?san_*_dynamic.dylib is an unstable crate. 2017-04-25 18:34:21 +08:00
run-pass travis: Parallelize tests on Android 2017-04-27 20:20:13 -07:00
run-pass-fulldeps Merge ExpnId and SyntaxContext. 2017-03-29 00:41:10 +00:00
run-pass-valgrind Removes FIXMEs related to #22405 2017-01-31 21:27:13 -05:00
rustdoc Re-enable hoedown by default 2017-04-22 13:25:14 +02:00
ui Rollup merge of #41523 - estebank:moved, r=arielb1 2017-04-27 19:59:14 -04:00
ui-fulldeps/custom-derive Separate "ui-fulldeps" tests from "ui" tests 2017-03-04 21:38:26 +03:00
COMPILER_TESTS.md Move COMPILER_TESTS.md out of the root directory 2017-02-25 00:13:00 -06:00