Skip to content
Extraits de code Groupes Projets
Valider 8dd69956 rédigé par diosmosis's avatar diosmosis
Parcourir les fichiers

Refs #6079, add tests for cross website unique visitor aggregation.

parent 482e7972
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -120,7 +120,7 @@ class ArchiveProcessor ...@@ -120,7 +120,7 @@ class ArchiveProcessor
$this->archiveWriter = $archiveWriter; $this->archiveWriter = $archiveWriter;
$this->skipUniqueVisitorsCalculationForMultipleSites = $this->skipUniqueVisitorsCalculationForMultipleSites =
Config::getInstance()->General['enable_processing_unique_visitors_multiple_sites'] == 1; Config::getInstance()->General['enable_processing_unique_visitors_multiple_sites'] == 1; // TODO: move logic to Rules
} }
protected function getArchive() protected function getArchive()
......
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Tests\Fixtures;
use Piwik\Common;
use Piwik\Date;
use Piwik\Db;
use Piwik\Tests\Fixture;
/**
* Adds three sites and tracks some visits w/ visitors that visit each site.
*/
class ThreeSitesWithSharedVisitors extends Fixture
{
public $idSite = 1;
public $dateTime = '2010-03-06 11:22:33';
public function setUp()
{
$this->setUpWebsitesAndGoals();
$this->trackVisits();
}
public function tearDown()
{
// empty
}
private function setUpWebsitesAndGoals()
{
if (!self::siteCreated($idSite = 1)) {
self::createWebsite($this->dateTime);
}
if (!self::siteCreated($idSite = 2)) {
self::createWebsite($this->dateTime);
}
if (!self::siteCreated($idSite = 3)) {
self::createWebsite($this->dateTime);
}
}
private function trackVisits()
{
$dateTime = $this->dateTime;
$idSite = $this->idSite;
// two visits to site 1 & 3
$visitor1 = self::getTracker($idSite, $dateTime, $defaultInit = true);
$visitor1->setForceVisitDateTime(Date::factory($this->dateTime)->getDatetime());
$visitor1->setUrl('http://helios.org/alpha');
$visitor1->doTrackPageView("page title");
$visitor1->setIdSite(3);
$visitor1->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(1)->getDatetime());
$visitor1->setUrl('http://taura.org/');
$visitor1->doTrackPageView("page title");
// one visit to site 1
$visitor2 = self::getTracker($idSite, $dateTime, $defaultInit = true);
$visitor2->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(2)->getDatetime());
$visitor2->setUrl('http://helios.org/beta');
$visitor2->doTrackPageView("page title 2");
// two visits to site 2 and 3
$visitor3 = self::getTracker($idSite = 2, $dateTime, $defaultInit = true);
$visitor3->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(3)->getDatetime());
$visitor3->setUrl('http://virgon.org/');
$visitor3->doTrackPageView("page title 2");
$visitor3->setIdSite(3);
$visitor3->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(4)->getDatetime());
$visitor3->setUrl('http://taura.org/');
$visitor3->doTrackPageView("page title");
}
}
\ No newline at end of file
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Tests\Integration;
use Piwik\Config;
use Piwik\Piwik;
use Piwik\Tests\Fixture;
use Piwik\Tests\Fixtures\ThreeSitesWithSharedVisitors;
use Piwik\Tests\IntegrationTestCase;
/**
* @group Integration
* @group MultipleSitesArchivingTest
*/
class MultipleSitesArchivingTest extends IntegrationTestCase
{
public static $fixture = null; // initialized below class definition
public static function setUpBeforeClass()
{
parent::setUpBeforeClass();
$extraSite = Fixture::createWebsite(self::$fixture->dateTime, $ecommerce = 1, "the site");
Piwik::addAction("ArchiveProcessor.Parameters.getIdSites", function (&$sites, $period) use ($extraSite) {
if (reset($sites) == $extraSite) {
$sites = array(1, 2, 3);
}
});
Config::getInstance()->General['enable_processing_unique_visitors_multiple_sites'] = 0;
}
public function getApiForTesting()
{
$dateTime = self::$fixture->dateTime;
return array(
array('VisitsSummary.get', array('idSite' => 4,
'date' => $dateTime,
'periods' => array('day', 'month'),
'testSuffix' => '_sitesGroup')),
);
}
/**
* @dataProvider getApiForTesting
*/
public function testApi($api, $params)
{
$this->runApiTests($api, $params);
}
}
MultipleSitesArchivingTest::$fixture = new ThreeSitesWithSharedVisitors();
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<result>
<nb_uniq_visitors>3</nb_uniq_visitors>
<nb_visits>5</nb_visits>
<nb_actions>5</nb_actions>
<nb_visits_converted>0</nb_visits_converted>
<bounce_count>5</bounce_count>
<sum_visit_length>0</sum_visit_length>
<max_actions>1</max_actions>
<bounce_rate>100%</bounce_rate>
<nb_actions_per_visit>1</nb_actions_per_visit>
<avg_time_on_site>0</avg_time_on_site>
</result>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<result>
<nb_uniq_visitors>3</nb_uniq_visitors>
<nb_visits>5</nb_visits>
<nb_actions>5</nb_actions>
<nb_visits_converted>0</nb_visits_converted>
<bounce_count>5</bounce_count>
<sum_visit_length>0</sum_visit_length>
<max_actions>1</max_actions>
<bounce_rate>100%</bounce_rate>
<nb_actions_per_visit>1</nb_actions_per_visit>
<avg_time_on_site>0</avg_time_on_site>
</result>
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter