/** * @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); }
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); }
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); }