Running GT examples on local machine in parallel

It is possible to run the GToolkit CI examples on a local machine, using all CPU cores with:

checkRunner := GtRlChecksRunner preCommitExamples
  

How it works. The testing happens in three phases:

1. The tests are run in the headless workers. The number of workers is determined by the limitations of RAM and CPU cores. For most personal machines the number of cores is the limiting factor, so the number of workers (tests running in parallel) is equal to the number of CPU cores.

2. Any tests that fail in the first phase are then run in an in-image worker. The difference here is that there is a GUI running.

3. Any tests that fail in the second phase are then run in the UI process (which is obviously why it can lock up the system for a while).

Once the first phase is over, everything is serialised. So if tests are timing out, e.g., scripter 10 minutes timeout, the elapsed time will climb pretty quickly.

The second and third phases are there to make it clear which tests were failing because of the remote runner environment. Such examples can be then fixed.

The other reason is if there are tests that are always failing the runner tends to become complacent and the whole thing becomes less valuable in terms of parallel non-blocking running. Ideally, such examples should be rewritten.

The second and third phases are optional so that users can be sure of quicker runs:

GtRlChecksRunner new
	retryStrategy: GtRlChecksRunnerWorkerOnlyRetryStrategy new;
	preCommitExamples
  

Omitting the second and third phases have its pros and cons:

pros:

Execution time is more consistent as the in-image and ui runs are single threaded.

The UI doesn't lock up due to checks being run in the ui process.

cons:

You're more likely to have a list of checks that fail - until they are fixed