diff --git a/test/libraries/PMA_server_status_queries_test.php b/test/libraries/PMA_server_status_queries_test.php new file mode 100644 index 0000000000..930ac86ca8 --- /dev/null +++ b/test/libraries/PMA_server_status_queries_test.php @@ -0,0 +1,245 @@ +getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + //this data is needed when PMA_ServerStatusData constructs + $server_status = array( + "Aborted_clients" => "0", + "Aborted_connects" => "0", + "Com_delete_multi" => "0", + "Com_create_function" => "0", + "Com_empty_query" => "0", + ); + + $server_variables= array( + "auto_increment_increment" => "1", + "auto_increment_offset" => "1", + "automatic_sp_privileges" => "ON", + "back_log" => "50", + "big_tables" => "OFF", + ); + + $fetchResult = array( + array( + "SHOW GLOBAL STATUS", + 0, + 1, + null, + 0, + $server_status + ), + array( + "SHOW GLOBAL VARIABLES", + 0, + 1, + null, + 0, + $server_variables + ) + ); + + $dbi->expects($this->any())->method('fetchResult') + ->will($this->returnValueMap($fetchResult)); + + $GLOBALS['dbi'] = $dbi; + $this->ServerStatusData = new PMA_ServerStatusData(); + $upTime = "10h"; + $this->ServerStatusData->status['Uptime'] = $upTime; + $this->ServerStatusData->used_queries = array( + "Com_change_db" => "15", + "Com_select" => "12", + "Com_set_option" => "54", + "Com_show_databases" => "16", + "Com_show_status" => "14", + "Com_show_tables" => "13", + ); + } + + /** + * Test for PMA_getHtmlForQueryStatistics + * + * @return void + */ + public function testPMAGetHtmlForQueryStatistics() + { + //Call the test function + $html = PMA_getHtmlForQueryStatistics($this->ServerStatusData); + + $hour_factor = 3600 / $this->ServerStatusData->status['Uptime']; + $used_queries = $this->ServerStatusData->used_queries; + $total_queries = array_sum($used_queries); + + $questions_from_start = sprintf( + __('Questions since startup: %s'), + PMA_Util::formatNumber($total_queries, 0) + ); + + //validate 1: PMA_getHtmlForQueryStatistics + $this->assertContains( + '

', + $html + ); + $this->assertContains( + $questions_from_start, + $html + ); + + //validate 2: per hour + $this->assertContains( + __('per hour:'), + $html + ); + $this->assertContains( + PMA_Util::formatNumber($total_queries * $hour_factor, 0), + $html + ); + + //validate 3:per minute + $value_per_minute = PMA_Util::formatNumber( + $total_queries * 60 / $this->ServerStatusData->status['Uptime'], + 0 + ); + $this->assertContains( + __('per minute:'), + $html + ); + $this->assertContains( + $value_per_minute, + $html + ); + } + + /** + * Test for PMA_getHtmlForServerStatusQueriesDetails + * + * @return void + */ + public function testPMAGetHtmlForServerStatusQueriesDetails() + { + //Call the test function + $html = PMA_getHtmlForServerStatusQueriesDetails($this->ServerStatusData); + + $hour_factor = 3600 / $this->ServerStatusData->status['Uptime']; + $used_queries = $this->ServerStatusData->used_queries; + $total_queries = array_sum($used_queries); + + //validate 1: PMA_getHtmlForServerStatusQueriesDetails + $this->assertContains( + __('Statements'), + $html + ); + + //validate 2: used queries + $this->assertContains( + htmlspecialchars("change db"), + $html + ); + $this->assertContains( + '54', + $html + ); + $this->assertContains( + htmlspecialchars("select"), + $html + ); + $this->assertContains( + htmlspecialchars("set option"), + $html + ); + $this->assertContains( + htmlspecialchars("show databases"), + $html + ); + $this->assertContains( + htmlspecialchars("show status"), + $html + ); + $this->assertContains( + htmlspecialchars("show tables"), + $html + ); + + //validate 3:serverstatusquerieschart + $this->assertContains( + '
', + $html + ); + $this->assertContains( + '