Annotation of embedaddon/php/ext/mysql/tests/bug55473.phpt, revision 1.1.1.2

1.1       misho       1: --TEST--
1.1.1.2 ! misho       2: Bug #55473 (mysql_pconnect leaks file descriptors on reconnect)
1.1       misho       3: --SKIPIF--
                      4: <?php
                      5: require_once('skipif.inc');
                      6: require_once('skipifconnectfailure.inc');
                      7: if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
                      8:        die("skip Test doesn't work on Windows");
                      9: }
                     10: 
1.1.1.2 ! misho      11: if (!($output = @exec("lsof -nwp " . getmypid())))
1.1       misho      12:        die("skip Test can't find command line tool lsof");
                     13: ?>
                     14: --INI--
                     15: mysql.max_persistent=30
                     16: mysql.allow_persistent=1
                     17: --FILE--
                     18: <?php
                     19:        include "connect.inc";
                     20: 
                     21:        $tmp    = NULL;
                     22:        $link   = NULL;
                     23: 
                     24:        if ($socket)
                     25:         $host = sprintf("%s:%s", $host, $socket);
                     26:     else if ($port)
                     27:         $host = sprintf("%s:%s", $host, $port);
                     28: 
                     29:        function connect($host, $user, $passwd) {
                     30:                $conn = mysql_pconnect($host, $user, $passwd);
                     31: 
                     32:                if (!$conn)
                     33:                        die(sprintf("[001] %s\n", mysql_error()));
                     34: 
                     35:                if (!mysql_query("set wait_timeout=1", $conn))
                     36:                        printf("[002] [%d] %s\n", mysql_errno($conn), mysql_error($conn));
                     37: 
                     38:                return $conn;
                     39:        }       
                     40: 
                     41:        $conn = connect($host, $user, $passwd);
                     42:        $opened_files = -1;
                     43: 
                     44:        for ($i = 0; $i < 4; $i++) {
                     45:                /* wait while mysql closes connection */
                     46:                sleep(3);
                     47: 
                     48:                if (!mysql_ping($conn)) {
                     49:                        printf("[003] reconnect %d\n", $i);
                     50:                        $conn = connect($host, $user, $passwd);  
                     51:                }
                     52: 
                     53:                $r = mysql_query('select 1', $conn);
                     54:                if (!$r)
                     55:                        printf("[004] [%d] %s\n", mysql_errno($conn), mysql_error($conn));
                     56: 
                     57: 
                     58:                if ($opened_files == -1) {
1.1.1.2 ! misho      59:                        $opened_files = trim(exec("lsof -nwp " . getmypid() . " | wc -l"));
1.1       misho      60:                        printf("[005] Setting openened files...\n");
1.1.1.2 ! misho      61:                } else if (($tmp = trim(exec("lsof -nwp " . getmypid() . " | wc -l"))) != $opened_files) {
1.1       misho      62:                        printf("[006] [%d] different number of opened_files : expected %d, got %d", $i, $opened_files, $tmp);
                     63:                } else {
                     64:                        printf("[007] Opened files as expected\n");
                     65:                }
                     66:        }
                     67: 
                     68:        print "done!";
                     69: ?>
                     70: --EXPECTF--
                     71: [003] reconnect 0
                     72: [005] Setting openened files...
                     73: [003] reconnect 1
                     74: [007] Opened files as expected
                     75: [003] reconnect 2
                     76: [007] Opened files as expected
                     77: [003] reconnect 3
                     78: [007] Opened files as expected
1.1.1.2 ! misho      79: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>