Newer
Older
benakamoorthi
a validé
<?php
/**
* Piwik - free/libre analytics platform
benakamoorthi
a validé
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
Thomas Steur
a validé
namespace Piwik\Tests\System;
benakamoorthi
a validé
use Piwik\Application\Kernel\GlobalSettingsProvider;
mattab
a validé
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\Tests\Framework\Mock\TestConfig;
Thomas Steur
a validé
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\ManyVisitsWithMockLocationProvider;
benakamoorthi
a validé
/**
* Test Piwik's report limiting code. Make sure the datatable_archiving_maximum_rows_...
* config options limit the size of certain reports when archiving.
Thomas Steur
a validé
* @group Core
* @group BlobReportLimitingTest
benakamoorthi
a validé
*/
class BlobReportLimitingTest extends SystemTestCase
benakamoorthi
a validé
{
/**
* @var ManyVisitsWithMockLocationProvider
*/
public static $fixture = null; // initialized below class definition
benakamoorthi
a validé
public function setUp()
{
Cache::getTransientCache()->flushAll();
parent::setUp();
}
public function getApiForTesting()
{
$apiToCall = array(
'Actions.getPageUrls', 'Actions.getPageTitles', 'Actions.getDownloads', 'Actions.getOutlinks',
'CustomVariables.getCustomVariables',
'Referrers.getReferrerType', 'Referrers.getKeywords', 'Referrers.getSearchEngines',
'Referrers.getWebsites', 'Referrers.getAll', /* TODO 'Referrers.getCampaigns', */
'Resolution.getResolution', 'Resolution.getConfiguration', 'DevicesDetection.getOsVersions',
'UserCountry.getRegion', 'UserCountry.getCity',
);
diosmosis
a validé
$ecommerceApi = array('Goals.getItemsSku', 'Goals.getItemsName', 'Goals.getItemsCategory');
return array(
array($apiToCall, array('idSite' => self::$fixture->idSite,
'date' => self::$fixture->dateTime,
diosmosis
a validé
'periods' => array('day'))),
diosmosis
a validé
array($ecommerceApi, array('idSite' => self::$fixture->idSite,
'date' => self::$fixture->nextDay,
'periods' => 'day')),
);
}
diosmosis
a validé
public function getRankingQueryDisabledApiForTesting()
{
$idSite = self::$fixture->idSite;
$dateTime = self::$fixture->dateTime;
diosmosis
a validé
return array(
array('Actions.getPageUrls', array('idSite' => $idSite,
'date' => $dateTime,
diosmosis
a validé
'periods' => array('day'))),
// TODO these system tests need to be moved to Provider plugin
/*
array('Provider.getProvider', array('idSite' => $idSite,
'date' => $dateTime,
'periods' => array('month'))),
array('Provider.getProvider', array('idSite' => $idSite,
'date' => $dateTime,
'periods' => array('month'),
'segment' => 'provider==comcast.net',
'testSuffix' => '_segment_provider')),
// test getDownloads w/ period=range & flat=1
array('Actions.getDownloads', array('idSite' => $idSite,
'date' => '2010-01-02,2010-01-05',
'periods' => 'range',
'testSuffix' => '_rangeFlat',
'otherRequestParameters' => array(
'flat' => 1,
'expanded' => 0
))),
diosmosis
a validé
);
}
/**
* @dataProvider getApiForTesting
*/
public function testApi($api, $params)
{
self::setUpConfigOptions();
$this->runApiTests($api, $params);
}
/**
* @dataProvider getApiForTesting
*/
public function testApiWithFlattening($apiToCall, $params)
{
if (empty($params['testSuffix'])) {
$params['testSuffix'] = '';
}
$params['testSuffix'] .= '_flattened';
if (empty($params['otherRequestParameters'])) {
$params['otherRequestParameters'] = array();
}
$params['otherRequestParameters']['flat'] = '1';
$this->runApiTests($apiToCall, $params);
}
public function testApiWithRankingQuery()
{
// custom setup
self::deleteArchiveTables();
Config::getInstance()->General['archiving_ranking_query_row_limit'] = 3;
mattab
a validé
ArchivingHelper::reloadConfig();
foreach ($this->getApiForTesting() as $pair) {
list($apiToCall, $params) = $pair;
if (empty($params['testSuffix'])) {
$params['testSuffix'] = '';
}
$params['testSuffix'] .= '_rankingQuery';
$this->runApiTests($apiToCall, $params);
}
}
diosmosis
a validé
public function testApiWithRankingQueryDisabled()
{
self::deleteArchiveTables();
$generalConfig =& Config::getInstance()->General;
$generalConfig['datatable_archiving_maximum_rows_referrers'] = 500;
$generalConfig['datatable_archiving_maximum_rows_subtable_referrers'] = 500;
diosmosis
a validé
$generalConfig['datatable_archiving_maximum_rows_actions'] = 500;
$generalConfig['datatable_archiving_maximum_rows_subtable_actions'] = 500;
$generalConfig['datatable_archiving_maximum_rows_standard'] = 500;
$generalConfig['datatable_archiving_maximum_rows_custom_variables'] = 500;
$generalConfig['datatable_archiving_maximum_rows_subtable_custom_variables'] = 500;
diosmosis
a validé
$generalConfig['archiving_ranking_query_row_limit'] = 0;
diosmosis
a validé
foreach ($this->getRankingQueryDisabledApiForTesting() as $pair) {
list($apiToCall, $params) = $pair;
if (empty($params['testSuffix'])) {
$params['testSuffix'] = '';
}
$params['testSuffix'] .= '_rankingQueryDisabled';
diosmosis
a validé
$this->runApiTests($apiToCall, $params);
}
}
Benaka Moorthi
a validé
public static function getOutputPrefix()
{
return 'reportLimiting';
}
protected static function setUpConfigOptions()
{
$generalConfig =& Config::getInstance()->General;
$generalConfig['datatable_archiving_maximum_rows_referers'] = 3;
$generalConfig['datatable_archiving_maximum_rows_subtable_referers'] = 2;
$generalConfig['datatable_archiving_maximum_rows_actions'] = 4;
$generalConfig['datatable_archiving_maximum_rows_custom_variables'] = 3;
$generalConfig['datatable_archiving_maximum_rows_subtable_custom_variables'] = 2;
$generalConfig['datatable_archiving_maximum_rows_subtable_actions'] = 2;
$generalConfig['datatable_archiving_maximum_rows_standard'] = 3;
$generalConfig['archiving_ranking_query_row_limit'] = 50000;
}
diosmosis
a validé
}
benakamoorthi
a validé
BlobReportLimitingTest::$fixture = new ManyVisitsWithMockLocationProvider();