コード例 #1
0
 public function test_filterDataTable_MatchesExactlyIntegration()
 {
     $date = Date::today()->addHour(10);
     $t = Fixture::getTracker($this->idSite, $date->getDatetime(), $defaultInit = true);
     $t->setUrlReferrer('http://www.google.com.vn/url?sa=t&rct=j&q=%3C%3E%26%5C%22the%20pdo%20extension%20is%20required%20for%20this%20adapter%20but%20the%20extension%20is%20not%20loaded&source=web&cd=4&ved=0FjAD&url=http%3A%2F%2Fforum.piwik.org%2Fread.php%3F2%2C1011&ei=y-HHAQ&usg=AFQjCN2-nt5_GgDeg&cad=rja');
     $t->setUrl('http://example.org/%C3%A9%C3%A9%C3%A9%22%27...%20%3Cthis%20is%20cool%3E!');
     $t->setGenerationTime(523);
     $t->doTrackPageView('incredible title! <>,;');
     $t->setForceVisitDateTime($date->addHour(0.1)->getDatetime());
     $t->setUrl('http://example.org/dir/file.php?foo=bar&foo2=bar');
     $t->setGenerationTime(123);
     $t->doTrackPageView('incredible title! <>,;');
     $t->setForceVisitDateTime($date->addHour(0.2)->getDatetime());
     $t->setUrl('http://example.org/dir/file/xyz.php?foo=bar&foo2=bar');
     $t->setGenerationTime(231);
     $t->doTrackPageView('incredible title! <>,;');
     $t->setForceVisitDateTime($date->addHour(0.2)->getDatetime());
     $t->setUrl('http://example.org/what-is-piwik');
     $t->setGenerationTime(231);
     $t->doTrackPageView('incredible title! <>,;');
     $t->setForceVisitDateTime($date->addHour(0.3)->getDatetime());
     $t->setUrl('http://example.org/dir/file.php?foo=bar&foo2=bar');
     $t->setGenerationTime(147);
     $t->doTrackPageView('incredible title! <>,;');
     // for some reasons @dataProvider results in an "Mysql::getProfiler() undefined method" error
     $assertions = array(array('nb_hits', 'what-is-piwik', 1), array('nb_hits', '/what-is-piwik', null), array('nb_hits', 'foo', 3), array('nb_visits', 'foo', 2), array('nb_hits', 'i', 5), array('nb_hits', 'foo2=bar', 3), array('nb_hits', '/', 3), array('nb_hits', 'foo=bar&foo2=bar', 3), array('nb_hits', 'php?foo=bar&foo2=bar', 3), array('nb_hits', 'file.php?foo=bar&foo2=bar', 2), array('nb_hits', 'dir/file.php?foo=bar&foo2=bar', 2), array('nb_hits', 'dir', 3), array('avg_time_generation', 'dir/file.php?foo=bar&foo2=bar', 0.135), array('bounce_rate', 'php?foo=bar', 0));
     foreach ($assertions as $assert) {
         $alert = array('report' => 'Actions_getPageUrls', 'metric' => $assert[0], 'period' => 'day', 'report_condition' => 'contains', 'report_matched' => Common::sanitizeInputValue($assert[1]));
         $value = $this->processor->getValueForAlertInPast($alert, $this->idSite, 0);
         $this->assertEquals($assert[2], $value, $assert[0] . ':' . $assert[1] . ' should return value ' . $assert[2] . ' but returns ' . $value);
     }
 }
コード例 #2
0
 private function buildTracker()
 {
     $t = Fixture::getTracker($this->idSite, Date::factory('2014-01-05 00:01:01')->getDatetime());
     $t->setDebugStringAppend('debug=1');
     $t->setTokenAuth(Fixture::getTokenAuth());
     $t->setUrl('http://example.org/index1.htm');
     return $t;
 }
コード例 #3
0
 public function setUp()
 {
     parent::setUp();
     $idSite = 1;
     $dateTime = '2014-01-01 00:00:01';
     if (!Fixture::siteCreated($idSite)) {
         Fixture::createWebsite($dateTime);
     }
     $this->tracker = Fixture::getTracker($idSite, $dateTime, $defaultInit = true);
 }
コード例 #4
0
 protected function makeTracker($idSite, $dateTime, $debugStringAppend = '')
 {
     $tracker = parent::getTracker($idSite, $dateTime, $defaultInit = true);
     if ($this->forceLargeWindowLookBackForVisitor) {
         // Fakes the config value window_look_back_for_visitor tested in TrackerWindowLookBack
         $debugStringAppend .= '&forceLargeWindowLookBackForVisitor=1';
         // Here we force the visitor ID cookie value sent to piwik.php, to create a "unique visitor" for all visits in fixture
         // we do not use setVisitorId(), because we want shouldLookupOneVisitorFieldOnly() to return false for this particular test case
         $debugStringAppend .= '&_id=2f4f673d4732e11d';
     }
     $tracker->setDebugStringAppend($debugStringAppend);
     return $tracker;
 }
