GtRemoteRunner Object subclass: #GtRemoteRunner uses: TGtWithAnnouncementsQueue instanceVariableNames: 'port server jobStartupAndShutdown managerStartupAndShutdown availableWorkers currentlyExecutingJobs currentlyExecutingTasks sharedAccess registeredWorkers taskTimeout workerTimeout jobTimeout timeoutManager announcer runnerStats log taskQueue changesSyncEvents announcementNotifier logEmitter' classVariableNames: '' package: 'RemoteRunner-Runner' is responsible for scheduling tasks in one or more workers. The workers may be in the same image as the runner, but are typically separate processes, sometimes on different hardware.

Tasks are instances of GtRrTask Object subclass: #GtRrTask instanceVariableNames: 'constraint result taskId taskTimeout retryStrategy executionData' classVariableNames: '' package: 'RemoteRunner-Tasks' and are the unit of work handed out to a workers, Examples of tasks include:

Evaluating a script (GtRrScriptTask GtRrTask subclass: #GtRrScriptTask instanceVariableNames: 'script' classVariableNames: '' package: 'RemoteRunner-Tasks' ).

Synchronising code between the runner and workers (GtRrCodeSyncTask GtRrTask subclass: #GtRrCodeSyncTask instanceVariableNames: 'serializedChanges' classVariableNames: '' package: 'RemoteRunner-Runner-CodeSync' ).

Running checks, e.g. GtExample Object subclass: #GtExample instanceVariableNames: 'providerClass methodClass selector label description form exceptions subjects children properties after problems timeLimit' classVariableNames: '' package: 'GToolkit-Examples-Core' s and SUnit TestCase TestAsserter subclass: #TestCase instanceVariableNames: 'testSelector expectedFails' classVariableNames: 'Announcers DefaultTimeLimit HistoryAnnouncer' package: 'SUnit-Core-Kernel' s.

Accessing the default remote runner will start one or more workers on the local machine, based on the amount of free resources (CPU & RAM) (see GtRrResourceWorkerCountCalculator GtRrWorkerCountCalculator subclass: #GtRrResourceWorkerCountCalculator instanceVariableNames: 'minWorkers maxWorkers memorySizeMultiplier algorithm' classVariableNames: 'DefaultAlgorithm DefaultMaxWorkers DefaultMemorySizeMultiplier DefaultMinWorkers' package: 'RemoteRunner-Runner' ).

The default worker has code synchronisation enabled, allowing tasks to be run in the workers with the same code base as the runner, i.e. what is desired for a typical development environment.

The summary view of the runner shows the number of workers and current activity.

As an example, running a cript in a worker may be performed with:

GtRemoteRunner default submitJob:
	(GtRrJob script: 'GtOsSystemInfo current currentProcessId')

Additional information is provided in the pages below: