public function execute(PhutilArgumentParser $args) { $console = PhutilConsole::getConsole(); $daemon = new PhabricatorFactDaemon(array()); $daemon->setVerbose(true); $daemon->setEngines(PhabricatorFactEngine::loadAllEngines()); $iterators = PhabricatorFactDaemon::getAllApplicationIterators(); $selected = $args->getArg('iterator'); if ($selected) { $use = array(); foreach ($selected as $iterator_name) { if (isset($iterators[$iterator_name])) { $use[$iterator_name] = $iterators[$iterator_name]; } else { $console->writeErr("%s\n", pht("Iterator '%s' does not exist.", $iterator_name)); } } $iterators = $use; } foreach ($iterators as $iterator_name => $iterator) { if ($args->getArg('all')) { $daemon->processIterator($iterator); } else { $daemon->processIteratorWithCursor($iterator_name, $iterator); } } if (!$args->getArg('skip-aggregates')) { $daemon->processAggregates(); } return 0; }
private function buildChartForm() { $request = $this->getRequest(); $user = $request->getUser(); $table = new PhabricatorFactRaw(); $conn_r = $table->establishConnection('r'); $table_name = $table->getTableName(); $facts = queryfx_all($conn_r, 'SELECT DISTINCT factType from %T', $table_name); $specs = PhabricatorFactSpec::newSpecsForFactTypes(PhabricatorFactEngine::loadAllEngines(), ipull($facts, 'factType')); $options = array(); foreach ($specs as $spec) { if ($spec->getUnit() == PhabricatorFactSpec::UNIT_COUNT) { $options[$spec->getType()] = $spec->getName(); } } if (!$options) { return id(new AphrontErrorView())->setSeverity(AphrontErrorView::SEVERITY_NOTICE)->setTitle(pht('No Chartable Facts'))->appendChild('<p>' . pht('There are no facts that can be plotted yet.') . '</p>'); } $form = id(new AphrontFormView())->setUser($user)->appendChild(id(new AphrontFormSelectControl())->setLabel('Y-Axis')->setName('y1')->setOptions($options))->appendChild(id(new AphrontFormSubmitControl())->setValue('Plot Chart')); $panel = new AphrontPanelView(); $panel->appendChild($form); $panel->setWidth(AphrontPanelView::WIDTH_FORM); $panel->setHeader('Plot Chart'); return $panel; }
public function execute(PhutilArgumentParser $args) { $console = PhutilConsole::getConsole(); $engines = PhabricatorFactEngine::loadAllEngines(); foreach ($engines as $engine) { $console->writeOut("%s\n", get_class($engine)); } return 0; }
public function run() { $this->setEngines(PhabricatorFactEngine::loadAllEngines()); while (true) { $iterators = $this->getAllApplicationIterators(); foreach ($iterators as $iterator_name => $iterator) { $this->processIteratorWithCursor($iterator_name, $iterator); } $this->processAggregates(); $this->log("Zzz..."); $this->sleep(60 * 5); } }
public function execute(PhutilArgumentParser $args) { $console = PhutilConsole::getConsole(); $daemon = new PhabricatorFactDaemon(array()); $daemon->setVerbose(true); $daemon->setEngines(PhabricatorFactEngine::loadAllEngines()); $iterators = array(new PhabricatorFactUpdateIterator(new DifferentialRevision())); foreach ($iterators as $iterator) { $daemon->processIterator($iterator); } $daemon->processAggregates(); return 0; }
protected function run() { $this->setEngines(PhabricatorFactEngine::loadAllEngines()); while (!$this->shouldExit()) { PhabricatorCaches::destroyRequestCache(); $iterators = $this->getAllApplicationIterators(); foreach ($iterators as $iterator_name => $iterator) { $this->processIteratorWithCursor($iterator_name, $iterator); } $this->processAggregates(); $this->log(pht('Zzz...')); $this->sleep(60 * 5); } }
public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $table = new PhabricatorFactRaw(); $conn_r = $table->establishConnection('r'); $table_name = $table->getTableName(); $series = $request->getStr('y1'); $specs = PhabricatorFactSpec::newSpecsForFactTypes(PhabricatorFactEngine::loadAllEngines(), array($series)); $spec = idx($specs, $series); $data = queryfx_all($conn_r, 'SELECT valueX, epoch FROM %T WHERE factType = %s ORDER BY epoch ASC', $table_name, $series); $points = array(); $sum = 0; foreach ($data as $key => $row) { $sum += (int) $row['valueX']; $points[(int) $row['epoch']] = $sum; } if (!$points) { // NOTE: Raphael crashes Safari if you hand it series with no points. throw new Exception('No data to show!'); } // Limit amount of data passed to browser. $count = count($points); $limit = 2000; if ($count > $limit) { $i = 0; $every = ceil($count / $limit); foreach ($points as $epoch => $sum) { $i++; if ($i % $every && $i != $count) { unset($points[$epoch]); } } } $x = array_keys($points); $y = array_values($points); $id = celerity_generate_unique_node_id(); $chart = phutil_tag('div', array('id' => $id, 'style' => 'border: 1px solid #6f6f6f; ' . 'margin: 1em 2em; ' . 'background: #ffffff; ' . 'height: 400px; '), ''); require_celerity_resource('raphael-core'); require_celerity_resource('raphael-g'); require_celerity_resource('raphael-g-line'); Javelin::initBehavior('line-chart', array('hardpoint' => $id, 'x' => array($x), 'y' => array($y), 'xformat' => 'epoch', 'colors' => array('#0000ff'))); $panel = new AphrontPanelView(); $panel->setHeader('Count of ' . $spec->getName()); $panel->appendChild($chart); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Chart')); return $this->buildApplicationPage(array($crumbs, $panel), array('title' => 'Chart', 'device' => false)); }
public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $table = new PhabricatorFactRaw(); $conn_r = $table->establishConnection('r'); $table_name = $table->getTableName(); $series = $request->getStr('y1'); $specs = PhabricatorFactSpec::newSpecsForFactTypes(PhabricatorFactEngine::loadAllEngines(), array($series)); $spec = idx($specs, $series); $data = queryfx_all($conn_r, 'SELECT valueX, epoch FROM %T WHERE factType = %s ORDER BY epoch ASC', $table_name, $series); $points = array(); $sum = 0; foreach ($data as $key => $row) { $sum += (int) $row['valueX']; $points[(int) $row['epoch']] = $sum; } if (!$points) { throw new Exception('No data to show!'); } // Limit amount of data passed to browser. $count = count($points); $limit = 2000; if ($count > $limit) { $i = 0; $every = ceil($count / $limit); foreach ($points as $epoch => $sum) { $i++; if ($i % $every && $i != $count) { unset($points[$epoch]); } } } $x = array_keys($points); $y = array_values($points); $id = celerity_generate_unique_node_id(); $chart = phutil_tag('div', array('id' => $id, 'style' => 'background: #ffffff; ' . 'height: 480px; '), ''); require_celerity_resource('d3'); Javelin::initBehavior('line-chart', array('hardpoint' => $id, 'x' => array($x), 'y' => array($y), 'xformat' => 'epoch', 'colors' => array('#0000ff'))); $box = id(new PHUIObjectBoxView())->setHeaderText(pht('Count of %s', $spec->getName()))->appendChild($chart); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Chart')); $title = pht('Chart'); return $this->newPage()->setTitle($title)->setCrumbs($crumbs)->appendChild($box); }
public function testLoadAllEngines() { PhabricatorFactEngine::loadAllEngines(); $this->assertTrue(true); }