コード例 #5
0
 /**
  * add two visits from same visitor on dec. 29
  */
 private static function trackTwoVisitsOnSameDay()
 {
     $t = Fixture::getTracker(1, '2012-12-29 01:01:30', $defaultInit = true, $useLocal = true);
     $t->enableBulkTracking();
     $t->setUrl('http://site.com/index.htm');
     $t->setIp('136.5.3.2');
     $t->doTrackPageView('incredible title!');
     $t->setForceVisitDateTime('2012-12-29 03:01:30');
     $t->setUrl('http://site.com/other/index.htm');
     $t->DEBUG_APPEND_URL = '&_idvc=2';
     // make sure visit is marked as returning
     $t->doTrackPageView('other incredible title!');
     $t->doBulkTrack();
 }
コード例 #6
0
 public function setUp()
 {
     parent::setUp();
     if (!IntegrationTestCase::isRedisAvailable()) {
         $this->markTestSkipped('Redis extension is not installed, skipping test');
     }
     if (self::isTravisCI() && self::isPhpVersion53()) {
         $this->markTestSkipped('Redis seems to be not enabled in nginx on Travis + PHP 5.3.3');
     }
     self::$fixture->performSetup();
     $idSite = 1;
     $dateTime = '2014-01-01 00:00:01';
     if (!Fixture::siteCreated($idSite)) {
         Fixture::createWebsite($dateTime);
     }
     $queuedTracking = new QueuedTracking();
     $this->tracker = Fixture::getTracker($idSite, $dateTime, $defaultInit = true);
     $this->enableQueue();
 }
コード例 #7
0
ファイル: APITest.php プロジェクト: TensorWrenchOSS/piwik
 private function trackSomeVisits()
 {
     $nowTimestamp = time();
     // use local tracker so mock location provider can be used
     $t = Fixture::getTracker($this->idSite, $nowTimestamp, $defaultInit = true, $useLocal = false);
     $t->enableBulkTracking();
     for ($i = 0; $i != 20; ++$i) {
         $t->setForceNewVisit();
         $t->setVisitorId(substr(md5($i * 1000), 0, $t::LENGTH_VISITOR_ID));
         $factor = 10;
         if ($i > 15) {
             $factor = 30;
             // make sure first 15 visits are always within 5 minutes to prevent any random fails
         }
         $time = $nowTimestamp - $i * $factor;
         // first visit -> this one is > 5 minutes and should be ignored in one test
         $date = Date::factory($time - 600);
         $t->setForceVisitDateTime($date->getDatetime());
         $t->setUrl("http://piwik.net/space/quest/iv");
         $t->doTrackPageView("Space Quest XV");
         $t->doTrackGoal(1);
         // this one is > 5 minutes and should be ignored in one test
         // second visit
         $date = Date::factory($time - 1);
         $t->setForceVisitDateTime($date->getDatetime());
         $t->setUrl("http://piwik.net/space/quest/iv");
         $t->doTrackPageView("Space Quest XII");
         if ($i % 6 == 0) {
             $t->setForceNewVisit();
             // to test visitors vs visits
         }
         // third visit
         $date = Date::factory($time);
         $t->setForceVisitDateTime($date->getDatetime());
         $t->setUrl("http://piwik.net/grue/{$i}");
         $t->doTrackPageView('It is pitch black...');
         $t->doTrackGoal(2);
     }
     $t->doBulkTrack();
 }
コード例 #8
0
ファイル: ApiTest.php プロジェクト: JoeHorn/piwik
 public function test_forceNewVisit_shouldNotForceANewVisitWhenNoKeywordIsSetAndReferrerHostChanges()
 {
     $dateTime = '2015-01-03';
     $idSite = self::$fixture->idSite;
     $t = Fixture::getTracker($idSite, $dateTime . ' 00:01:02', $defaultInit = true);
     // track a campaign that was opened directly (no referrer)
     $t->setUrlReferrer('http://www.google.com');
     $t->setUrl('http://piwik.net/?pk_campaign=adwbuccc');
     $t->doTrackPageView('My Title');
     // navigate to next page on same page
     $t->setUrlReferrer('http://piwik.net/?pk_campaign=adwbuccc');
     $t->setCustomTrackingParameter('_rcn', 'adwbuccc');
     // this parameter would be set by piwik.js from cookie / attributionInfo
     $t->setCustomTrackingParameter('_rck', '');
     // no keyword was used in previous tracking request
     $t->setUrl('http://piwik.net/page1');
     $t->doTrackPageView('Page 1');
     /** @var DataTable $visits */
     $visits = Request::processRequest('VisitsSummary.get', array('idSite' => 1, 'period' => 'day', 'date' => $dateTime));
     $this->assertEquals(1, $visits->getFirstRow()->getColumn('nb_visits'));
     $this->assertEquals(2, $visits->getFirstRow()->getColumn('nb_actions'));
 }
コード例 #9
0
 private function getTracker($hoursOffset = 0)
 {
     $hour = 10;
     if ($hoursOffset) {
         $hour += $hoursOffset;
     }
     $date = sprintf('%s %d:20:01', $this->date, $hour);
     $tracker = Fixture::getTracker(1, $date, true, true);
     $tracker->setTokenAuth(Fixture::getTokenAuth());
     return $tracker;
 }
