Welcome to mirror list, hosted at ThFree Co, Russian Federation.

TrackerBenchmark.php « Benchmarks « PHPUnit « tests - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d92bd632a8f2bbbb11cf0dea772466b52e046759 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
65
66
67
68
69
70
71
72
<?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
{
    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());
    }
}