Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/PHPUnit/Integration/CronArchiveTest.php')
-rw-r--r--tests/PHPUnit/Integration/CronArchiveTest.php190
1 files changed, 189 insertions, 1 deletions
diff --git a/tests/PHPUnit/Integration/CronArchiveTest.php b/tests/PHPUnit/Integration/CronArchiveTest.php
index fa568d6b9b..a9b9ee7b93 100644
--- a/tests/PHPUnit/Integration/CronArchiveTest.php
+++ b/tests/PHPUnit/Integration/CronArchiveTest.php
@@ -10,7 +10,9 @@ namespace Piwik\Tests\Integration;
use Piwik\Container\StaticContainer;
use Piwik\CronArchive;
+use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
+use Piwik\Db;
use Piwik\Plugins\CoreAdminHome\tests\Framework\Mock\API;
use Piwik\Plugins\SegmentEditor\Model;
use Piwik\Tests\Framework\Fixture;
@@ -104,7 +106,7 @@ class CronArchiveTest extends IntegrationTestCase
\Piwik\Tests\Framework\Mock\FakeCliMulti::$specifiedResults = array(
'/method=API.get/' => serialize(array(array('nb_visits' => 1)))
);
-
+
Fixture::createWebsite('2014-12-12 00:01:02');
SegmentAPI::getInstance()->add('foo', 'actions>=1', 1, true, true);
$id = SegmentAPI::getInstance()->add('barb', 'actions>=2', 1, true, true);
@@ -230,12 +232,198 @@ LOG;
$this->assertContains($expected, $logger->output);
}
+ /**
+ * @dataProvider getTestDataForIsThereAValidArchiveForPeriod
+ */
+ public function test_isThereAValidArchiveForPeriod_modifiesLastNCorrectly($archiveRows, $idSite, $period, $date, $expected)
+ {
+ Date::$now = strtotime('2015-03-04 05:05:05');
+
+ Fixture::createWebsite('2014-12-12 00:01:02');
+
+ $this->insertArchiveData($archiveRows);
+
+ $cronArchive = new CronArchive();
+ $result = $cronArchive->isThereAValidArchiveForPeriod($idSite, $period, $date);
+
+ $this->assertEquals($expected, $result);
+ }
+
+ public function getTestDataForIsThereAValidArchiveForPeriod()
+ {
+ return [
+ // single periods that include today (we don't perform the check and just archive since we assume today is invalid)
+ [
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-04', 'date2' => '2015-03-04', 'name' => 'done', 'value' => 1],
+ ],
+ 1,
+ 'day',
+ '2015-03-04',
+ [false, null],
+ ],
+ [
+ [],
+ 1,
+ 'week',
+ '2015-03-04',
+ [false, null],
+ ],
+ [
+ [],
+ 1,
+ 'month',
+ '2015-03-04',
+ [false, null],
+ ],
+ [
+ [],
+ 1,
+ 'year',
+ '2015-03-04',
+ [false, null],
+ ],
+
+ // single periods that do not include today
+ [
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-02', 'date2' => '2015-03-02', 'name' => 'done', 'value' => 1],
+ ],
+ 1,
+ 'day',
+ '2015-03-02',
+ [true, '2015-03-02'],
+ ],
+ [
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-01', 'date2' => '2015-03-01', 'name' => 'done', 'value' => 1],
+ ],
+ 1,
+ 'day',
+ '2015-03-02',
+ [false, '2015-03-02'],
+ ],
+ [
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 2, 'date1' => '2015-02-16', 'date2' => '2015-02-22', 'name' => 'done', 'value' => 1],
+ ],
+ 1,
+ 'week',
+ '2015-02-17',
+ [true, '2015-02-17'],
+ ],
+ [
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 2, 'date1' => '2015-02-15', 'date2' => '2015-02-21', 'name' => 'done', 'value' => 4],
+ ],
+ 1,
+ 'week',
+ '2015-02-17',
+ [false, '2015-02-17'],
+ ],
+
+ // lastN periods
+ [ // last day invalid, some valid in between
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-04', 'date2' => '2015-03-04', 'name' => 'done', 'value' => 4],
+ ['idarchive' => 2, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-03', 'date2' => '2015-03-04', 'name' => 'done', 'value' => 4],
+ ['idarchive' => 3, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-02', 'date2' => '2015-03-04', 'name' => 'done', 'value' => 1],
+ ['idarchive' => 4, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-01', 'date2' => '2015-03-04', 'name' => 'done', 'value' => 1],
+ ['idarchive' => 5, 'idsite' => 1, 'period' => 1, 'date1' => '2015-02-28', 'date2' => '2015-03-04', 'name' => 'done', 'value' => 4],
+ ],
+ 1,
+ 'day',
+ 'last5',
+ [false, 'last5'],
+ ],
+ [ // last two invalid, rest valid
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-04', 'date2' => '2015-03-04', 'name' => 'done', 'value' => 4],
+ ['idarchive' => 2, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-03', 'date2' => '2015-03-03', 'name' => 'done', 'value' => 4],
+ ['idarchive' => 3, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-02', 'date2' => '2015-03-02', 'name' => 'done', 'value' => 1],
+ ['idarchive' => 4, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-01', 'date2' => '2015-03-01', 'name' => 'done', 'value' => 1],
+ ['idarchive' => 5, 'idsite' => 1, 'period' => 1, 'date1' => '2015-02-28', 'date2' => '2015-02-28', 'name' => 'done', 'value' => 1],
+ ],
+ 1,
+ 'day',
+ 'last5',
+ [false, 'last2'],
+ ],
+ [ // all valid
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-04', 'date2' => '2015-03-04', 'name' => 'done', 'value' => 1],
+ ['idarchive' => 2, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-03', 'date2' => '2015-03-03', 'name' => 'done', 'value' => 1],
+ ['idarchive' => 3, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-02', 'date2' => '2015-03-02', 'name' => 'done', 'value' => 1],
+ ['idarchive' => 4, 'idsite' => 1, 'period' => 1, 'date1' => '2015-03-01', 'date2' => '2015-03-01', 'name' => 'done', 'value' => 1],
+ ['idarchive' => 5, 'idsite' => 1, 'period' => 1, 'date1' => '2015-02-28', 'date2' => '2015-02-28', 'name' => 'done', 'value' => 1],
+ ],
+ 1,
+ 'day',
+ 'last5',
+ [false, 'last2'],
+ ],
+ [ // month w/ last 3 invalid, today valid
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 3, 'date1' => '2015-03-01', 'date2' => '2015-03-31', 'name' => 'done', 'value' => 1],
+ ['idarchive' => 2, 'idsite' => 1, 'period' => 3, 'date1' => '2015-02-01', 'date2' => '2015-02-28', 'name' => 'done', 'value' => 4],
+ ['idarchive' => 3, 'idsite' => 1, 'period' => 3, 'date1' => '2015-01-01', 'date2' => '2015-01-31', 'name' => 'done', 'value' => 4],
+ ['idarchive' => 4, 'idsite' => 1, 'period' => 3, 'date1' => '2014-12-01', 'date2' => '2014-12-31', 'name' => 'done', 'value' => 1],
+ ['idarchive' => 5, 'idsite' => 1, 'period' => 3, 'date1' => '2014-11-01', 'date2' => '2014-11-30', 'name' => 'done', 'value' => 1],
+ ],
+ 1,
+ 'month',
+ 'last5',
+ [false, 'last3'],
+ ],
+
+ // range periods
+ [ // includes today
+ [
+ ['idarchive' => 5, 'idsite' => 1, 'period' => 5, 'date1' => '2015-03-02', 'date2' => '2015-03-04', 'name' => 'done', 'value' => 1],
+ ],
+ 1,
+ 'range',
+ '2015-03-02,2015-03-04',
+ [false, null],
+ ],
+ [ // does not include today, invalid
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 5, 'date1' => '2015-03-01', 'date2' => '2015-03-03', 'name' => 'done', 'value' => 4],
+ ],
+ 1,
+ 'range',
+ '2015-03-01,2015-03-03',
+ [false, '2015-03-01,2015-03-03'],
+ ],
+ [ // does not include today, valid
+ [
+ ['idarchive' => 1, 'idsite' => 1, 'period' => 5, 'date1' => '2015-03-01', 'date2' => '2015-03-03', 'name' => 'done', 'value' => 1],
+ ],
+ 1,
+ 'range',
+ '2015-03-01,2015-03-03',
+ [true, '2015-03-01,2015-03-03'],
+ ],
+ ];
+ }
+
public function provideContainerConfig()
{
return array(
'Piwik\CliMulti' => \DI\object('Piwik\Tests\Framework\Mock\FakeCliMulti')
);
}
+
+ private function insertArchiveData($archiveRows)
+ {
+ foreach ($archiveRows as $row) {
+ $table = ArchiveTableCreator::getNumericTable(Date::factory($row['date1']));
+
+ $tsArchived = isset($row['ts_archived']) ? $row['ts_archived'] : Date::now()->getDatetime();
+ Db::query("INSERT INTO `$table` (idarchive, idsite, period, date1, date2, `name`, `value`, ts_archived) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
+ [$row['idarchive'], $row['idsite'], $row['period'], $row['date1'], $row['date2'], $row['name'], $row['value'], $tsArchived]);
+ }
+ }
}
class TestCronArchive extends CronArchive