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

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/PHPUnit/Framework/TestCase/BenchmarkTestCase.php')
-rwxr-xr-xtests/PHPUnit/Framework/TestCase/BenchmarkTestCase.php116
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/PHPUnit/Framework/TestCase/BenchmarkTestCase.php b/tests/PHPUnit/Framework/TestCase/BenchmarkTestCase.php
new file mode 100755
index 0000000000..e2a782b094
--- /dev/null
+++ b/tests/PHPUnit/Framework/TestCase/BenchmarkTestCase.php
@@ -0,0 +1,116 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Tests\Framework\TestCase;
+
+use Piwik\Config;
+use Piwik\Db;
+use Piwik\Plugins\Goals\API;
+use Exception;
+use Piwik\Tests\Framework\Fixture;
+
+require_once PIWIK_INCLUDE_PATH . '/tests/LocalTracker.php';
+
+// require fixtures
+foreach (glob(PIWIK_INCLUDE_PATH . '/tests/PHPUnit/Benchmarks/Fixtures/*.php') as $file) {
+ require_once $file;
+}
+
+/**
+ * Base class for benchmarks.
+ */
+abstract class BenchmarkTestCase extends SystemTestCase
+{
+ public static $fixture;
+
+ public static function setUpBeforeClass()
+ {
+ $dbName = false;
+ if (!empty($GLOBALS['PIWIK_BENCHMARK_DATABASE'])) {
+ $dbName = $GLOBALS['PIWIK_BENCHMARK_DATABASE'];
+ }
+
+ // connect to database
+ self::createTestConfig();
+ self::connectWithoutDatabase();
+
+ // create specified fixture (global var not set, use default no-data fixture (see end of this file))
+ if (empty($GLOBALS['PIWIK_BENCHMARK_FIXTURE'])) {
+ $fixtureName = 'Piwik_Test_Fixture_EmptyOneSite';
+ } else {
+ $fixtureName = 'Piwik_Test_Fixture_' . $GLOBALS['PIWIK_BENCHMARK_FIXTURE'];
+ }
+ self::$fixture = new $fixtureName;
+
+ // figure out if the desired fixture has already been setup, and if not empty the database
+ $installedFixture = false;
+ try {
+ if (isset(self::$fixture->tablesPrefix)) {
+ Config::getInstance()->database['tables_prefix'] = self::$fixture->tablesPrefix;
+ }
+
+ Db::query("USE " . $dbName);
+ $installedFixture = \Piwik\Option::get('benchmark_fixture_name');
+ } catch (Exception $ex) {
+ // ignore
+ }
+
+ $createEmptyDatabase = $fixtureName != $installedFixture;
+ parent::_setUpBeforeClass($dbName, $createEmptyDatabase);
+
+ // if we created an empty database, setup the fixture
+ if ($createEmptyDatabase) {
+ self::$fixture->setUp();
+ \Piwik\Option::set('benchmark_fixture_name', $fixtureName);
+ }
+ }
+
+ public static function tearDownAfterClass()
+ {
+ // only drop the database if PIWIK_BENCHMARK_DATABASE isn't set
+ $dropDatabase = empty($GLOBALS['PIWIK_BENCHMARK_DATABASE']);
+ parent::_tearDownAfterClass($dropDatabase);
+ }
+
+ /**
+ * Creates a tracking object that invokes the tracker directly (w/o going through HTTP).
+ */
+ public static function getLocalTracker($idSite)
+ {
+ $t = new \Piwik_LocalTracker($idSite, Fixture::getTrackerUrl());
+ $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)");
+ $t->setBrowserLanguage('fr');
+ $t->setLocalTime('12:34:06');
+ $t->setResolution(1024, 768);
+ $t->setBrowserHasCookies(true);
+ $t->setPlugins($flash = true, $java = true, $director = false);
+ $t->setTokenAuth(Fixture::getTokenAuth());
+ return $t;
+ }
+}
+
+/**
+ * Reusable fixture. Adds one site w/ goals and no visit data.
+ */
+class Piwik_Test_Fixture_EmptyOneSite
+{
+ public $date = '2010-01-01';
+ public $period = 'day';
+ public $idSite = 1;
+
+ public function setUp()
+ {
+ // add one site
+ Fixture::createWebsite(
+ $this->date, $ecommerce = 1, $siteName = "Site #0", $siteUrl = "http://whatever.com/");
+
+ // add two goals
+ $goals = API::getInstance();
+ $goals->addGoal($this->idSite, 'all', 'url', 'http', 'contains', false, 5);
+ $goals->addGoal($this->idSite, 'all', 'url', 'http', 'contains');
+ }
+}