<?php

// Determine whether there is a testsession currently running, and if so - setup the persistent details for it.
Injector::inst()->get('TestSessionEnvironment')->loadFromFile();
<?php

// Determine whether there is a testsession currently running, and if so - setup the persistent details for it.
Injector::inst()->get('TestSessionEnvironment')->loadFromFile();

/**
 * This closure will run every time a Resque_Event is forked (just before it is forked, so it applies to the parent
 * and child process).
 */
if(class_exists('Resque_Event') && class_exists('SSResqueRun')) {
	Resque_Event::listen('beforeFork', function($data) {
		global $databaseConfig;

		// Reconnect to the database - this may connect to the old DB first, but is required because these processes
		// are long-lived, and MySQL connections often get closed in between worker runs. We need to connect before
		// calling {@link TestSessionEnvironment::loadFromFile()}.
		DB::connect($databaseConfig);

		$testEnv = Injector::inst()->get('TestSessionEnvironment');

		if($testEnv->isRunningTests()) {
			$testEnv->loadFromFile();
		} else {
			$testEnv->endTestSession();
		}
	});
}

Add Resque_Event::listen() call to register the testsession state switcher with the silverstripe-resque module.
Add Resque_Event::listen() call to register the testsession state switcher
with the silverstripe-resque module.
