protected function SmartlingTestBase::processQueue in TMGMT Translator Smartling 8.4
Same name and namespace in other branches
- 8.3 tests/src/Functional/SmartlingTestBase.php \Drupal\Tests\tmgmt_smartling\Functional\SmartlingTestBase::processQueue()
 
Processes cron queue.
Parameters
$name:
4 calls to SmartlingTestBase::processQueue()
- JobsTest::testAddToJobQueueAsync in tests/
src/ Functional/ JobsTest.php  - Add to job form, async mode: two jobs (queue mode).
 - JobsTest::testAddToJobSingleAsync in tests/
src/ Functional/ JobsTest.php  - Add to job form, async mode: single job.
 - JobsTest::testCreateJobQueueAsync in tests/
src/ Functional/ JobsTest.php  - Create job form, async mode: two jobs (queue mode).
 - JobsTest::testCreateJobSingleAsync in tests/
src/ Functional/ JobsTest.php  - Create job form, async mode: single job.
 
File
- tests/
src/ Functional/ SmartlingTestBase.php, line 305  
Class
- SmartlingTestBase
 - Basic tests for the Smartling translator.
 
Namespace
Drupal\Tests\tmgmt_smartling\FunctionalCode
protected function processQueue($name) {
  $queue_factory = Drupal::service('queue');
  $queue_manager = Drupal::service('plugin.manager.queue_worker');
  // Grab the defined cron queues.
  foreach ($queue_manager
    ->getDefinitions() as $queue_name => $info) {
    if ($queue_name != $name) {
      continue;
    }
    if (isset($info['cron'])) {
      // Make sure every queue exists. There is no harm in trying to recreate
      // an existing queue.
      $queue_factory
        ->get($queue_name)
        ->createQueue();
      $queue_worker = $queue_manager
        ->createInstance($queue_name);
      $end = time() + (isset($info['cron']['time']) ? $info['cron']['time'] : 15);
      $queue = $queue_factory
        ->get($queue_name);
      $lease_time = isset($info['cron']['time']) ?: NULL;
      while (time() < $end && ($item = $queue
        ->claimItem($lease_time))) {
        try {
          $queue_worker
            ->processItem($item->data);
          $queue
            ->deleteItem($item);
        } catch (RequeueException $e) {
          // The worker requested the task be immediately requeued.
          $queue
            ->releaseItem($item);
        } catch (SuspendQueueException $e) {
          // If the worker indicates there is a problem with the whole queue,
          // release the item and skip to the next queue.
          $queue
            ->releaseItem($item);
          watchdog_exception('cron', $e);
          // Skip to the next queue.
          continue 2;
        } catch (\Exception $e) {
          // In case of any other kind of exception, log it and leave the item
          // in the queue to be processed again later.
          watchdog_exception('cron', $e);
        }
      }
    }
  }
}