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:
authorStefan Giehl <stefan@piwik.org>2017-03-29 20:47:37 +0300
committerMatthieu Aubry <mattab@users.noreply.github.com>2017-03-29 20:47:37 +0300
commitd578a737916f64e777c37ce8a427591c5c9e2414 (patch)
tree24d9c4bcab47734403120f408da928fbe77a9273 /tests/PHPUnit
parent5d46f802f0485c504c3923aa625032ca998048cf (diff)
Replace archives if they already exists instead of ignoring them (#11476)
* replace archives if they already exists instead of ignoring them * adds a simple test to prove archives are replaced now * improve test
Diffstat (limited to 'tests/PHPUnit')
-rw-r--r--tests/PHPUnit/Integration/ArchiveTest.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/PHPUnit/Integration/ArchiveTest.php b/tests/PHPUnit/Integration/ArchiveTest.php
index 906cfe40c9..df8ef4021c 100644
--- a/tests/PHPUnit/Integration/ArchiveTest.php
+++ b/tests/PHPUnit/Integration/ArchiveTest.php
@@ -7,16 +7,21 @@
*/
namespace Piwik\Tests\Integration;
+use Piwik\API\Proxy;
use Piwik\Archive as PiwikArchive;
+use Piwik\ArchiveProcessor;
use Piwik\ArchiveProcessor\Parameters;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\Config;
+use Piwik\DataAccess\ArchiveSelector;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\DataAccess\ArchiveWriter;
+use Piwik\DataAccess\LogAggregator;
use Piwik\Date;
use Piwik\Db;
use Piwik\Piwik;
+use Piwik\Plugins\UserLanguage;
use Piwik\Segment;
use Piwik\Site;
use Piwik\Tests\Fixtures\OneVisitorTwoVisits;
@@ -229,6 +234,65 @@ class ArchiveTest extends IntegrationTestCase
);
}
+ public function testExistingArchivesAreReplaced()
+ {
+ $date = self::$fixture->dateTime;
+ $period = PeriodFactory::makePeriodFromQueryParams('UTC', 'day', $date);
+
+ // request an report to trigger archiving
+ $userLanguageReport = Proxy::getInstance()->call('\\Piwik\\Plugins\\UserLanguage\\API', 'getLanguage', array(
+ 'idSite' => 1,
+ 'period' => 'day',
+ 'date' => $date
+ ));
+
+ $this->assertEquals(1, $userLanguageReport->getRowsCount());
+ $this->assertEquals('UserLanguage_LanguageCode fr', $userLanguageReport->getFirstRow()->getColumn('label'));
+ $this->assertEquals('UserLanguage_LanguageCode fr', $userLanguageReport->getLastRow()->getColumn('label'));
+
+ $parameters = new Parameters(new Site(1), $period, new Segment('', ''));
+ $parameters->setRequestedPlugin('UserLanguage');
+
+ $result = ArchiveSelector::getArchiveIdAndVisits($parameters, $period->getDateStart()->getDateStartUTC());
+ $idArchive = $result ? array_shift($result) : null;
+
+ if (empty($idArchive)) {
+ $this->fail('Archive should be available');
+ }
+
+ // track a new visits now
+ $fixture = self::$fixture;
+ $t = $fixture::getTracker(1, $date, $defaultInit = true);
+ $t->setForceVisitDateTime(Date::factory($date)->addHour(1)->getDatetime());
+ $t->setUrl('http://example.org/index.htm');
+ $t->setBrowserLanguage('pt-br');
+ $fixture::checkResponse($t->doTrackPageView('my site'));
+
+ $archiveWriter = new ArchiveWriter($parameters, !!$idArchive);
+ $archiveWriter->idArchive = $idArchive;
+
+ $archiveProcessor = new ArchiveProcessor($parameters, $archiveWriter,
+ new LogAggregator($parameters));
+
+ $archiveProcessor->setNumberOfVisits(1, 1);
+
+ // directly trigger specific archiver for existing archive
+ $archiver = new UserLanguage\Archiver($archiveProcessor);
+ $archiver->aggregateDayReport();
+
+ // report should be updated
+ $userLanguageReport = Proxy::getInstance()->call('\\Piwik\\Plugins\\UserLanguage\\API', 'getLanguage', array(
+ 'idSite' => 1,
+ 'period' => 'day',
+ 'date' => $date
+ ));
+
+ $this->assertEquals(2, $userLanguageReport->getRowsCount());
+ $this->assertEquals('UserLanguage_LanguageCode fr', $userLanguageReport->getFirstRow()->getColumn('label'));
+ $this->assertEquals('UserLanguage_LanguageCode pt', $userLanguageReport->getLastRow()->getColumn('label'));
+ }
+
+
private function createManyDifferentArchiveBlobs()
{
$recordName1 = 'Actions_Actions';