Once ANSTE was ready, the next step was to introduce it into our testing process. A machine powerful enough to deploy even the largest scenarios was purchased, and ANSTE was installed on it.
Module developers started to write ANSTE tests for every feature that needed to be checked. Initially the tests were run only when new beta releases of a module came out, but soon developers wanted to take advantage of ANSTE to do preliminary tests as soon as they developed new features.
In the beginning, a first-come, first-served approach was taken, but it was soon obvious that it was not an optimal solution. Developers had to coordinate manually to share the access to the machine and check whether someone else was running tests at the moment.
To address this problem, a scheduling daemon was developed. Testing jobs can be submitted to this daemon by ANSTE users. Each job has a priority, which allows the scheduler to run them in the appropriate order. Users have different maximum priorities, so the release manager can schedule jobs with a higher priority than regular developers, as well as change the priority of any scheduled test. The scheduler might run some jobs out of order to try to optimize the use of resources. For example, if a test is being run and there is only one job in the queue that has a memory footprint small enough to allow it to be run at the same time, such a job will be processed immediately, regardless of its position in the queue.
When a job is scheduled, ...