public function garbageCollectionOnlyRemovesTheDefinedMaximumNumberOfSessions()
{
$settings = $this->settings;
$settings['session']['inactivityTimeout'] = 1000;
$settings['session']['garbageCollection']['probability'] = 0;
$settings['session']['garbageCollection']['maximumPerRun'] = 5;
$metaDataCache = $this->createCache('Meta');
$storageCache = $this->createCache('Storage');
for ($i = 0; $i < 9; $i++) {
$session = new Session();
$this->inject($session, 'bootstrap', $this->mockBootstrap);
$this->inject($session, 'objectManager', $this->mockObjectManager);
$this->inject($session, 'metaDataCache', $metaDataCache);
$this->inject($session, 'storageCache', $storageCache);
$session->injectSettings($settings);
$this->inject($session, 'systemLogger', $this->createMock(SystemLoggerInterface::class));
$session->initializeObject();
$session->start();
$sessionIdentifier = $session->getId();
$session->putData('foo', 'bar');
$session->close();
$sessionInfo = $metaDataCache->get($sessionIdentifier);
$sessionInfo['lastActivityTimestamp'] = time() - 4000;
$metaDataCache->set($sessionIdentifier, $sessionInfo, ['session'], 0);
}
$this->assertLessThanOrEqual(5, $session->collectGarbage());
}