Remote Runner: checks, examples and tests

RemoteRunner provides the ability to significantly reduce the time it takes to run test suites by delegating checks out to multiple workers.

GtRrChecksFactory GtRrTaskFactory subclass: #GtRrChecksFactory instanceVariableNames: 'ignoreNoTest inImageOnly' classVariableNames: '' package: 'RemoteRunner-Tasks' provides a convenient way of constructing jobs to run the test suite, e.g.:

factory := GtRrChecksFactory new.
factory
	addSUnitPackages: { 'Collections-Tests' asPackage };
	addExamplePackages: { 'RemoteRunner' asPackage }.
GtRemoteRunner default submitJob: factory job.
  

Will execute all the checks in the listed packages. (Pressing on the eg button in the resulting inspector will break down the results by test providing more details).

In the example above the checks are run one class per task. This means that if one class happens to take much longer to run than the others, the system sits mostly idle waiting for the last class to complete.

The checks may be more efficiently scheduled by recording the times of previous runs and grouping checks in to tasks based on those times.

To enable the time recording:

GtRrCheckSchedulingTimes default.
  

Running the job above a second time will record then times.

The job can then be more efficiently scheduled with:

factory := GtRrChecksFactory new.
factory
	addSUnitPackages: { 'Collections-Tests' asPackage };
	addExamplePackages: { 'RemoteRunner' asPackage }.
factory groupTasksByTime.
GtRemoteRunner default submitJob: factory job.
  

The execution times can be saved with:

GtRrCheckSchedulingTimes default save.
  

and loaded with:

GtRrCheckSchedulingTimes loadDefaultInstance.