svn: /pecl/mysqlnd_ms/trunk/tests/ mysqlnd_ms_set_qos_age_killed.phpt

From: 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

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