Remco;12369 wrote:Something I could suggest is to try and organise your tests between projects so that tests with a similar running time will be inside the same project.
We are pretty heavy with integration testing (~6 000 db tests) so this is almost what we started out with, but it makes TDDing with NCrunch pretty much impossible due to compilation/process times of that large test project (took over 1 minute when I started to split it up into multiple test assemblies).
Remco;12369 wrote:It would be counterproductive for the pipeline builder to be brilliantly intelligent with its creation of the pipeline, but be so slow that it would be faster to run the tests end-to-end than actually arrange them in optimal sequence.
But wouldn't it make sense to have 2 different "pipiline builder" modes? One that focuses on feedback time when TDDing in vstudio and another one focusing on burst mode when "run all tests" via e.g. ncrunch.exe ?
Given you have a fairly complicated test bed with static test assy initialization costs off course.
I think such "simple pipieline mode" with ncrunch.exe would be awesome on a CI system with connected grid nodes since I basically can add many low cost 1-task grid nodes (e.g. docker containers) and it will only speed up performance due to process reuse, not draining it :)
(For instance a test run of only my 6k db tests with NCrunch on CI system now takes 45 minutes, a complete test run (12 500 tests) with TC built in test runner takes 47 minutes (without code coverage though, but on TeamCity this isn't that important since we don't have any coverage integration with TC).
It would be awesome if I could add 1 test node, and practically have 22 minutes instead, or 4 and get 11 minutes etc. But as long as test node is over busy with process initializations I guess this remains a distant dream :)
(I have not yet tested grid node usage in practice due to the node-config issue though, maybe it already results in impressive throughput differences)