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

Refs #4768 Adding integration test case that will test for expected behavior

parent a7013207
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -85,7 +85,8 @@ class Test_Piwik_Fixture_VisitsOverSeveralDays extends Fixture ...@@ -85,7 +85,8 @@ class Test_Piwik_Fixture_VisitsOverSeveralDays extends Fixture
$visitor->setIp('200.1.15.22'); $visitor->setIp('200.1.15.22');
$visitor->setForceVisitDateTime(Date::factory($dateTime)->addHour(0.2)->getDatetime()); $visitor->setForceVisitDateTime(Date::factory($dateTime)->addHour(0.2)->getDatetime());
$visitor->setUrl('http://example.org/news'); $urlWithThreeSubdirectories = 'http://example.org/sub1/sub2/sub3/news';
$visitor->setUrl($urlWithThreeSubdirectories);
self::checkResponse($visitor->doTrackPageView('ou pas')); self::checkResponse($visitor->doTrackPageView('ou pas'));
// SECOND VISIT THIS DAY // SECOND VISIT THIS DAY
......
...@@ -58,35 +58,54 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange_Archiving ...@@ -58,35 +58,54 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange_Archiving
} }
} }
// Testing Date range in January only
// Because of flat=1, this test will archive all sub-tables
$result[] = array('Actions.getPageUrls', array('idSite' => $idSite, 'date' => '2011-01-01,2011-02-01',
'periods' => array('range'),
'otherRequestParameters' => array(
'flat' => '1',
),
'testSuffix' => '_periodIsRange_flattened_')
);
return $result; return $result;
} }
/** /**
* Check that requesting period "Range" means only processing
* the requested Plugin blob (Actions in this case), not all Plugins blobs
* @depends testApi * @depends testApi
* @group Integration * @group Integration
* * * *
*/ */
public function testCheck() public function test_checkArchiveRecords_whenPeriodIsRange()
{ {
// Check that requesting period "Range" means // we expect 5 blobs for Actions plugins, because flat=1 or expanded=1 was not set
// only processing the requested Plugin blob (Actions in this case), not all Plugins blobs // so we only archived the parent table
$expectedActionsBlobs = 5;
// When flat=1, Actions plugin will process 5 + 3 extra blobs (URL = 'http://example.org/sub1/sub2/sub3/news')
$expectedActionsBlobsWhenFlattened = $expectedActionsBlobs + 3;
$tests = array( $tests = array(
// 5 blobs for the Actions plugin, 7 blobs for UserSettings, 2 blobs VisitTime // TODO Implement fix, then remove the +3 below
'archive_blob_2010_12' => (5 + 8 + 2) * 3, 'archive_blob_2010_12' => ( ($expectedActionsBlobs+3) /*Actions*/
+ 8 /* UserSettings */
+ 2 /* VisitTime */) * 3,
/** /**
* In Each "Period=range" Archive, we expect following non zero numeric entries: * In Each "Period=range" Archive, we expect following non zero numeric entries:
* 5 metrics + 1 flag //VisitsSummary * 5 metrics + 1 flag // VisitsSummary
* + 2 metrics + 1 flag //Actions * + 2 metrics + 1 flag // Actions
* + 1 flag // UserSettings * + 1 flag // UserSettings
* + 1 flag //VisitTime * + 1 flag // VisitTime
* = 11 * = 11
* *
* because we call VisitFrequency.get, this creates an archive for the visitorType==returning segment. * because we call VisitFrequency.get, this creates an archive for the visitorType==returning segment.
* -> There are two archives for each segment (one for "countryCode!=aa" * -> There are two archives for each segment (one for "countryCode!=aa"
* and VisitFrequency creates one for "countryCode!=aa;visitorType==returning") * and VisitFrequency creates one for "countryCode!=aa;visitorType==returning")
* *
* So each period=range will have = 11 records + (5 metrics + 1flag // VisitsSummary) * So each period=range will have = 11 records + (5 metrics + 1 flag // VisitsSummary)
* = 17 * = 17
* *
* Total expected records = count unique archives * records per archive * Total expected records = count unique archives * records per archive
...@@ -95,9 +114,23 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange_Archiving ...@@ -95,9 +114,23 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange_Archiving
*/ */
'archive_numeric_2010_12' => 17 * 3, 'archive_numeric_2010_12' => 17 * 3,
// all "Range" records are in December
'archive_blob_2011_01' => 0, /**
'archive_numeric_2011_01' => 0, * In the January date range,
* we archive only Actions plugins.
* It is flattened so all 3 sub-tables should be archived.
*/
'archive_blob_2011_01' => $expectedActionsBlobsWhenFlattened,
/**
* 5 metrics + 1 flag // VisitsSummary
* + 2 metrics + 1 flag // Actions
*/
'archive_numeric_2011_01' => (6 + 3),
// nothing in Feb
'archive_blob_2011_02' => 0,
'archive_numeric_2011_02' => 0,
); );
foreach ($tests as $table => $expectedRows) { foreach ($tests as $table => $expectedRows) {
$sql = "SELECT count(*) FROM " . Common::prefixTable($table) . " WHERE period = " . Piwik::$idPeriods['range']; $sql = "SELECT count(*) FROM " . Common::prefixTable($table) . " WHERE period = " . Piwik::$idPeriods['range'];
......
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<result> <result>
<row>
<label>/homepage</label>
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>1080</sum_time_spent>
<entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>6</entry_nb_actions>
<entry_sum_visit_length>1083</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<url>http://example.org/homepage</url>
</row>
<row> <row>
<label>/news</label> <label>/news</label>
<nb_visits>6</nb_visits> <nb_visits>3</nb_visits>
<nb_hits>6</nb_hits> <nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent> <sum_time_spent>0</sum_time_spent>
<entry_nb_visits>3</entry_nb_visits> <entry_nb_visits>3</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions> <entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length> <entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>3</entry_bounce_count> <entry_bounce_count>3</entry_bounce_count>
<exit_nb_visits>6</exit_nb_visits> <exit_nb_visits>3</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors> <sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
...@@ -19,19 +35,52 @@ ...@@ -19,19 +35,52 @@
<url>http://example.org/news</url> <url>http://example.org/news</url>
</row> </row>
<row> <row>
<label>/homepage</label> <label>sub1</label>
<nb_visits>3</nb_visits> <nb_visits>3</nb_visits>
<nb_hits>3</nb_hits> <nb_hits>3</nb_hits>
<sum_time_spent>1080</sum_time_spent> <sum_time_spent>0</sum_time_spent>
<entry_nb_visits>3</entry_nb_visits> <exit_nb_visits>3</exit_nb_visits>
<entry_nb_actions>6</entry_nb_actions> <avg_time_on_page>0</avg_time_on_page>
<entry_sum_visit_length>1083</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate> <bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate> <exit_rate>100%</exit_rate>
<url>http://example.org/homepage</url> <subtable>
<row>
<label>sub2</label>
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
<exit_nb_visits>3</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<subtable>
<row>
<label>sub3</label>
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
<exit_nb_visits>3</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<subtable>
<row>
<label>/news</label>
<nb_visits>3</nb_visits>
<nb_hits>3</nb_hits>
<sum_time_spent>0</sum_time_spent>
<exit_nb_visits>3</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<url>http://example.org/sub1/sub2/sub3/news</url>
</row>
</subtable>
</row>
</subtable>
</row>
</subtable>
</row> </row>
</result> </result>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<label>homepage</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>720</sum_time_spent>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>722</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<avg_time_on_page>360</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<url>http://example.org/homepage</url>
</row>
<row>
<label>news</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>2</entry_bounce_count>
<exit_nb_visits>2</exit_nb_visits>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<url>http://example.org/news</url>
</row>
</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.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter