Path: blob/master/src/applications/harbormaster/step/HarbormasterSleepBuildStepImplementation.php
12256 views
<?php12final class HarbormasterSleepBuildStepImplementation3extends HarbormasterBuildStepImplementation {45public function getName() {6return pht('Sleep');7}89public function getGenericDescription() {10return pht('Sleep for a specified number of seconds.');11}121314public function getBuildStepGroupKey() {15return HarbormasterTestBuildStepGroup::GROUPKEY;16}1718public function getDescription() {19return pht(20'Sleep for %s seconds.',21$this->formatSettingForDescription('seconds'));22}2324public function execute(25HarbormasterBuild $build,26HarbormasterBuildTarget $build_target) {2728$settings = $this->getSettings();2930$target = time() + $settings['seconds'];3132// Use $build_update so that we only reload every 5 seconds, but33// the sleep mechanism remains accurate.34$build_update = 5;3536while (time() < $target) {37sleep(1);3839if ($build_update <= 0) {40$build->reload();41$build_update = 5;4243if ($this->shouldAbort($build, $build_target)) {44throw new HarbormasterBuildAbortedException();45}46} else {47$build_update -= 1;48}49}50}5152public function getFieldSpecifications() {53return array(54'seconds' => array(55'name' => pht('Seconds'),56'type' => 'int',57'required' => true,58'caption' => pht('The number of seconds to sleep for.'),59),60);61}6263}646566