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;
 }
Пример #4
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;
 }
Пример #6
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);
 }