Inheritance: implements Symfony\Component\Serializer\Normalizer\NormalizableInterface
Ejemplo n.º 1
0
 /**
  * Creates run units
  */
 public function createUnits(array $features)
 {
     foreach ($features as $feature) {
         $unit = new RunUnit();
         $unit->setFeature($feature);
         $unit->setRun($this);
         $this->units->add($unit);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function getRunnableUnit(Project $project = null)
 {
     $whereProject = '';
     if ($project) {
         $whereProject = 'AND R.project_name = :project_name';
     }
     $this->connection->beginTransaction();
     $stmt = $this->connection->prepare('
         SELECT
             U.id AS id,
             U.feature AS feature,
             U.created_at AS created_at,
             U.finished_at AS finished_at,
             U.return_code AS return_code,
             U.output_files AS output_files,
             R.id AS run_id,
             R.title AS run_title,
             R.project_name AS run_project_name,
             R.properties AS run_properties,
             R.created_at AS run_created_at
         FROM
             bl_run R
             INNER JOIN bl_run_unit U ON R.id = U.run_id
         WHERE U.started_at IS NULL ' . $whereProject . '
         ORDER BY U.created_at ASC
         LIMIT 1
     ');
     if ($project) {
         $stmt->bindValue('project_name', $project->getName());
     }
     $stmt->execute();
     if (!($row = $stmt->fetch())) {
         $this->connection->commit();
         return;
         // nothing to process
     }
     $stmt = $this->connection->prepare('UPDATE bl_run_unit SET started_at = NOW() WHERE id = :id');
     $stmt->bindValue('id', $row['id']);
     $stmt->execute();
     $this->connection->commit();
     $run = new Run();
     $run->setId($row['run_id'])->setTitle($row['run_title'])->setProjectName($row['run_project_name'])->setProperties(json_decode($row['run_properties'], true))->setProjectName($row['run_project_name'])->setCreatedAt(new \DateTime($row['created_at']));
     $unit = new RunUnit();
     $unit->setRun($run)->setId($row['id'])->setFeature($row['feature'])->setCreatedAt(new \DateTime($row['created_at']))->setStartedAt(new \DateTime())->setFinishedAt($row['finished_at'] !== null ? new \DateTime($row['finished_at']) : null)->setReturnCode($row['return_code']);
     $this->loadOutputFiles($unit->getOutputFiles(), json_decode($row['output_files'], true));
     return $unit;
 }