Object subclass: #GtRemoteRunner
instanceVariableNames: 'port server jobStartupAndShutdown managerStartupAndShutdown availableWorkers currentlyExecutingJobs currentlyExecutingTasks sharedAccess registeredWorkers taskTimeout workerTimeout jobTimeout timeoutManager announcer runnerStats log taskQueue changesSyncEvents announcementNotifier logEmitter'
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
Object subclass: #GtRrTask
instanceVariableNames: 'constraint result taskId taskTimeout retryStrategy executionData'
and are the unit of work handed out to a workers, Examples of tasks include:
Evaluating a script (
GtRrTask subclass: #GtRrScriptTask
Synchronising code between the runner and workers (
GtRrTask subclass: #GtRrCodeSyncTask
Running checks, e.g.
Object subclass: #GtExample
instanceVariableNames: 'providerClass methodClass selector label description form exceptions subjects children properties after problems timeLimit'
s and SUnit
TestAsserter subclass: #TestCase
instanceVariableNames: 'testSelector expectedFails'
classVariableNames: 'Announcers DefaultTimeLimit HistoryAnnouncer'
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
GtRrWorkerCountCalculator subclass: #GtRrResourceWorkerCountCalculator
instanceVariableNames: 'minWorkers maxWorkers memorySizeMultiplier algorithm'
classVariableNames: 'DefaultAlgorithm DefaultMaxWorkers DefaultMemorySizeMultiplier DefaultMinWorkers'
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: