getMockBuilder('PhpMyAdmin\DatabaseInterface') ->disableOriginalConstructor() ->getMock(); //this data is needed when PhpMyAdmin\Server\Status\Data constructs $server_status = [ "Aborted_clients" => "0", "Aborted_connects" => "0", "Com_delete_multi" => "0", "Com_create_function" => "0", "Com_empty_query" => "0", "Com_execute_sql" => 2, "Com_stmt_execute" => 2, ]; $server_variables = [ "auto_increment_increment" => "1", "auto_increment_offset" => "1", "automatic_sp_privileges" => "ON", "back_log" => "50", "big_tables" => "OFF", ]; $fetchResult = [ [ "SHOW GLOBAL STATUS", 0, 1, DatabaseInterface::CONNECT_USER, 0, $server_status ], [ "SHOW GLOBAL VARIABLES", 0, 1, DatabaseInterface::CONNECT_USER, 0, $server_variables ], [ "SELECT concat('Com_', variable_name), variable_value " . "FROM data_dictionary.GLOBAL_STATEMENTS", 0, 1, DatabaseInterface::CONNECT_USER, 0, $server_status ], ]; $dbi->expects($this->at(0)) ->method('tryQuery') ->with('SHOW GLOBAL STATUS') ->will($this->returnValue(true)); $dbi->expects($this->at(1)) ->method('fetchRow') ->will($this->returnValue(["Aborted_clients", "0"])); $dbi->expects($this->at(2)) ->method('fetchRow') ->will($this->returnValue(["Aborted_connects", "0"])); $dbi->expects($this->at(3)) ->method('fetchRow') ->will($this->returnValue(["Com_delete_multi", "0"])); $dbi->expects($this->at(4)) ->method('fetchRow') ->will($this->returnValue(["Com_create_function", "0"])); $dbi->expects($this->at(5)) ->method('fetchRow') ->will($this->returnValue(["Com_empty_query", "0"])); $dbi->expects($this->at(6)) ->method('fetchRow') ->will($this->returnValue(false)); $dbi->expects($this->at(7))->method('freeResult'); $dbi->expects($this->any())->method('fetchResult') ->will($this->returnValueMap($fetchResult)); $GLOBALS['dbi'] = $dbi; $this->serverStatusData = new Data(); } /** * Test for Status::getHtml * * @return void * @group medium */ public function testPMAGetHtmlForServerStatus() { //parameters $bytes_received = 100; $bytes_sent = 200; $max_used_conn = 500; $aborted_conn = 200; $conn = 1000; $this->serverStatusData->status['Uptime'] = 36000; $this->serverStatusData->status['Bytes_received'] = $bytes_received; $this->serverStatusData->status['Bytes_sent'] = $bytes_sent; $this->serverStatusData->status['Max_used_connections'] = $max_used_conn; $this->serverStatusData->status['Aborted_connects'] = $aborted_conn; $this->serverStatusData->status['Connections'] = $conn; //Call the test function $html = Status::getHtml($this->serverStatusData); //validate 1: Status::getHtmlForServerStateGeneralInfo //traffic: $bytes_received + $bytes_sent $traffic = $bytes_received + $bytes_sent; $traffic_html = 'Network traffic since startup: ' . $traffic . ' B'; $this->assertContains( $traffic_html, $html ); //updatetime $upTime_html = 'This MySQL server has been running for ' . '0 days, 10 hours, 0 minutes and 0 seconds'; $this->assertContains( $upTime_html, $html ); //master state $master_html = 'This MySQL server works as master'; $this->assertContains( $master_html, $html ); //validate 2: Status::getHtmlForServerStateTraffic $traffic_html = ''; $this->assertContains( $traffic_html, $html ); //traffic hint $traffic_html = 'On a busy server, the byte counters may overrun'; $this->assertContains( $traffic_html, $html ); //$bytes_received $this->assertContains( '', $html ); $this->assertContains( '', $html ); $this->assertContains( '
' . $bytes_received . ' B', $html ); //$bytes_sent $this->assertContains( '' . $bytes_sent . ' B', $html ); //validate 3: Status::getHtmlForServerStateConnections $this->assertContains( 'Connectionsø per hour
', $html ); $this->assertContains( '', $html ); //Max_used_connections $this->assertContains( '', $html ); //Aborted_connects $this->assertContains( '', $html ); $GLOBALS['replication_info']['master']['status'] = true; $GLOBALS['replication_info']['slave']['status'] = true; $this->serverStatusData->status['Connections'] = 0; $html = Status::getHtml($this->serverStatusData); $this->assertContains( 'This MySQL server works as master and slave', $html ); $GLOBALS['replication_info']['master']['status'] = false; $GLOBALS['replication_info']['slave']['status'] = true; $html = Status::getHtml($this->serverStatusData); $this->assertContains( 'This MySQL server works as slave', $html ); } }
Max. concurrent connections' . $max_used_conn, $html ); $this->assertContains( 'Failed attempts' . $aborted_conn, $html ); $this->assertContains( 'Aborted