. 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 properties'
	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: ''
	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: ''
	classVariableNames: ''
	package: 'RemoteRunner-WorkerCount'
    
).
  
 
  
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.
  
 
  
To specify site specific configuration that should be performed on each worker, see RemoteRunner: worker startup scripts.
  
 
  
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: