php-sqlsrv/test/functional/pdo_sqlsrv/PDO22_ConnPool1.phpt
2017-06-23 13:09:37 -07:00

150 lines
3.2 KiB
PHP

--TEST--
PDO Connection Pooling Test
--DESCRIPTION--
Checks whether the driver can successfully establish a database connection
when an URI-based construct is used.
--ENV--
PHPT_EXEC=true
--SKIPIF--
<?php require('skipif_unix.inc'); ?>
--FILE--
<?php
include 'MsCommon.inc';
function ConnectionTest()
{
include 'MsSetup.inc';
$testName = "PDO Connection Pooling";
StartTest($testName);
$optionsDefault = null;
$optionsPool = null;
$optionsNotPool = null;
if ($dsnMode)
{
$optionsDefault = "APP=Microsoft PHP;";
$optionsPool = "APP=Microsoft PHP;ConnectionPooling=1;";
$optionsNotPool = "APP=Microsoft PHP;ConnectionPooling=0;";
}
else
{
$optionsDefault = array('APP'=>'Microsoft PHP');
$optionsPool = array('APP'=>'Microsoft PHP', 'ConnectionPooling'=>1);
$optionsNotPool = array('APP'=>'Microsoft PHP', 'ConnectionPooling'=>0);
}
// Create pool
$conn1 = DoConnect($optionsPool);
$conn2 = DoConnect($optionsPool);
$conn3 = DoConnect($optionsPool);
$connId1 = ConnectionID($conn1);
$connId2 = ConnectionID($conn2);
$connId3 = ConnectionID($conn3);
$conn1 = null;
$conn2 = null;
$conn3 = null;
$conn4 = DoConnect($optionsDefault);
if (!IsPoolConnection($conn4, $connId1, $connId2, $connId3))
{
echo "Default connection was expected to be a pool connection..\n";
}
$conn4 = null;
$conn5 = DoConnect($optionsPool);
if (!IsPoolConnection($conn5, $connId1, $connId2, $connId3))
{
echo "A pool connection was expected...\n";
}
$conn5 = null;
$conn6 = DoConnect($optionsNotPool);
if (IsPoolConnection($conn6, $connId1, $connId2, $connId3))
{
echo "A pool connection was not expected...\n";
}
$conn6 = null;
EndTest($testName);
}
function DoConnect($options)
{
include 'MsSetup.inc';
$conn = null;
try
{
if ($dsnMode)
{
$conn = new PDO("sqlsrv:Server=$server;$options", $uid, $pwd);
}
else
{
$conn = new PDO("sqlsrv:Server=$server", $uid, $pwd, $options);
}
$conn->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_SYSTEM);
}
catch (PDOException $e)
{
$conn = null;
TraceEx("\nFailed to connect to $server: ".$e->getMessage(), true);
}
return ($conn);
}
function ConnectionID($conn)
{
$tsql = "SELECT @@SPID FROM master.dbo.sysprocesses WHERE (program_name='Microsoft PHP')";
$stmt = ExecuteQuery($conn, $tsql);
$connID = $stmt->fetchColumn(0);
$stmt->closeCursor();
$stmt = null;
return ($connID);
}
function IsPoolConnection($conn, $Id1, $Id2, $Id3)
{
$connID = ConnectionID($conn);
if (($connID == $Id1) || ($connID == $Id2) || ($connID == $Id3))
{
return (true);
}
return (false);
}
//--------------------------------------------------------------------
// Repro
//
//--------------------------------------------------------------------
function Repro()
{
try
{
ConnectionTest();
}
catch (Exception $e)
{
echo $e->getMessage();
}
}
Repro();
?>
--EXPECTF--
Test "PDO Connection Pooling" completed successfully.