Skip to content
Extraits de code Groupes Projets
Valider efadb8dc rédigé par mattpiwik's avatar mattpiwik
Parcourir les fichiers

Refs #1446

 * Adding test covering tracking on multiple websites, test requesting all periods


git-svn-id: http://dev.piwik.org/svn/trunk@2441 59fd770c-687e-43c8-a1e3-f5a4ff64c105
parent 93acf104
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 644 ajouts et 71 suppressions
......@@ -93,7 +93,11 @@ class Test_Piwik_ReleaseCheckList extends UnitTestCase
function test_piwikTrackerDebugIsOff()
{
$this->assertTrue(!isset($GLOBALS['PIWIK_TRACKER_DEBUG']));
// hiding echoed out message on empty request
ob_start();
include PIWIK_PATH_TEST_TO_ROOT . "/piwik.php";
ob_clean();
$this->assertTrue($GLOBALS['PIWIK_TRACKER_DEBUG'] === false);
}
......
......@@ -20,24 +20,24 @@ class Test_Piwik_Url extends UnitTestCase
$this->assertEqual(Piwik_Url::getCurrentUrl(), Piwik_Url::getCurrentUrlWithoutQueryString());
$this->assertEqual(Piwik_Url::getCurrentUrl(), Piwik_Url::getCurrentScheme() . '://' . Piwik_Url::getCurrentHost() . Piwik_Url::getCurrentScriptName() );
print("<br>\nPiwik_Url::getCurrentQueryStringWithParametersModified() "
. Piwik_Url::getCurrentQueryStringWithParametersModified(array()));
print("<br>\nPiwik_Url::getCurrentUrl() "
print("<br>\nPiwik_Url::getCurrentUrl() -> "
. Piwik_Url::getCurrentUrl());
print("<br>\nPiwik_Url::getCurrentUrlWithoutQueryString() "
print("<br>\nPiwik_Url::getCurrentUrlWithoutQueryString() -> "
. Piwik_Url::getCurrentUrlWithoutQueryString());
print("<br>\nPiwik_Url::getCurrentUrlWithoutFileName() "
print("<br>\nPiwik_Url::getCurrentUrlWithoutFileName() -> "
. Piwik_Url::getCurrentUrlWithoutFileName());
print("<br>\nPiwik_Url::getCurrentScriptName() "
. Piwik_Url::getCurrentScriptName());
print("<br>\nPiwik_Url::getCurrentScriptPath() "
print("<br>\nPiwik_Url::getCurrentScriptPath() -> "
. Piwik_Url::getCurrentScriptPath());
print("<br>\nPiwik_Url::getCurrentHost() "
print("<br>\nPiwik_Url::getCurrentHost() -> "
. Piwik_Url::getCurrentHost());
print("<br>\nPiwik_Url::getCurrentQueryString() "
print("<br>\nPiwik_Url::getCurrentScriptName() -> "
. Piwik_Url::getCurrentScriptName());
print("<br>\nPiwik_Url::getCurrentQueryString() -> "
. Piwik_Url::getCurrentQueryString());
print("<br>\nPiwik_Url::getArrayFromCurrentQueryString() ");
print("<br>\nPiwik_Url::getArrayFromCurrentQueryString() -> ");
var_dump(Piwik_Url::getArrayFromCurrentQueryString());
print("<br>\nPiwik_Url::getCurrentQueryStringWithParametersModified() "
. Piwik_Url::getCurrentQueryStringWithParametersModified(array()));
// setting parameter to null should remove it from url
// test on Url.test.php?test=value
......
......@@ -149,7 +149,6 @@ abstract class Test_Integration extends Test_Database
$pluginsManager = Piwik_PluginsManager::getInstance();
$pluginsManager->loadPlugins( Zend_Registry::get('config')->Plugins->Plugins->toArray() );
$pluginsManager->installLoadedPlugins();
}
/**
......@@ -176,10 +175,13 @@ abstract class Test_Integration extends Test_Database
* If any API is set as excluded (see list below) then it will be ignored.
*
* @param $parametersToSet
* @param $formats Array of formats to fetch from API
* @param $formats Array of 'format' to fetch from API
* @param $periods Array of 'period' to query API
* @param $setDateLastN If set to true, the 'date' parameter will be rewritten to query instead a range of dates, rather than one period only.
*
* @return array of API URLs query strings
*/
protected function generateUrlsApi( $parametersToSet, $formats )
protected function generateUrlsApi( $parametersToSet, $formats, $periods, $setDateLastN = false )
{
// List of Modules, or Module.Method that should not be called as part of the XML output compare
// Usually these modules either return random changing data, or are already tester in specific unit tests.
......@@ -224,21 +226,46 @@ abstract class Test_Integration extends Test_Database
continue;
}
// Generate for each specified format
foreach($formats as $format)
foreach($periods as $period)
{
$parametersToSet['format'] = $format;
$exampleUrl = $apiMetadata->getExampleUrl($class, $methodName, $parametersToSet);
if($exampleUrl === false)
$parametersToSet['period'] = $period;
// If date must be a date range, we process this date range by adding 6 periods to it
if($setDateLastN === true)
{
if(!isset($parametersToSet['dateRewriteBackup']))
{
$parametersToSet['dateRewriteBackup'] = $parametersToSet['date'];
}
$lastCount = 6;
$firstDate = $parametersToSet['dateRewriteBackup'];
$secondDate = date('Y-m-d', strtotime("+$lastCount " . $period . "s", strtotime($firstDate)));
$parametersToSet['date'] = $firstDate . ',' . $secondDate;
}
// Generate for each specified format
foreach($formats as $format)
{
$skipped[] = $apiId;
continue;
$parametersToSet['format'] = $format;
$exampleUrl = $apiMetadata->getExampleUrl($class, $methodName, $parametersToSet);
if($exampleUrl === false)
{
$skipped[] = $apiId;
continue;
}
// Remove the first ? in the query string
$exampleUrl = substr($exampleUrl, 1);
$apiRequestId = $apiId;
if(strpos($exampleUrl, 'period=') !== false)
{
$apiRequestId .= '_' . $period;
}
$apiRequestId .= '.' . $format;
$requestUrls[$apiRequestId] = $exampleUrl;
}
// Remove the first ? in the query string
$exampleUrl = substr($exampleUrl, 1);
$apiRequestId = $apiId . '.' . $format;
$requestUrls[$apiRequestId] = $exampleUrl;
}
}
}
......@@ -255,15 +282,20 @@ abstract class Test_Integration extends Test_Database
*
* @param $testName Used to write the output in a file, used as filename prefix
* @param $formats String or array of formats to fetch from API
* @param $idSite
* @param $dateTime
* @param $idSite Id site
* @param $dateTime Date time string of reports to request
* @param $setDateLastN When set to true, 'date' parameter passed to API request will be rewritten to query a range of dates rather than 1 date only
*
* @return void
*/
function callGetApiCompareOutput($testName, $formats = 'xml', $idSite = false, $dateTime = false)
function callGetApiCompareOutput($testName, $formats = 'xml', $idSite = false, $dateTime = false, $periods = 'day', $setDateLastN = false)
{
$path = $this->getPathToTestDirectory();
$pathProcessed = $path . "/processed/";
$pathExpected = $path . "/expected/";
$parametersToSet = array(
'idSite' => $idSite,
'period' => 'day',
'date' => date('Y-m-d', strtotime($dateTime)),
'expanded' => '1',
'piwikUrl' => 'http://example.org/piwik/'
......@@ -276,14 +308,15 @@ abstract class Test_Integration extends Test_Database
{
$formats = array($formats);
}
$requestUrls = $this->generateUrlsApi($parametersToSet, $formats);
if(!is_array($periods))
{
$periods = array($periods);
}
$requestUrls = $this->generateUrlsApi($parametersToSet, $formats, $periods, $setDateLastN);
foreach($requestUrls as $apiId => $requestUrl)
{
$request = new Piwik_API_Request($requestUrl);
$path = $this->getPathToTestDirectory();
$pathProcessed = $path . "/processed/";
$pathExpected = $path . "/expected/";
// $TEST_NAME - $API_METHOD
$filename = $testName . '__' . $apiId;
......@@ -294,20 +327,22 @@ abstract class Test_Integration extends Test_Database
$response = (string)@$request->process();
file_put_contents( $pathProcessed . $filename, $response );
$expected = file_get_contents( $pathExpected . $filename);
$expectedFilePath = $pathExpected . $filename;
$expected = file_get_contents($expectedFilePath );
if(empty($expected))
{
$this->fail(" ERROR: Could not find set of 'expected' files. For new tests, to pass the test, you can copy files from /processed into $pathExpected after checking the output is valid.");
$this->fail(" ERROR: Could not find expected API output '$expectedFilePath'. For new tests, to pass the test, you can copy files from the processed/ directory into $pathExpected after checking that the output is valid.");
continue;
}
// When tests run on Windows EOL delimiters are not the same as UNIX default EOL used in the renderers
$expected = str_replace("\r\n", "\n", $expected);
$this->assertEqual(trim($response), trim($expected), "In $filename, %s");
if($response != $expected){
echo 'ERROR FOR' . $apiId . ' -- FETCHED RESPONSE, EXPECTED RESPONSE';
var_dump('ERROR FOR' . $apiId . ' -- FETCHED RESPONSE, EXPECTED RESPONSE');
echo "\n";
echo ($response);
var_dump($response);
echo "\n";
echo ($expected);
var_dump($expected);
echo "\n";
}
}
......
......@@ -25,33 +25,20 @@ require_once PIWIK_INCLUDE_PATH . '/tests/integration/Integration.php';
*/
class Test_Piwik_Integration_Main extends Test_Integration
{
/*
* Path where expected/processed output files are stored
*/
public function getPathToTestDirectory()
{
return PIWIK_INCLUDE_PATH . '/tests/integration';
}
/**
* API Tests
* request day/week/month/year for full feature set
* request all formats for full feature set
* request multiple sites
*
* Fetch API methods, get those get* with idSite, date, period parameters
* Known rules for expanded, idSubtable, Live! parameters, typeReferer
* Blacklist of API, UsersManager, SitesManager,LanguagesManager
* Force today archive, then make sure all tests use same cached archive.
* Call all API methods, check XML and record new output in directory.
*
* Widget Tests
* Loop over all widgets and call with standard parameters. Check HTML output.
*
*/
// test periods
// test several websites
/*
* Testing various wrong Tracker requests.
* Testing various wrong Tracker requests and check that they behave as expected:
* not throwing errors and not recording data.
*
* API will archive and output empty stats.
*
*/
function test_noVisit()
{
......@@ -59,7 +46,6 @@ class Test_Piwik_Integration_Main extends Test_Integration
$idSite = $this->createWebsite($dateTime);
$t = $this->getTracker($idSite, $dateTime, $defaultInit = true);
// TODO Check piwik.php GIF output on all requests
// Trigger wrong website
$trackerWrongWebsite = $this->getTracker($idSiteFake = 33, $dateTime, $defaultInit = true);
......@@ -116,15 +102,19 @@ class Test_Piwik_Integration_Main extends Test_Integration
Piwik_SitesManager_API::getInstance()->updateSite($idSite, 'new name', null, null, $parameterToExclude . ',anotherParameter');
// Record 1st page view
$t->setUrl( 'http://example.org/index.htm?excluded_Parameter=SHOULD_NOT_DISPLAY?parameter=Should display' );
$urlPage1 = 'http://example.org/index.htm?excluded_Parameter=SHOULD_NOT_DISPLAY?parameter=Should display';
$t->setUrl( $urlPage1 );
$this->checkResponse($t->doTrackPageView( 'incredible title!'));
// Testing that / and index.htm above record with different URLs
// Recording the 2nd page after 3 minutes
$t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.05)->getDatetime());
$t->setUrl( 'http://example.org/' );
$urlPage2 = 'http://example.org/' ;
$t->setUrl( $urlPage2 );
$t->setUrlReferer($urlPage1);
$this->checkResponse($t->doTrackPageView( 'Second page view - should be registered as URL /'));
$t->setUrlReferer($urlPage2);
// Click on external link after 6 minutes (3rd action)
$t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.1)->getDatetime());
$this->checkResponse($t->doTrackAction( 'http://dev.piwik.org/svn', 'link' ));
......@@ -161,27 +151,85 @@ class Test_Piwik_Integration_Main extends Test_Integration
$this->callGetApiCompareOutput(__FUNCTION__, 'xml', $idSite, $dateTime);
}
/*
* Tests Tracker several websites, different days.
* Tests API for period=day/week/month/year, requesting data for both websites,
* and requesting data for last N periods.
*/
function test_TwoVisitors_twoWebsites_differentDays()
{
// Tests run in UTC, the Tracker in UTC
$dateTime = '2010-01-03 11:22:33';
$idSite = $this->createWebsite($dateTime);
$idSite2 = $this->createWebsite($dateTime);
$this->setApiToCall(array('VisitsSummary.get', 'Referers.getWebsites'));
ob_start();
// -
// First visitor on Idsite 1: one page view
$t = $this->getTracker($idSite, $dateTime, $defaultInit = true);
$t->setUrlReferer( 'http://referer.com/page.htm?param=valuewith some spaces');
$t->setUrl('http://example.org/homepage');
$this->checkResponse($t->doTrackPageView(''));
// -
// Second new visitor on Idsite 1: one page view
$t->setIp('1.5.6.8');
$t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(1)->getDatetime());
$t->setUrlReferer( '' );
$t->setUserAgent('Opera/9.63 (Windows NT 5.1; U; en) Presto/2.1.1');
$t->setUrl('http://example.org/products');
$this->checkResponse($t->doTrackPageView('second visitor, first page view'));
// -
// Second visitor again on Idsite 1: 2 page views 2 days later
$t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(48)->getDatetime());
$t->setUrlReferer( 'http://referer.com/Other_Page.htm' );
$t->setUrl('http://example.org/purchase');
$t->doTrackPageView('second visitor, two days later a new visit');
$t->setUrl('http://example.org/thankyou');
$this->checkResponse($t->doTrackPageView('second pageview'));
// -
// First visitor on Idsite 2: one page view, with Website referer
$t2 = $this->getTracker($idSite2, Piwik_Date::factory($dateTime)->addHour(24)->getDatetime(), $defaultInit = true);
$t2->setUserAgent('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;)');
$t2->setUrlReferer('http://only-homepage-referer.com/');
$t2->setUrl('http://example2.com/home');
$this->checkResponse($t2->doTrackPageView('Website 2 page view'));
// -
// Test Referer.get* methods in XML
$periods = array('day', 'week', 'month', 'year');
// Request data for both websites at once
$idSite = 'all';
// Request data for the last 6 periods
$this->callGetApiCompareOutput(__FUNCTION__, 'xml', $idSite = 'all', $dateTime, $periods, $setDateLastN = true);
}
/**
* To do list (to be converted as a ticket)
* - test std API parameters filter_*
* - report on performance of tracker and API/archiving. Reuse in a load testing suite.
* How to report on historical data though? possible with Hudson?
* - Unit test for Goal API add/update/delete, LanguagesManager, DBStats, SEO.getRank, Live.getLast*
* - Tracker API should forward http headers 'HTTP_CLIENT_IP' 'HTTP_X_FORWARDED_FOR', used in the tracking algorithm
* which would allow for testing their parsing
* - Tracker test/set/forward request/response cookies
* - Test API with subtables
* - test widgets HTML output?
* - test Std API parameters filter_*
* - Add unit tests for: Goal API add/update/delete, LanguagesManager, DBStats, SEO.getRank, Live.getLast*
* - Call API to fetch custom subtables
* 23 => string 'Piwik_Referers_API.getSearchEnginesFromKeywordId' (length=48)
* 24 => string 'Piwik_Referers_API.getKeywordsFromSearchEngineId' (length=48)
* 25 => string 'Piwik_Referers_API.getKeywordsFromCampaignId' (length=44)
* 26 => string 'Piwik_Referers_API.getUrlsFromWebsiteId' (length=39)
* - Test API authentication with token_auth
*
* PiwikTracker:
* - Unknown visitor, detect outlink on one of the alias host -> is it new visit, or request to ignore? probably ignore
* - API_URL should be set when file is downloaded
* - set cookies in request
* - set cookies from response (optional)
* - negative id site should not throw exception
* - Tracker API should forward http headers 'HTTP_CLIENT_IP' 'HTTP_X_FORWARDED_FOR', used in the tracking algorithm
* which would allow for testing their parsing
*
* Later
* - report on performance of tracker and API/archiving. Reuse in a load testing suite.
* How to report on historical data though? possible with Hudson?
*/
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
<result date="2010-01-03">
<row>
<label>referer.com</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<idsubdatatable>80</idsubdatatable>
<subtable>
<row>
<label>http://referer.com/page.htm?param=valuewith some spaces</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
</row>
</subtable>
</row>
</result>
<result date="2010-01-04" />
<result date="2010-01-05">
<row>
<label>referer.com</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>2</nb_actions>
<max_actions>2</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>0</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<idsubdatatable>22</idsubdatatable>
<subtable>
<row>
<label>http://referer.com/Other_Page.htm</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>2</nb_actions>
<max_actions>2</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>0</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
</row>
</subtable>
</row>
</result>
<result date="2010-01-06" />
<result date="2010-01-07" />
<result date="2010-01-08" />
<result date="2010-01-09" />
</result>
<result idSite="2">
<result date="2010-01-03" />
<result date="2010-01-04">
<row>
<label>only-homepage-referer.com</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<idsubdatatable>22</idsubdatatable>
<subtable>
<row>
<label>http://only-homepage-referer.com/</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
</row>
</subtable>
</row>
</result>
<result date="2010-01-05" />
<result date="2010-01-06" />
<result date="2010-01-07" />
<result date="2010-01-08" />
<result date="2010-01-09" />
</result>
</results>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
<result date="2010-01">
<row>
<label>referer.com</label>
<nb_visits>2</nb_visits>
<nb_actions>3</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<idsubdatatable>132</idsubdatatable>
<subtable>
<row>
<label>http://referer.com/Other_Page.htm</label>
<nb_visits>1</nb_visits>
<nb_actions>2</nb_actions>
<max_actions>2</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>0</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
</row>
<row>
<label>http://referer.com/page.htm?param=valuewith some spaces</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
</row>
</subtable>
</row>
</result>
<result date="2010-02" />
<result date="2010-03" />
<result date="2010-04" />
<result date="2010-05" />
<result date="2010-06" />
<result date="2010-07" />
</result>
<result idSite="2">
<result date="2010-01">
<row>
<label>only-homepage-referer.com</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<idsubdatatable>133</idsubdatatable>
<subtable>
<row>
<label>http://only-homepage-referer.com/</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
</row>
</subtable>
</row>
</result>
<result date="2010-02" />
<result date="2010-03" />
<result date="2010-04" />
<result date="2010-05" />
<result date="2010-06" />
<result date="2010-07" />
</result>
</results>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
<result date="2009-12-28 to 2010-01-03">
<row>
<label>referer.com</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<idsubdatatable>40</idsubdatatable>
<subtable>
<row>
<label>http://referer.com/page.htm?param=valuewith some spaces</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
</row>
</subtable>
</row>
</result>
<result date="2010-01-04 to 2010-01-10">
<row>
<label>referer.com</label>
<nb_visits>1</nb_visits>
<nb_actions>2</nb_actions>
<max_actions>2</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>0</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<idsubdatatable>35</idsubdatatable>
<subtable>
<row>
<label>http://referer.com/Other_Page.htm</label>
<nb_visits>1</nb_visits>
<nb_actions>2</nb_actions>
<max_actions>2</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>0</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
</row>
</subtable>
</row>
</result>
<result date="2010-01-11 to 2010-01-17" />
<result date="2010-01-18 to 2010-01-24" />
<result date="2010-01-25 to 2010-01-31" />
<result date="2010-02-01 to 2010-02-07" />
<result date="2010-02-08 to 2010-02-14" />
</result>
<result idSite="2">
<result date="2009-12-28 to 2010-01-03" />
<result date="2010-01-04 to 2010-01-10">
<row>
<label>only-homepage-referer.com</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<idsubdatatable>34</idsubdatatable>
<subtable>
<row>
<label>http://only-homepage-referer.com/</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
</row>
</subtable>
</row>
</result>
<result date="2010-01-11 to 2010-01-17" />
<result date="2010-01-18 to 2010-01-24" />
<result date="2010-01-25 to 2010-01-31" />
<result date="2010-02-01 to 2010-02-07" />
<result date="2010-02-08 to 2010-02-14" />
</result>
</results>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
<result date="2010">
<row>
<label>referer.com</label>
<nb_visits>2</nb_visits>
<nb_actions>3</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<idsubdatatable>54</idsubdatatable>
<subtable>
<row>
<label>http://referer.com/Other_Page.htm</label>
<nb_visits>1</nb_visits>
<nb_actions>2</nb_actions>
<max_actions>2</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>0</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
</row>
<row>
<label>http://referer.com/page.htm?param=valuewith some spaces</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
</row>
</subtable>
</row>
</result>
<result date="2011" />
<result date="2012" />
<result date="2013" />
<result date="2014" />
<result date="2015" />
<result date="2016" />
</result>
<result idSite="2">
<result date="2010">
<row>
<label>only-homepage-referer.com</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<idsubdatatable>54</idsubdatatable>
<subtable>
<row>
<label>http://only-homepage-referer.com/</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
</row>
</subtable>
</row>
</result>
<result date="2011" />
<result date="2012" />
<result date="2013" />
<result date="2014" />
<result date="2015" />
<result date="2016" />
</result>
</results>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
<result date="2010-01-03">
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
<max_actions>1</max_actions>
<bounce_count>2</bounce_count>
</result>
<result date="2010-01-04" />
<result date="2010-01-05">
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>2</nb_actions>
<max_actions>2</max_actions>
</result>
<result date="2010-01-06" />
<result date="2010-01-07" />
<result date="2010-01-08" />
<result date="2010-01-09" />
</result>
<result idSite="2">
<result date="2010-01-03" />
<result date="2010-01-04">
<bounce_count>1</bounce_count>
<max_actions>1</max_actions>
<nb_actions>1</nb_actions>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
</result>
<result date="2010-01-05" />
<result date="2010-01-06" />
<result date="2010-01-07" />
<result date="2010-01-08" />
<result date="2010-01-09" />
</result>
</results>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
<result date="2010-01">
<bounce_count>2</bounce_count>
<max_actions>2</max_actions>
<nb_actions>4</nb_actions>
<nb_uniq_visitors>3</nb_uniq_visitors>
<nb_visits>3</nb_visits>
</result>
<result date="2010-02" />
<result date="2010-03" />
<result date="2010-04" />
<result date="2010-05" />
<result date="2010-06" />
<result date="2010-07" />
</result>
<result idSite="2">
<result date="2010-01">
<bounce_count>1</bounce_count>
<max_actions>1</max_actions>
<nb_actions>1</nb_actions>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
</result>
<result date="2010-02" />
<result date="2010-03" />
<result date="2010-04" />
<result date="2010-05" />
<result date="2010-06" />
<result date="2010-07" />
</result>
</results>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
<result date="2009-12-28 to 2010-01-03">
<bounce_count>2</bounce_count>
<max_actions>1</max_actions>
<nb_actions>2</nb_actions>
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>2</nb_visits>
</result>
<result date="2010-01-04 to 2010-01-10">
<max_actions>2</max_actions>
<nb_actions>2</nb_actions>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
</result>
<result date="2010-01-11 to 2010-01-17" />
<result date="2010-01-18 to 2010-01-24" />
<result date="2010-01-25 to 2010-01-31" />
<result date="2010-02-01 to 2010-02-07" />
<result date="2010-02-08 to 2010-02-14" />
</result>
<result idSite="2">
<result date="2009-12-28 to 2010-01-03" />
<result date="2010-01-04 to 2010-01-10">
<bounce_count>1</bounce_count>
<max_actions>1</max_actions>
<nb_actions>1</nb_actions>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
</result>
<result date="2010-01-11 to 2010-01-17" />
<result date="2010-01-18 to 2010-01-24" />
<result date="2010-01-25 to 2010-01-31" />
<result date="2010-02-01 to 2010-02-07" />
<result date="2010-02-08 to 2010-02-14" />
</result>
</results>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
<result date="2010">
<bounce_count>2</bounce_count>
<max_actions>2</max_actions>
<nb_actions>4</nb_actions>
<nb_uniq_visitors>3</nb_uniq_visitors>
<nb_visits>3</nb_visits>
</result>
<result date="2011" />
<result date="2012" />
<result date="2013" />
<result date="2014" />
<result date="2015" />
<result date="2016" />
</result>
<result idSite="2">
<result date="2010">
<bounce_count>1</bounce_count>
<max_actions>1</max_actions>
<nb_actions>1</nb_actions>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
</result>
<result date="2011" />
<result date="2012" />
<result date="2013" />
<result date="2014" />
<result date="2015" />
<result date="2016" />
</result>
</results>
\ 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