Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refs #4189, added expected screenshot for DBStats, added actual & moc…
…k data access class to DBStats, fix bug that occurs when deleting merged assets that do not exist and fix diffviewer generation regression (expected URL was incorrect).
- Loading branch information
diosmosis
committed
Feb 27, 2014
1 parent
4ad2b98
commit 13a08d5
Showing
9 changed files
with
254 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
<?php | ||
/** | ||
* Piwik - Open source web analytics | ||
* | ||
* @link http://piwik.org | ||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | ||
* | ||
*/ | ||
namespace Piwik\Plugins\DBStats; | ||
|
||
use Piwik\Db; | ||
use Piwik\Config; | ||
use \Exception; | ||
|
||
/** | ||
* Data Access Object that serves MySQL stats. | ||
*/ | ||
class MySQLMetadataDataAccess | ||
{ | ||
public function getDBStatus() | ||
{ | ||
if (function_exists('mysql_connect')) { | ||
$configDb = Config::getInstance()->database; | ||
$link = mysql_connect($configDb['host'], $configDb['username'], $configDb['password']); | ||
$status = mysql_stat($link); | ||
mysql_close($link); | ||
$status = explode(" ", $status); | ||
} else { | ||
$fullStatus = Db::fetchAssoc('SHOW STATUS'); | ||
if (empty($fullStatus)) { | ||
throw new Exception('Error, SHOW STATUS failed'); | ||
} | ||
|
||
$status = array( | ||
'Uptime' => $fullStatus['Uptime']['Value'], | ||
'Threads' => $fullStatus['Threads_running']['Value'], | ||
'Questions' => $fullStatus['Questions']['Value'], | ||
'Slow queries' => $fullStatus['Slow_queries']['Value'], | ||
'Flush tables' => $fullStatus['Flush_commands']['Value'], | ||
'Open tables' => $fullStatus['Open_tables']['Value'], | ||
'Opens' => 'unavailable', // not available via SHOW STATUS | ||
'Queries per second avg' => 'unavailable' // not available via SHOW STATUS | ||
); | ||
} | ||
|
||
return $status; | ||
} | ||
|
||
public function getTableStatus($tableName) | ||
{ | ||
return Db::fetchRow("SHOW TABLE STATUS LIKE ?", array($tableName)); | ||
} | ||
|
||
public function getAllTablesStatus() | ||
{ | ||
return Db::fetchAll("SHOW TABLE STATUS"); | ||
} | ||
|
||
public function getRowCountsByArchiveName($tableName, $extraCols) | ||
{ | ||
// otherwise, create data table & cache it | ||
$sql = "SELECT name as 'label', COUNT(*) as 'row_count'$extraCols FROM $tableName GROUP BY name"; | ||
return Db::fetchAll($sql); | ||
} | ||
|
||
public function getColumnsFromTable($tableName) | ||
{ | ||
return Db::fetchAll("SHOW COLUMNS FROM " . $tableName); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
<?php | ||
/** | ||
* Piwik - Open source web analytics | ||
* | ||
* @link http://piwik.org | ||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | ||
* | ||
*/ | ||
namespace Piwik\Plugins\DBStats\Mocks; | ||
|
||
use Piwik\Piwik; | ||
use Piwik\Common; | ||
|
||
class MockDataAccess | ||
{ | ||
public static $tableStatuses = array( | ||
'user' => array(5, 8192, 8192), | ||
'access' => array(9, 8192, 1024), | ||
'site' => array(10, 32000, 8192), | ||
'site_url' => array(8, 8192, 8192), | ||
'goal' => array(5, 16000, 8192), | ||
'logger_message' => array(100, 48000, 1024), | ||
'log_action' => array(3000, 64000, 32000), | ||
'log_visit' => array(1300, 64000, 16000), | ||
'log_conversion_item' => array(600, 64000, 16000), | ||
'log_conversion' => array(1000, 64000, 16000), | ||
'log_link_visit_action' => array(3000, 64000, 16000), | ||
'log_profiling' => array(0, 8192, 8192), | ||
'option' => array(200, 16000, 8192), | ||
'session' => array(0, 8192, 8192), | ||
'archive_numeric' => array(8000, 16000, 16000), | ||
'archive_blob' => array(8000, 128000, 1024) | ||
); | ||
|
||
public static $numericRowCountsByArchiveName = array( | ||
array('label' => 'numericName1', 'row_count' => 93), | ||
array('label' => 'numericName2', 'row_count' => 203), | ||
array('label' => 'done', 'row_count' => 400), | ||
array('label' => 'done.plugin', 'row_count' => 150), | ||
array('label' => 'numericName3', 'row_count' => 340), | ||
array('label' => 'numericName4', 'row_count' => 240), | ||
); | ||
|
||
public static $blobRowCountsByArchiveName = array( | ||
array('label' => 'blobName1', 'row_count' => 123), | ||
array('label' => 'blobName2', 'row_count' => 145), | ||
array('label' => 'blobName3', 'row_count' => 83), | ||
array('label' => 'blobName4', 'row_count' => 45), | ||
); | ||
|
||
public function getDBStatus() | ||
{ | ||
return array( | ||
'Uptime' => 10000, | ||
'Threads' => 10, | ||
'Questions' => 15, | ||
'Slow queries' => 20, | ||
'Flush tables' => 300, | ||
'Open tables' => 2, | ||
'Opens' => 'unavailable', | ||
'Queries per second avg' => 'unavailable' | ||
); | ||
} | ||
|
||
public function getTableStatus($tableName) | ||
{ | ||
list($rows, $rowLength, $indexRowLength) = self::$tableStatuses[$this->getTableNameKey($tableName)]; | ||
|
||
return array( | ||
'Name' => $tableName, | ||
'Engine' => 'InnoDB', | ||
'Version' => 10, | ||
'Row_format' => 'Compact', | ||
'Rows' => $rows, | ||
'Avg_row_length' => $rowLength, | ||
'Data_length' => $rows * $rowLength, | ||
'Max_data_length' => 0, | ||
'Index_length' => $rows * $indexRowLength, | ||
'Data_free' => 236978176, | ||
'Auto_increment' => null, | ||
'Create_time' => '2014-01-01 23:54:56', | ||
'Update_time' => null, | ||
'Check_time' => null, | ||
'Collation' => 'utf8_general_ci', | ||
'Checksum' => null, | ||
'Create_options' => "", | ||
'Comment' => "" | ||
); | ||
} | ||
|
||
public function getAllTablesStatus() | ||
{ | ||
$result = array(); | ||
foreach (self::$tableStatuses as $tableName => $ignore) { | ||
if ($tableName == "archive_numeric" | ||
|| $tableName == "archive_blob" | ||
) { | ||
continue; | ||
} | ||
|
||
$unprefixed = Common::prefixTable($tableName); | ||
$result[] = $this->getTableStatus($unprefixed); | ||
} | ||
|
||
$result[] = $this->getTableStatus(Common::prefixTable('archive_numeric_2012_01')); | ||
$result[] = $this->getTableStatus(Common::prefixTable('archive_blob_2012_01')); | ||
|
||
$result[] = $this->getTableStatus(Common::prefixTable('archive_numeric_2012_02')); | ||
$result[] = $this->getTableStatus(Common::prefixTable('archive_blob_2012_02')); | ||
|
||
$result[] = $this->getTableStatus(Common::prefixTable('archive_numeric_2012_03')); | ||
$result[] = $this->getTableStatus(Common::prefixTable('archive_blob_2012_03')); | ||
|
||
$result[] = $this->getTableStatus(Common::prefixTable('archive_numeric_2012_04')); | ||
$result[] = $this->getTableStatus(Common::prefixTable('archive_blob_2012_04')); | ||
|
||
return $result; | ||
} | ||
|
||
public function getTableNameKey($tableName) | ||
{ | ||
$result = Common::unprefixTable($tableName); | ||
if (strpos($tableName, "archive_numeric")) { | ||
$result = "archive_numeric"; | ||
} else if (strpos($tableName, "archive_blob")) { | ||
$result = "archive_blob"; | ||
} | ||
return $result; | ||
} | ||
|
||
public function getRowCountsByArchiveName($tableName, $extraCols) | ||
{ | ||
if (strpos($tableName, "achive_numeric")) { | ||
return self::$numericRowCountsByArchiveName; | ||
} else { | ||
return self::$blobRowCountsByArchiveName; | ||
} | ||
} | ||
|
||
public function getColumnsFromTable($tableName) | ||
{ | ||
return array( | ||
array('Field' => 'field1', 'Type' => 'datetime'), | ||
array('Field' => 'field2', 'Type' => 'int(11) unsigned'), | ||
array('Field' => 'field3', 'Type' => 'varchar(10)'), | ||
array('Field' => 'field4', 'Type' => 'varchar(24)'), | ||
array('Field' => 'field5', 'Type' => 'char(32)'), | ||
array('Field' => 'field6', 'Type' => 'timestamp'), | ||
); | ||
} | ||
} |
Binary file added
BIN
+305 KB
plugins/DBStats/tests/UI/expected-ui-screenshots/DBStats_admin_page.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters