Пример #1
0
 /**
  * @dataProvider useCases
  *
  * @param $config
  */
 public function test_UseCase($config)
 {
     date_default_timezone_set($config['timezone']);
     $timezone = new DateTimeZone($config['timezone']);
     $start = new DateTime($config['start'], $timezone);
     $end = new DateTime($config['end'], $timezone);
     $storage = new Storage();
     $storage->setDefaultMiddleware($this->conn, new Logger(null));
     $pipelineFactory = new Factory($this->conn);
     $pipeline = new Pipeline();
     $cvs = [];
     $dateperiod = new DatePeriod($start, DateInterval::createFromDateString($config['insertResolution'] . ' seconds'), $end);
     foreach ($dateperiod as $datetime) {
         $cvs[] = new CounterValue($config['sid'], $config['nid'], $datetime, $config['val'], $config['incremental']);
     }
     $storage->store($cvs);
     $sequence = $pipelineFactory->createMultiAction($config['sid'], $config['nid'], $start, $end, $config['retrieveResolution'], $config['aggregation']);
     $sequence[] = new ConvertToDateStringKeys();
     $valsByDate = $pipeline->run($sequence);
     $msg = $config['description'];
     $msg .= "\nExpected\n";
     $msg .= json_encode($config['expected'], JSON_PRETTY_PRINT);
     $msg .= "\nActual:\n";
     $msg .= json_encode($valsByDate, JSON_PRETTY_PRINT);
     $this->assertTrue($valsByDate === $config['expected'], $msg);
 }
Пример #2
0
 public function test_StoreTwoIncrementalValues_RetrievesDifference()
 {
     $resolution15min = Resolution::FIFTEEEN_MINUTES;
     $someAggregation = Aggregation::SUM;
     $storage = new Storage();
     $storage->setDefaultMiddleware($this->conn, new Logger(null), $resolution15min);
     $pipelineFactory = new Factory($this->conn);
     $pipeline = new Pipeline();
     $someSid = 1;
     $someNid = 1;
     $someValue1 = 600;
     $someValue2 = 700;
     $expectedDifference = $someValue2 - $someValue1;
     $firstDatetime = new DateTime('2015-02-18 15:00:00');
     $secondDateStr15MinAfterFirst = '2015-02-18 15:15:00';
     $secondDatetime15MinAfterFirst = new DateTime($secondDateStr15MinAfterFirst);
     $incrementalIsTrue = true;
     $expectedValsByDate = array($secondDateStr15MinAfterFirst => $expectedDifference);
     $storage->store([new CounterValue($someSid, $someNid, $firstDatetime, $someValue1, $incrementalIsTrue)]);
     $storage->store([new CounterValue($someSid, $someNid, $secondDatetime15MinAfterFirst, $someValue2, $incrementalIsTrue)]);
     $sequence = $pipelineFactory->createMultiAction($someSid, $someNid, $secondDatetime15MinAfterFirst, $secondDatetime15MinAfterFirst, $resolution15min, $someAggregation);
     $sequence[] = new ConvertToDateStringKeys();
     $valsByDate = $pipeline->run($sequence);
     $this->assertEquals($expectedValsByDate, $valsByDate);
 }
Пример #3
0
 public function test_StoreValues_RetrieveAsFormula_FormulaIsCorrectlyCalculated()
 {
     $formula = '[sid=1,agg=1] + [sid=2,agg=1]';
     $sid1 = 1;
     $sid2 = 2;
     $someNid = 1;
     $valSid1 = 15;
     $valSid2 = 30;
     $expectedSum = $valSid1 + $valSid2;
     $someDateString = '2015-02-18 15:00:00';
     $datetime = new DateTime($someDateString);
     $someFormulaResolution = Resolution::FIVE_MINUTES;
     $someResultResolution = Resolution::FIVE_MINUTES;
     $sumResultAggregation = Aggregation::SUM;
     $someResolution = Resolution::FIVE_MINUTES;
     $isIncremental = false;
     $padding = false;
     $storage = new Storage();
     $storage->setDefaultMiddleware($this->conn, new Logger(null), $someResolution);
     $pipeline = new Pipeline();
     $pipelineFactory = new Factory($this->conn);
     $expected = array($someDateString => $expectedSum);
     $cvs = [];
     $cvs[] = new CounterValue($sid1, $someNid, $datetime, $valSid1, $isIncremental);
     $cvs[] = new CounterValue($sid2, $someNid, $datetime, $valSid2, $isIncremental);
     $storage->store($cvs);
     $sequence = $pipelineFactory->createMultiAction($formula, $someNid, $datetime, $datetime, $someResultResolution, $sumResultAggregation, $padding, null, null, null, true, $someFormulaResolution);
     $sequence[] = new ConvertToDateStringKeys();
     $output = $pipeline->run($sequence);
     $this->assertEquals($expected, $output);
 }