svn: /pecl/mysqlnd_ms/trunk/tests/ mysqlnd_ms_change_user.phpt mysqlnd_ms_change_user_fail.phpt

From: Date: Wed, 07 Dec 2011 13:31:13 +0000
Subject: svn: /pecl/mysqlnd_ms/trunk/tests/ mysqlnd_ms_change_user.phpt mysqlnd_ms_change_user_fail.phpt
Groups: php.pecl.cvs 
Request: Send a blank email to pecl-cvs+get-17291@lists.php.net to get a copy of this message
uw Wed, 07 Dec 2011 13:31:13 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=320573 Log: Code coverage: check what happens if change user fails Changed paths: U pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_change_user.phpt A pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_change_user_fail.phpt Modified: pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_change_user.phpt =================================================================== --- pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_change_user.phpt 2011-12-07 13:29:53 UTC (rev 320572) +++ pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_change_user.phpt 2011-12-07 13:31:13 UTC (rev 320573) @@ -64,33 +64,37 @@ } while (($master_thread == $slave_thread) && ($attempts < 5)); - $link->change_user($user, $passwd, 'mysql'); + if ($attempts >= 5) + die("False-positive, please rerun"); - $res = mst_mysqli_query(5, $link, "SELECT @myrole AS _role, DATABASE() as _database", MYSQLND_MS_SLAVE_SWITCH); + if (!$link->change_user($user, $passwd, 'mysql')) + printf("[005] Failed to change user, [%d] %s\n", $link->errno, $link->error); + + $res = mst_mysqli_query(6, $link, "SELECT @myrole AS _role, DATABASE() as _database", MYSQLND_MS_SLAVE_SWITCH); if (!$row = $res->fetch_assoc()) - printf("[006] [%d] %s\n", $link->errno, $link->error); + printf("[007] [%d] %s\n", $link->errno, $link->error); if ($row['_database'] != 'mysql') - printf("[007] Expecting database 'mysql' got '%s'\n", $row['_database']); + printf("[008] Expecting database 'mysql' got '%s'\n", $row['_database']); if ($row['_role'] != '') - printf("[008] Expecting role '' got '%s'\n", $row['_role']); + printf("[009] Expecting role '' got '%s'\n", $row['_role']); if ($link->thread_id != $slave_thread) - printf("[009] Expecting slave connection thread id %d got %d\n", $slave_thread, $link->thread_id); + printf("[010] Expecting slave connection thread id %d got %d\n", $slave_thread, $link->thread_id); - $res = mst_mysqli_query(10, $link, "SELECT @myrole AS _role, DATABASE() as _database", MYSQLND_MS_MASTER_SWITCH); + $res = mst_mysqli_query(11, $link, "SELECT @myrole AS _role, DATABASE() as _database", MYSQLND_MS_MASTER_SWITCH); if (!$row = $res->fetch_assoc()) - printf("[011] [%d] %s\n", $link->errno, $link->error); + printf("[012] [%d] %s\n", $link->errno, $link->error); if ($row['_database'] != 'mysql') - printf("[012] Expecting database 'mysql' got '%s'\n", $row['_database']); + printf("[013] Expecting database 'mysql' got '%s'\n", $row['_database']); if ($row['_role'] != '') - printf("[013] Expecting role '' got '%s'\n", $row['_role']); + printf("[014] Expecting role '' got '%s'\n", $row['_role']); if ($link->thread_id != $master_thread) - printf("[009] Expecting master connection thread id %d got %d\n", $master_thread, $link->thread_id); + printf("[015] Expecting master connection thread id %d got %d\n", $master_thread, $link->thread_id); print "done!"; ?> Added: pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_change_user_fail.phpt =================================================================== --- pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_change_user_fail.phpt (rev 0) +++ pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_change_user_fail.phpt 2011-12-07 13:31:13 UTC (rev 320573) @@ -0,0 +1,96 @@ +--TEST-- +change_user() - failure +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once("connect.inc"); + +_skipif_check_extensions(array("mysqli")); +_skipif_connect($emulated_master_host_only, $user, $passwd, $db, $emulated_master_port, $emulated_master_socket); +_skipif_connect($emulated_slave_host_only, $user, $passwd, $db, $emulated_slave_port, $emulated_slave_socket); + +if ($db == 'please_do_no_create_such_db') + die("SKIP Default test database must not be 'please_do_no_create_such_db', use 'test' or the like"); + +$settings = array( + "myapp" => array( + 'master' => array($emulated_master_host), + 'slave' => array($emulated_slave_host), + ), +); +if ($error = mst_create_config("test_mysqlnd_ms_change_user_fail.ini", $settings)) + die(sprintf("SKIP %s\n", $error)); + +function test_unknown_access($host, $user, $passwd, $db, $port, $socket) { + + if (!$link = mst_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) + die(sprintf("skip Cannot connect to %s (port '%d', socket '%s') [%d] %s", $host, $port, $socket, mysqli_connect_errno(), mysqli_connect_error())); + + return $link->select_db("please_do_no_create_such_db"); +} + +if (test_unknown_access($emulated_master_host_only, $user, $passwd, $db, $emulated_master_port, $emulated_master_socket)) + die("skip Master server account can access 'please_do_no_create_such_db' database"); + +if (test_unknown_access($emulated_slave_host_only, $user, $passwd, $db, $emulated_slave_port, $emulated_slave_socket)) + die("skip Slave server account can access 'please_do_no_create_such_db' database"); + +require_once("util.inc"); +msg_mysqli_init_emulated_id_skip($emulated_slave_host, $user, $passwd, $db, $emulated_slave_port, $emulated_slave_socket, "slave"); +msg_mysqli_init_emulated_id_skip($emulated_master_host, $user, $passwd, $db, $emulated_master_port, $emulated_master_socket, "master"); +?> +--INI-- +mysqlnd_ms.enable=1 +mysqlnd_ms.ini_file=test_mysqlnd_ms_change_user_fail.ini +--FILE-- +<?php + require_once("connect.inc"); + require_once("util.inc"); + + if (!($link = mst_mysqli_connect("myapp", $user, $passwd, $db, $port, $socket))) + printf("[001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); + + mst_mysqli_query(2, $link, "SET @myrole='master'", MYSQLND_MS_MASTER_SWITCH); + $master_id = mst_mysqli_get_emulated_id(3, $link); + mst_mysqli_query(4, $link, "SET @myrole='slave'", MYSQLND_MS_SLAVE_SWITCH); + $slave_id = mst_mysqli_get_emulated_id(5, $link); + + if (!$link->change_user($user, $passwd, 'please_do_no_create_such_db')) + printf("[006] Failed to change user, [%d] %s\n", $link->errno, $link->error); + + $res = mst_mysqli_query(7, $link, "SELECT @myrole AS _role, DATABASE() as _database"); + if (!$row = $res->fetch_assoc()) + printf("[008] [%d] %s\n", $link->errno, $link->error); + + if ($row['_database'] != $db) + printf("[009] Expecting database '%s' got '%s'\n", $db, $row['_database']); + + /* NOTE: we must not check for SQL variables. They may or may not have been reset. + Do not consider change_user() an atomic call which either works and resets all state + information or fails and does not reset anything. */ + + $server_id = mst_mysqli_get_emulated_id(10, $link); + if ($server_id != $slave_id) + printf("[011] Expecting slave connection found '%s'\n", $server_id); + + $res = mst_mysqli_query(12, $link, "SELECT @myrole AS _role, DATABASE() as _database", MYSQLND_MS_MASTER_SWITCH); + if (!$row = $res->fetch_assoc()) + printf("[013] [%d] %s\n", $link->errno, $link->error); + + if ($row['_database'] != $db) + printf("[014] Expecting database '%s' got '%s'\n", $db, $row['_database']); + + $server_id = mst_mysqli_get_emulated_id(15, $link); + if ($server_id != $master_id) + printf("[016] Expecting slave connection found '%s'\n", $server_id); + + print "done!"; +?> +--CLEAN-- +<?php +if (!unlink("test_mysqlnd_ms_change_user_fail.ini")) + printf("[clean] Cannot unlink ini file 'test_mysqlnd_ms_change_user_fail.ini'.\n"); +?> +--EXPECTF-- +[006] Failed to change user, [%d] %s +done! \ No newline at end of file

« previous php.pecl.cvs (#17291) next »