svn: /pecl/mysqlnd_ms/trunk/tests/ mysqlnd_ms_set_qos_age_killed.phpt
| From: | Ulf Wendel | Date: | Wed, 07 Dec 2011 17:59:11 +0000 |
| Subject: | svn: /pecl/mysqlnd_ms/trunk/tests/ mysqlnd_ms_set_qos_age_killed.phpt | ||
| Groups: | php.pecl.cvs | ||
| Request: | Send a blank email to pecl-cvs+get-17310@lists.php.net to get a copy of this message | ||
uw Wed, 07 Dec 2011 17:59:11 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=320594
Log:
Dead slave connection shall not hinder us
Changed paths:
A pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_set_qos_age_killed.phpt
Added: pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_set_qos_age_killed.phpt
===================================================================
--- pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_set_qos_age_killed.phpt (rev 0)
+++ pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_set_qos_age_killed.phpt 2011-12-07 17:59:11 UTC (rev
320594)
@@ -0,0 +1,125 @@
+--TEST--
+mysqlnd_ms_set_qos(), age, killed slave
+--SKIPIF--
+<?php
+if (version_compare(PHP_VERSION, '5.3.99-dev', '<'))
+ die(sprintf("SKIP Requires PHP >= 5.3.99, using " . PHP_VERSION));
+
+require_once('skipif.inc');
+require_once("connect.inc");
+
+if (($master_host == $slave_host)) {
+ die("SKIP master and slave seem to the the same, see tests/README");
+}
+
+_skipif_check_extensions(array("mysqli"));
+_skipif_connect($master_host_only, $user, $passwd, $db, $master_port, $master_socket);
+_skipif_connect($slave_host_only, $user, $passwd, $db, $slave_port, $slave_socket);
+
+include_once("util.inc");
+
+$ret = mst_is_slave_of($slave_host_only, $slave_port, $slave_socket, $master_host_only,
$master_port, $master_socket, $user, $passwd, $db);
+if (is_string($ret))
+ die(sprintf("SKIP Failed to check relation of configured master and slave, %s\n",
$ret));
+
+if (false == $ret)
+ die("SKIP Configured master and slave might not be part of a replication cluster\n");
+
+$sql = mst_get_gtid_sql($db);
+if ($error = mst_mysqli_setup_gtid_table($master_host_only, $user, $passwd, $db, $master_port,
$master_socket))
+ die(sprintf("SKIP Failed to setup GTID on master, %s\n", $error));
+
+
+$settings = array(
+ "myapp" => array(
+ 'master' => array(
+ "master1" => array(
+ 'host' => $master_host_only,
+ 'port' => (int)$master_port,
+ 'socket' => $master_socket,
+ ),
+ ),
+ 'slave' => array(
+ "slave1" => array(
+ 'host' => $slave_host_only,
+ 'port' => (int)$slave_port,
+ 'socket' => $slave_socket,
+ ),
+ ),
+
+ 'lazy_connections' => 1,
+ ),
+
+);
+if ($error = mst_create_config("test_mysqlnd_ms_set_qos_age_killed.ini", $settings))
+ die(sprintf("SKIP %s\n", $error));
+
+include_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_set_qos_age.ini
+--FILE--
+<?php
+ /* Caution: any test setting on replication is prone to false positive. Replication may be down!
*/
+
+ require_once("connect.inc");
+ require_once("util.inc");
+
+ $link = mst_mysqli_connect("myapp", $user, $passwd, $db, $port, $socket);
+ if (mysqli_connect_errno()) {
+ printf("[001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+ }
+
+ if (!$link->query("SELECT 1 FROM DUAL"))
+ printf("[002] [%d] %s\n", $link->errno, $link->error);
+
+ $slave = mst_mysqli_get_emulated_id(3, $link);
+
+ /* kill slave connection */
+ $link->kill($link->thread_id);
+
+ if (!$link->query("DROP TABLE IF EXISTS test") ||
+ !$link->query("CREATE TABLE test(id INT)") ||
+ !$link->query("INSERT INTO test(id) VALUES (1)"))
+ printf("[004] [%d] %s\n", $link->errno, $link->error);
+
+ if (true !== ($ret = mysqlnd_ms_set_qos($link, MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL,
MYSQLND_MS_QOS_OPTION_AGE, 4))) {
+ printf("[005] [%d] %s\n", $link->errno, $link->error);
+ }
+
+ /* Ignore repl errors such as slave not running. Result must be the same whatever server is used
*/
+ if ($res = @mst_mysqli_query(6, $link, "SELECT id FROM test"))
+ var_dump($res->fetch_all());
+
+ printf("[007] [%d] '%s'\n", $link->errno, $link->error);
+ printf("Reply comes from %s, slave is %s\n", mst_mysqli_get_emulated_id(8, $link),
$slave);
+
+ print "done!";
+?>
+--CLEAN--
+<?php
+ if (!unlink("test_mysqlnd_ms_set_qos_age.ini"))
+ printf("[clean] Cannot unlink ini file
'test_mysqlnd_ms_set_qos_age.ini'.\n");
+
+ require_once("connect.inc");
+ require_once("util.inc");
+ if ($error = mst_mysqli_drop_test_table($master_host_only, $user, $passwd, $db, $master_port,
$master_socket))
+ printf("[clean] %s\n");
+
+ if ($error = mst_mysqli_drop_gtid_table($master_host_only, $user, $passwd, $db, $master_port,
$master_socket))
+ printf("[clean] %s\n", $error));
+?>
+--EXPECTF--
+array(1) {
+ [0]=>
+ array(1) {
+ [0]=>
+ string(1) "1"
+ }
+}
+[007] [0] ''
+Reply comes from master-%d, slave is slave-%d
+done!
\ No newline at end of file