コード例 #10
0
 /**
  * @dataProvider getVisitsInTimeFrameData
  */
 public function test_hasSiteVisitsInTimeframe_shouldDetectWhetherThereAreVisitsInCertainTimeframe($from, $to, $idSite, $expectedHasVisits)
 {
     Fixture::getTracker($this->idSite, '2015-01-25 05:35:27')->doTrackPageView('/test');
     $hasVisits = $this->dao->hasSiteVisitsBetweenTimeframe($from, $to, $idSite);
     $this->assertSame($expectedHasVisits, $hasVisits);
 }
コード例 #11
0
 private function getTracker()
 {
     $tracker = Fixture::getTracker(1, self::FIRST_VISIT_TIME, $defaultInit = true, $useLocalTracker = true);
     $tracker->setTokenAuth(Fixture::getTokenAuth());
     // properties that cannot be changed on next action
     $tracker->setUserAgent(self::TEST_USER_AGENT);
     $tracker->setBrowserLanguage(self::TEST_BROWSER_LANGUAGE);
     // properties that can be changed on next action
     $tracker->setCountry(self::TEST_COUNTRY);
     $tracker->setRegion(self::TEST_REGION);
     return $tracker;
 }
コード例 #12
0
 protected static function trackVisitInPast()
 {
     $start = Date::factory(self::$dateTime);
     // add a visit in the past so the idvisit will be greater than the others, but the time will be older
     // this tests issue #7180
     $t = Fixture::getTracker(self::$idSite, $start, $defaultInit = true);
     // we subtract 5 so it will be on the same day as another visit. this way, we won't create another day archive
     // and change the counts in asserts
     $t->setForceVisitDateTime($start->subDay(self::$daysAgoStart - 5));
     $t->setUrl("http://whatever.com/days_in_past");
     $t->doTrackPageView('visit in past');
 }
コード例 #13
0
ファイル: UserIdTest.php プロジェクト: cemo/piwik
 private function getTracker()
 {
     $tracker = Fixture::getTracker(1, $this->date . ' 00:01:01', true, true);
     $tracker->setTokenAuth(Fixture::getTokenAuth());
     return $tracker;
 }
コード例 #14
0
 protected static function _addLogData()
 {
     // tracks visits on the following days:
     // - 2012-01-09
     // - 2012-01-14
     // - 2012-01-19
     // - 2012-01-24 <--- everything before this date is to be purged
     // - 2012-01-29
     // - 2012-02-03
     // - 2012-02-08
     // - 2012-02-13
     // - 2012-02-18
     // - 2012-02-23
     // - 2012-02-28
     // 6 visits in feb, 5 in jan
     // following actions are created:
     // - 'First page view'
     // - 'Second page view'
     // - 'SKU2'
     // - 'Canon SLR'
     // - 'Electronics & Cameras'
     // - for every visit (11 visits total):
     //   - http://whatever.com/_{$daysSinceLastVisit}
     //   - http://whatever.com/42/{$daysSinceLastVisit}
     $start = Date::factory(self::$dateTime);
     self::$idSite = Fixture::createWebsite('2012-01-01', $ecommerce = 1);
     APIGoals::getInstance()->addGoal(self::$idSite, 'match all', 'url', 'http', 'contains');
     $t = Fixture::getTracker(self::$idSite, $start, $defaultInit = true);
     $t->enableBulkTracking();
     $t->setTokenAuth(Fixture::getTokenAuth());
     for ($daysAgo = self::$daysAgoStart; $daysAgo >= 0; $daysAgo -= 5) {
         $dateTime = $start->subDay($daysAgo)->toString();
         $t->setForceVisitDateTime($dateTime);
         $t->setUserAgent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729)');
         // use $daysAgo to make sure new actions are created for every day and aren't used again.
         // when deleting visits, some of these actions will no longer be referenced in the DB.
         $t->setUrl("http://whatever.com/_{$daysAgo}");
         $t->doTrackPageView('First page view');
         $t->setForceVisitDateTime(Date::factory($dateTime)->addHour(0.05));
         $t->setUrl("http://whatever.com/42/{$daysAgo}");
         $t->doTrackPageView('Second page view');
         $t->setForceVisitDateTime(Date::factory($dateTime)->addHour(0.1));
         $t->setUrl("http://whatever.com/event");
         $t->doTrackEvent('Event action', 'event cat', 'daysAgo=' . $daysAgo, 1000);
         $t->setForceVisitDateTime(Date::factory($dateTime)->addHour(0.2));
         $t->addEcommerceItem($sku = 'SKU2', $name = 'Canon SLR', $category = 'Electronics & Cameras', $price = 1500, $quantity = 1);
         $t->doTrackEcommerceOrder($orderId = '937nsjusu ' . $dateTime, $grandTotal = 1111.11, $subTotal = 1000, $tax = 111, $shipping = 0.11, $discount = 666);
     }
     Fixture::checkBulkTrackingResponse($t->doBulkTrack());
 }