uw              Wed Oct 10 10:54:03 2007 UTC

  Modified files:              
    /php-src/ext/mysqli/tests   bug42378.phpt 
                                mysqli_real_connect_pconn.phpt 
  Log:
  Should be the last commit for HEAD. Now HEAD and 5_3 should have the latest
  set of ext/mysqli tests. On Linux 32bit we've about 10 tests failing. 
  Before the commit we had about 20 tests failing with HEAD.
  
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/bug42378.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysqli/tests/bug42378.phpt
diff -u /dev/null php-src/ext/mysqli/tests/bug42378.phpt:1.2
--- /dev/null   Wed Oct 10 10:54:03 2007
+++ php-src/ext/mysqli/tests/bug42378.phpt      Wed Oct 10 10:54:02 2007
@@ -0,0 +1,193 @@
+--TEST--
+SELECT column, FORMAT(...) AS _format
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifemb.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--INI--
+memory_limit=83886080
+--FILE--
+<?php
+       require_once("connect.inc");
+
+       function create_table($link, $column, $min, $max, $engine, $offset) {
+
+               if (!mysqli_query($link, 'DROP TABLE IF EXISTS test')) {
+                       printf("[%03d] Cannot drop table test, [%d] %s\n",
+                               $offset,
+                               mysqli_errno($link), mysqli_error($link));
+                       return array();
+               }
+               print "$column\n";
+
+               $sql = sprintf("CREATE TABLE test(id INT AUTO_INCREMENT PRIMARY 
KEY, col1 %s) ENGINE=%s",
+                       $column, $engine);
+               if (!mysqli_query($link, $sql)) {
+                       printf("[%03d] Cannot create table test, [%d] %s\n",
+                               $offset + 1,
+                               mysqli_errno($link), mysqli_error($link));
+                       return array();
+               }
+
+               $values = array();
+               for ($i = 1; $i <= 100; $i++) {
+                       $col1 = mt_rand($min, $max);
+                       $values[$i] = $col1;
+                       $sql = sprintf("INSERT INTO test(id, col1) VALUES (%d, 
%f)",
+                               $i, $col1);
+                       if (!mysqli_query($link, $sql)) {
+                               printf("[%03d] Cannot insert data, [%d] %s\n",
+                                       $offset + 2,
+                                       mysqli_errno($link), 
mysqli_error($link));
+                               return array();
+                       }
+               }
+
+               return $values;
+       }
+
+       function test_format($link, $format, $from, $order_by, $expected, 
$offset) {
+
+               if (!$stmt = mysqli_stmt_init($link)) {
+                       printf("[%03d] Cannot create PS, [%d] %s\n",
+                               $offset,
+                               mysqli_errno($link), mysqli_error($link));
+                       return false;
+               }
+               print "$format\n";
+
+               if ($order_by)
+                       $sql = sprintf('SELECT %s AS _format FROM %s ORDER BY 
%s', $format, $from, $order_by);
+               else
+                       $sql = sprintf('SELECT %s AS _format FROM %s', $format, 
$from);
+
+               if (!mysqli_stmt_prepare($stmt, $sql)) {
+                       printf("[%03d] Cannot prepare PS, [%d] %s\n",
+                               $offset + 1,
+                               mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));
+                       return false;
+               }
+
+               if (!mysqli_stmt_execute($stmt)) {
+                       printf("[%03d] Cannot execute PS, [%d] %s\n",
+                               $offset + 2,
+                               mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));
+                       return false;
+               }
+
+               if (!mysqli_stmt_store_result($stmt)) {
+                       printf("[%03d] Cannot store result set, [%d] %s\n",
+                               $offset + 3,
+                               mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));
+                       return false;
+               }
+
+               if (!is_array($expected)) {
+
+                       $result = null;
+                       if (!mysqli_stmt_bind_result($stmt, $result)) {
+                               printf("[%03d] Cannot bind result, [%d] %s\n",
+                                       $offset + 4,
+                                       mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));
+                               return false;
+                       }
+
+                       if (!mysqli_stmt_fetch($stmt)) {
+                               printf("[%03d] Cannot fetch result,, [%d] %s\n",
+                                       $offset + 5,
+                                       mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));
+                               return false;
+                       }
+
+                       if ($result !== $expected) {
+                               printf("[%03d] Expecting %s/%s got %s/%s with 
%s - %s.\n",
+                                       $offset + 6,
+                                       gettype($expected), $expected,
+                                       gettype($result), $result,
+                                       $format, $sql);
+                       }
+
+               } else {
+
+                       $order_by_col = $result = null;
+                       if (!is_null($order_by)) {
+                               if (!mysqli_stmt_bind_result($stmt, 
$order_by_col, $result)) {
+                                       printf("[%03d] Cannot bind result, [%d] 
%s\n",
+                                               $offset + 7,
+                                               mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));
+                                       return false;
+                               }
+                       } else {
+                               if (!mysqli_stmt_bind_result($stmt, $result)) {
+                                       printf("[%03d] Cannot bind result, [%d] 
%s\n",
+                                               $offset + 7,
+                                               mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));
+                                       return false;
+                               }
+                       }
+
+                       if (!empty($expected))
+                               reset($expected);
+                       while ((list($k, $v) = each($expected)) && 
mysqli_stmt_fetch($stmt)) {
+                               if (!empty($expected)) {
+                                       if ($result !== $v) {
+                                               printf("[%03d] Row %d - 
expecting %s/%s got %s/%s [%s] with %s - %s.\n",
+                                                       $offset + 8,
+                                                       $k,
+                                                       gettype($v), $v,
+                                                       gettype($result), 
$result,
+                                                       $order_by_col,
+                                                       $format, $sql);
+                                       }
+                               }
+                       }
+
+               }
+
+               mysqli_stmt_free_result($stmt);
+               mysqli_stmt_close($stmt);
+
+               return true;
+       }
+
+       if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+               printf("[001] Cannot connect - [%d] %s\n",
+                       mysqli_connect_errno(),
+                       mysqli_connect_error());
+
+       /* create new table and select from it */
+       $expected = create_table($link, 'FLOAT', -10000, 10000, $engine, 90);
+       foreach ($expected as $k => $v)
+               $expected[$k] = number_format(round($v), 0, '.', ',');
+       test_format($link, 'FORMAT(col1, 0)', 'test', NULL, array(), 100);
+
+       $expected = create_table($link, 'FLOAT', -10000, 10000, $engine, 110);
+       foreach ($expected as $k => $v)
+               $expected[$k] = number_format(round($v), 0, '.', ',');
+       test_format($link, 'id AS order_by_col, FORMAT(col1, 0)', 'test', 'id', 
$expected, 120);
+
+       $expected = create_table($link, 'FLOAT UNSIGNED', 0, 10000, $engine, 
130);
+       foreach ($expected as $k => $v)
+               $expected[$k] = number_format(round($v), 0, '.', ',');
+       test_format($link, 'id AS order_by_col, FORMAT(col1, 0)', 'test', 'id', 
$expected, 140);
+
+       $expected = create_table($link, 'DECIMAL(5,0)', -1000, 1000, $engine, 
150);
+       foreach ($expected as $k => $v)
+               $expected[$k] = number_format(round($v), 0, '.', ',');
+       test_format($link, 'id AS order_by_col, FORMAT(col1, 0)', 'test', 'id', 
$expected, 160);
+
+       mysqli_close($link);
+       print "done!";
+?>
+--EXPECTF--
+FLOAT
+FORMAT(col1, 0)
+FLOAT
+id AS order_by_col, FORMAT(col1, 0)
+FLOAT UNSIGNED
+id AS order_by_col, FORMAT(col1, 0)
+DECIMAL(5,0)
+id AS order_by_col, FORMAT(col1, 0)
+done!
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_real_connect_pconn.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysqli/tests/mysqli_real_connect_pconn.phpt
diff -u /dev/null php-src/ext/mysqli/tests/mysqli_real_connect_pconn.phpt:1.2
--- /dev/null   Wed Oct 10 10:54:03 2007
+++ php-src/ext/mysqli/tests/mysqli_real_connect_pconn.phpt     Wed Oct 10 
10:54:02 2007
@@ -0,0 +1,152 @@
+--TEST--
+mysqli_real_connect() - persistent connections
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifemb.inc');
+require_once('skipifconnectfailure.inc');
+require_once('connect.inc');
+if (!$IS_MYSQLND)
+       die("skip mysqlnd only test");
+?>
+--INI--
+mysqli.allow_persistent=1
+mysqli.max_persistent=10
+--FILE--
+<?php
+       require_once("connect.inc");
+       $host = 'p:' . $host;
+
+       if (!$link = mysqli_init())
+               printf("[002] mysqli_init() failed\n");
+
+       if (!mysqli_real_connect($link, $host, $user, $passwd, $db, $port, 
$socket))
+               printf("[003] Cannot connect to the server using host=%s, 
user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+                       $host, $user, $db, $port, $socket);
+
+       mysqli_close($link);
+       if (!$link = mysqli_init())
+               printf("[004] mysqli_init() failed\n");
+
+       if (false !== ($tmp = mysqli_real_connect($link, $host, $user . 
'unknown_really', $passwd . 'non_empty', $db, $port, $socket)))
+               printf("[005] Expecting boolean/false got %s/%s. Can connect to 
the server using host=%s, user=%s, passwd=***non_empty, dbname=%s, port=%s, 
socket=%s\n", gettype($tmp), $tmp, $host, $user . 'unknown_really', $db, $port, 
$socket);
+
+       // Run the following tests without an anoynmous MySQL user and use a 
password for the test user!
+       ini_set('mysqli.default_socket', $socket);
+       if (!mysqli_real_connect($link, $host, $user, $passwd, $db, $port)) {
+               printf("[006] Usage of mysqli.default_socket failed\n");
+       } else {
+               mysqli_close($link);
+               if (!$link = mysqli_init())
+                       printf("[007] mysqli_init() failed\n");
+       }
+
+       ini_set('mysqli.default_port', $port);
+       if (!mysqli_real_connect($link, $host, $user, $passwd, $db)) {
+               printf("[008] Usage of mysqli.default_port failed\n");
+       } else {
+               mysqli_close($link);
+               if (!$link = mysqli_init())
+                       printf("[009] mysqli_init() failed\n");
+       }
+
+       ini_set('mysqli.default_pw', $passwd);
+       if (!mysqli_real_connect($link, $host, $user)) {
+               printf("[010] Usage of mysqli.default_pw failed\n") ;
+       } else {
+               mysqli_close($link);
+               if (!$link = mysqli_init())
+                       printf("[011] mysqli_init() failed\n");
+       }
+
+       ini_set('mysqli.default_user', $user);
+       if (!mysqli_real_connect($link, $host)) {
+               printf("[012] Usage of mysqli.default_user failed\n") ;
+       } else {
+               mysqli_close($link);
+               if (!$link = mysqli_init())
+                       printf("[011] mysqli_init() failed\n");
+       }
+
+       ini_set('mysqli.default_host', $host);
+       if (!mysqli_real_connect($link)) {
+               printf("[014] Usage of mysqli.default_host failed\n") ;
+       } else {
+               mysqli_close($link);
+               if (!$link = mysqli_init())
+                       printf("[015] mysqli_init() failed\n");
+       }
+
+       // CLIENT_MULTI_STATEMENTS - should be disabled silently
+       if (!mysqli_real_connect($link, $host, $user, $passwd, $db, $port, 
$socket, 65536))
+               printf("[016] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));
+
+       if ($res = mysqli_query($link, "SELECT 1 AS a; SELECT 2 AS b")) {
+               printf("[017] Should have failed. CLIENT_MULTI_STATEMENT should 
have been disabled.\n");
+               var_dump($res->num_rows);
+               mysqli_next_result($link);
+               $res = mysqli_store_result($link);
+               var_dump($res->num_rows);
+       }
+
+
+       mysqli_close($link);
+       if (!$link = mysqli_init())
+               printf("[018] mysqli_init() failed\n");
+
+       if (ini_get('open_basedir')) {
+               // CLIENT_LOCAL_FILES should be blocked - but how to test it ?!
+
+               if (!mysqli_real_connect($link, $host, $user, $passwd, $db, 
$port, $socket, 128))
+                       printf("[019] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));
+
+               $filename = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 
'mysqli_real_connect_phpt';
+               if (!$fp = fopen($filename, 'w'))
+                       printf("[020] Cannot open temporary file %s\n", 
$filename);
+
+               fwrite($fp, '100;z');
+               fclose($fp);
+
+               // how do we test if gets forbidden because of a missing right 
or the flag, this test is partly bogus ?
+               if (mysqli_query($link, "LOAD DATA LOCAL INFILE '$filename' 
INTO TABLE test FIELDS TERMINATED BY ';'"))
+                       printf("[021] LOAD DATA INFILE should have been 
forbidden!\n");
+
+               unlink($filename);
+       }
+
+       mysqli_close($link);
+
+       if ($IS_MYSQLND) {
+               ini_set('mysqli.default_host', 'p:' . $host);
+               $link = mysqli_init();
+               if ([EMAIL PROTECTED]($link)) {
+                       printf("[022] Usage of mysqli.default_host=p:%s 
(persistent) failed\n", $host) ;
+               } else {
+                       if (!$res = mysqli_query($link, "SELECT 
'mysqli.default_host (persistent)' AS 'testing'"))
+                               printf("[023] [%d] %s\n", mysqli_errno($link), 
mysqli_error($link));
+                       $tmp = mysqli_fetch_assoc($res);
+                       if ($tmp['testing'] !== 'mysqli.default_host 
(persistent)') {
+                               printf("[024] Result looks strange - check 
manually, [%d] %s\n",
+                                       mysqli_errno($link), 
mysqli_error($link));
+                               var_dump($tmp);
+                       }
+                       mysqli_free_result($res);
+                       mysqli_close($link);
+               }
+
+               ini_set('mysqli.default_host', 'p:');
+               $link = mysqli_init();
+               if (@mysqli_real_sconnect($link)) {
+                       printf("[025] Usage of mysqli.default_host=p: did not 
fail\n") ;
+                       mysqli_close($link);
+               }
+       }
+
+       if (NULL !== ($tmp = mysqli_real_connect($link, $host, $user, $passwd, 
$db, $port, $socket)))
+               printf("[026] Expecting NULL, got %s/%s\n", gettype($tmp), 
$tmp);
+
+       print "done!";
+?>
+--EXPECTF--
+Warning: mysqli_real_connect(): (%d/%d): Access denied for user '%s'@'%s' 
(using password: YES) in %s on line %d
+done!
\ No newline at end of file

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to