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:
authordiosmosis <benaka@piwik.pro>2014-09-09 12:28:39 +0400
committerdiosmosis <benaka@piwik.pro>2014-09-09 16:29:46 +0400
commit8dd69956cf30bb65c8e261ffac2d6c0b1be9a993 (patch)
tree97bc6e668b31dd2949a20502a4efef9221ca107c
parent482e797236ff984d450dbf5802f7148bdc40d94b (diff)
Refs #6079, add tests for cross website unique visitor aggregation.
-rw-r--r--core/ArchiveProcessor.php2
-rw-r--r--tests/PHPUnit/Fixtures/ThreeSitesWithSharedVisitors.php82
-rw-r--r--tests/PHPUnit/Integration/MultipleSitesArchivingTest.php60
-rw-r--r--tests/PHPUnit/Integration/expected/test_MultipleSitesArchivingTest_sitesGroup__VisitsSummary.get_day.xml13
-rw-r--r--tests/PHPUnit/Integration/expected/test_MultipleSitesArchivingTest_sitesGroup__VisitsSummary.get_month.xml13
5 files changed, 169 insertions, 1 deletions
diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php
index 9cc67f6271..bd0b0e3d10 100644
--- a/core/ArchiveProcessor.php
+++ b/core/ArchiveProcessor.php
@@ -120,7 +120,7 @@ class ArchiveProcessor
$this->archiveWriter = $archiveWriter;
$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()
diff --git a/tests/PHPUnit/Fixtures/ThreeSitesWithSharedVisitors.php b/tests/PHPUnit/Fixtures/ThreeSitesWithSharedVisitors.php
new file mode 100644
index 0000000000..88df341fbc
--- /dev/null
+++ b/tests/PHPUnit/Fixtures/ThreeSitesWithSharedVisitors.php
@@ -0,0 +1,82 @@
+<?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
diff --git a/tests/PHPUnit/Integration/MultipleSitesArchivingTest.php b/tests/PHPUnit/Integration/MultipleSitesArchivingTest.php
new file mode 100644
index 0000000000..06c366dbe5
--- /dev/null
+++ b/tests/PHPUnit/Integration/MultipleSitesArchivingTest.php
@@ -0,0 +1,60 @@
+<?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
diff --git a/tests/PHPUnit/Integration/expected/test_MultipleSitesArchivingTest_sitesGroup__VisitsSummary.get_day.xml b/tests/PHPUnit/Integration/expected/test_MultipleSitesArchivingTest_sitesGroup__VisitsSummary.get_day.xml
new file mode 100644
index 0000000000..3cdd6ab92e
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_MultipleSitesArchivingTest_sitesGroup__VisitsSummary.get_day.xml
@@ -0,0 +1,13 @@
+<?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
diff --git a/tests/PHPUnit/Integration/expected/test_MultipleSitesArchivingTest_sitesGroup__VisitsSummary.get_month.xml b/tests/PHPUnit/Integration/expected/test_MultipleSitesArchivingTest_sitesGroup__VisitsSummary.get_month.xml
new file mode 100644
index 0000000000..3cdd6ab92e
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_MultipleSitesArchivingTest_sitesGroup__VisitsSummary.get_month.xml
@@ -0,0 +1,13 @@
+<?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