Newer
Older
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/BenchmarkTestCase.php';
/**
* Tracks 12,500 pageviews on one site. Uses bulk tracking (no
* point in measuring curl/HTTP).
*/
class TrackerBenchmark extends BenchmarkTestCase
{
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
private $urls = array();
private $pageTitles = array();
private $visitDates = array();
private $visitTimes = array();
private $t = null;
public function setUp()
{
// set up action URLs
for ($i = 0; $i != 100; ++$i) {
$this->urls[] = "http://whatever.com/$i/" . ($i + 1);
$this->pageTitles[] = "Page Title $i / " . ($i + 1);
}
// set dates & times
$date = Piwik_Date::factory(self::$fixture->date);
for ($i = 0; $i != 25; ++$i) {
$this->visitDates[] = $date->addDay($i)->toString('Y-m-d');
}
for ($i = 0; $i != 5; ++$i) {
$this->visitTimes[] = $date->addHour($i)->toString('H:i:s');
}
// create tracker before tracking test
$this->t = $this->getTracker(self::$fixture->idSite, self::$fixture->date);
$this->t->setTokenAuth(self::getTokenAuth());
$this->t->enableBulkTracking();
// track 12,500 actions: 50 visitors w/ 5 visits each per day for 25 days w/ 2 actions per visit
$urlIdx = 0;
foreach ($this->visitDates as $date) {
foreach ($this->visitTimes as $time) {
for ($visitor = 0; $visitor != 50; ++$visitor) {
$this->t->setIp('157.5.6.' . ($visitor + 1));
$this->t->setForceVisitDateTime($date . ' ' . $time);
for ($action = 0; $action != 2; ++$action) {
$realIdx = $urlIdx % count($this->urls);
$this->t->setUrl($this->urls[$realIdx]);
$this->t->doTrackPageView($this->pageTitles[$realIdx]);
++$urlIdx;
}
}
}
}
}
/**
* @group Benchmarks
* @group TrackerBenchmark
*/
public function testTracker()
{
self::checkResponse($this->t->doBulkTrack());
}