diff --git a/tests/PHPUnit/Fixtures/VisitsOverSeveralDays.php b/tests/PHPUnit/Fixtures/VisitsOverSeveralDays.php index 08d7e3dbcdaa29982fcc722dff7c67cdda211a87..09ba1ea470abcd211a97a31ced79a8174e6ffaa8 100644 --- a/tests/PHPUnit/Fixtures/VisitsOverSeveralDays.php +++ b/tests/PHPUnit/Fixtures/VisitsOverSeveralDays.php @@ -85,7 +85,8 @@ class Test_Piwik_Fixture_VisitsOverSeveralDays extends Fixture $visitor->setIp('200.1.15.22'); $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')); // SECOND VISIT THIS DAY diff --git a/tests/PHPUnit/Integration/OneVisitorOneWebsite_SeveralDaysDateRange_ArchivingTestsTest.php b/tests/PHPUnit/Integration/OneVisitorOneWebsite_SeveralDaysDateRange_ArchivingTestsTest.php index 124c76044f82f85c6080a1a76ae2c124f5c211d9..b751a1b4a58fefaa94599af23ef0ffe8df02a60a 100755 --- a/tests/PHPUnit/Integration/OneVisitorOneWebsite_SeveralDaysDateRange_ArchivingTestsTest.php +++ b/tests/PHPUnit/Integration/OneVisitorOneWebsite_SeveralDaysDateRange_ArchivingTestsTest.php @@ -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; } /** + * Check that requesting period "Range" means only processing + * the requested Plugin blob (Actions in this case), not all Plugins blobs + * @depends testApi * @group Integration * * */ - public function testCheck() + public function test_checkArchiveRecords_whenPeriodIsRange() { - // Check that requesting period "Range" means - // only processing the requested Plugin blob (Actions in this case), not all Plugins blobs + // we expect 5 blobs for Actions plugins, because flat=1 or expanded=1 was not set + // 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( - // 5 blobs for the Actions plugin, 7 blobs for UserSettings, 2 blobs VisitTime - 'archive_blob_2010_12' => (5 + 8 + 2) * 3, + // TODO Implement fix, then remove the +3 below + 'archive_blob_2010_12' => ( ($expectedActionsBlobs+3) /*Actions*/ + + 8 /* UserSettings */ + + 2 /* VisitTime */) * 3, /** * In Each "Period=range" Archive, we expect following non zero numeric entries: - * 5 metrics + 1 flag //VisitsSummary - * + 2 metrics + 1 flag //Actions + * 5 metrics + 1 flag // VisitsSummary + * + 2 metrics + 1 flag // Actions * + 1 flag // UserSettings - * + 1 flag //VisitTime + * + 1 flag // VisitTime * = 11 * * 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" * 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 * * Total expected records = count unique archives * records per archive @@ -95,9 +114,23 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange_Archiving */ '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) { $sql = "SELECT count(*) FROM " . Common::prefixTable($table) . " WHERE period = " . Piwik::$idPeriods['range']; diff --git a/tests/PHPUnit/Integration/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Actions.getPageUrls_range.xml b/tests/PHPUnit/Integration/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Actions.getPageUrls_range.xml index b0bc244e91c04d6b21dfc58d61208559490205fc..c9d04097521ac420f0657e79263205ee5e4ce763 100644 --- a/tests/PHPUnit/Integration/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Actions.getPageUrls_range.xml +++ b/tests/PHPUnit/Integration/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Actions.getPageUrls_range.xml @@ -1,15 +1,31 @@ <?xml version="1.0" encoding="utf-8" ?> <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> <label>/news</label> - <nb_visits>6</nb_visits> - <nb_hits>6</nb_hits> + <nb_visits>3</nb_visits> + <nb_hits>3</nb_hits> <sum_time_spent>0</sum_time_spent> <entry_nb_visits>3</entry_nb_visits> <entry_nb_actions>3</entry_nb_actions> <entry_sum_visit_length>0</entry_sum_visit_length> <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_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors> <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> @@ -19,19 +35,52 @@ <url>http://example.org/news</url> </row> <row> - <label>/homepage</label> + <label>sub1</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> + <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>0%</exit_rate> - <url>http://example.org/homepage</url> + <exit_rate>100%</exit_rate> + <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> </result> \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_flattened___Actions.getPageUrls_range.xml b/tests/PHPUnit/Integration/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_flattened___Actions.getPageUrls_range.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd8b87ef40d2e894e117b2351cd8dd6696bddf8e --- /dev/null +++ b/tests/PHPUnit/Integration/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_periodIsRange_flattened___Actions.getPageUrls_range.xml @@ -0,0 +1,37 @@ +<?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