svn: /pecl/mysqlnd_ms/trunk/tests/ mysqlnd_ms_change_user.phpt mysqlnd_ms_change_user_fail.phpt
| From: | Ulf Wendel | 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