Merge pull request #638 from yitam/localeIssue

Modified sqlsrv tests with specific locale testing
This commit is contained in:
Jenny Tam 2017-12-27 13:36:38 -08:00 committed by GitHub
commit 870c23f7a7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 162 additions and 72 deletions

View file

@ -84,18 +84,6 @@ function isDaasMode()
return ($daasMode ? true : false);
}
// function isAEQualified($conn)
// {
// $msodbcsql_ver = sqlsrv_client_info($conn)['DriverVer'];
// $server_ver = sqlsrv_server_info($conn)['SQLServerVersion'];
// $msodbcsql_maj = explode(".", $msodbcsql_ver)[0];
// $msodbcsql_min = explode(".", $msodbcsql_ver)[1];
// if ($msodbcsql_maj < 17 || explode('.', $server_ver)[0] < 13) {
// return false;
// }
// return true;
// }
function startTest($testName)
{
if (traceMode()) {
@ -455,10 +443,17 @@ function handleErrors()
}
// non-UTF8 locale support in ODBC 17 and above only
// if AE enabled, only supported in Windows (AE limitations)
function isLocaleSupported()
{
if (isWindows()) {
return true;
}
if (AE\isColEncrypted()) {
return false;
}
// now check ODBC version
$conn = AE\connect();
$msodbcsql_ver = sqlsrv_client_info($conn)['DriverVer'];
if (explode(".", $msodbcsql_ver)[0] < 17) {
return false;

View file

@ -330,12 +330,8 @@ function getSeqPlaceholders($num)
*/
function isColEncrypted()
{
global $keystore, $dataEncrypted;
if ($keystore === KEYSTORE_NONE) {
return false;
} else {
return true;
}
global $keystore;
return ($keystore !== KEYSTORE_NONE);
}
/**
@ -345,11 +341,7 @@ function isColEncrypted()
function isDataEncrypted()
{
global $keystore, $dataEncrypted;
if ($keystore === KEYSTORE_NONE || !$dataEncrypted) {
return false;
} else {
return true;
}
return ($keystore !== KEYSTORE_NONE && $dataEncrypted);
}
/**

View file

@ -6,18 +6,25 @@ Validates that a prepared statement can be successfully executed more than once.
--ENV--
PHPT_EXEC=true
--SKIPIF--
<?php require('skipif_versions_old.inc'); ?>
<?php
// locale must be set before 1st connection
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
require('skipif_versions_old.inc');
?>
--FILE--
<?php
require_once('MsCommon.inc');
function prepareAndExecute($noPasses)
{
$testName = "Statement - Prepare and Execute";
startTest($testName);
setup();
$conn1 = AE\connect();
if (useUTF8Data()) {
$conn1 = AE\connect(array('CharacterSet'=>'UTF-8'));
} else {
$conn1 = AE\connect();
}
$tableName = 'TC34test';
AE\createTestTable($conn1, $tableName);
@ -80,20 +87,38 @@ function prepareAndExecute($noPasses)
dropTable($conn1, $tableName);
sqlsrv_close($conn1);
endTest($testName);
}
// locale must be set before 1st connection
if (!isWindows()) {
setUTF8Data(true);
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
$testName = "Statement - Prepare and Execute";
// test ansi only if windows or non-UTF8 locales are supported (ODBC 17 and above)
startTest($testName);
if (isLocaleSupported()) {
try {
setUTF8Data(false);
prepareAndExecute(5);
} catch (Exception $e) {
echo $e->getMessage();
}
}
endTest($testName);
// test utf8
startTest($testName);
try {
setUTF8Data(true);
prepareAndExecute(5);
} catch (Exception $e) {
echo $e->getMessage();
}
setUTF8Data(false);
endTest($testName);
?>
--EXPECT--
Test "Statement - Prepare and Execute" completed successfully.
Test "Statement - Prepare and Execute" completed successfully.

View file

@ -6,20 +6,22 @@ retrieving fields from a table including rows with all supported SQL types (28 t
--ENV--
PHPT_EXEC=true
--SKIPIF--
<?php require('skipif_versions_old.inc'); ?>
<?php
// locale must be set before 1st connection
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
require('skipif_versions_old.inc');
?>
--FILE--
<?php
require_once('MsCommon.inc');
function fetchFields()
{
$testName = "Fetch - Field";
startTest($testName);
setup();
$tableName = 'TC42test';
if (! isWindows()) {
if (useUTF8Data()) {
$conn1 = AE\connect(array('CharacterSet'=>'UTF-8'));
} else {
$conn1 = AE\connect();
@ -63,16 +65,38 @@ function fetchFields()
dropTable($conn1, $tableName);
sqlsrv_close($conn1);
endTest($testName);
}
// locale must be set before 1st connection
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
$testName = "Fetch - Field";
// test ansi only if windows or non-UTF8 locales are supported (ODBC 17 and above)
startTest($testName);
if (isLocaleSupported()) {
try {
setUTF8Data(false);
fetchFields();
} catch (Exception $e) {
echo $e->getMessage();
}
}
endTest($testName);
// test utf8
startTest($testName);
try {
setUTF8Data(true);
fetchFields();
} catch (Exception $e) {
echo $e->getMessage();
}
endTest($testName);
?>
--EXPECT--
Test "Fetch - Field" completed successfully.
Test "Fetch - Field" completed successfully.

View file

@ -5,9 +5,10 @@ PHPT_EXEC=true
--SKIPIF--
<?
// locale must be set before 1st connection
if ( !isWindows() ) {
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
require('skipif_versions_old.inc');
?>
--FILE--
<?php
@ -104,7 +105,7 @@ $testName = "Fetch - Field Data";
// test ansi only if windows or non-UTF8 locales are supported (ODBC 17 and above)
startTest($testName);
if (isWindows() || isLocaleSupported()) {
if (isLocaleSupported()) {
try {
setUTF8Data(false);

View file

@ -8,9 +8,10 @@ PHPT_EXEC=true
--SKIPIF--
<?
// locale must be set before 1st connection
if ( !isWindows() ) {
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
require('skipif_versions_old.inc');
?>
--FILE--
<?php
@ -161,7 +162,7 @@ $testName = "Fetch - Array";
// test ansi only if windows or non-UTF8 locales are supported (ODBC 17 and above)
startTest($testName);
if (isWindows() || isLocaleSupported()) {
if (isLocaleSupported()) {
try {
setUTF8Data(false);
fetchRow(1, 4);

View file

@ -5,7 +5,13 @@ Verifies data retrieval via "sqlsrv_fetch_object".
--ENV--
PHPT_EXEC=true
--SKIPIF--
<?php require('skipif_versions_old.inc'); ?>
<?php
// locale must be set before 1st connection
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
require('skipif_versions_old.inc');
?>
--FILE--
<?php
require_once('MsCommon.inc');
@ -19,14 +25,10 @@ class TestClass
function fetchRow($minFetchMode, $maxFetchMode)
{
$testName = "Fetch - Object";
startTest($testName);
setup();
$tableName = 'TC45test';
if (! isWindows()) {
$conn1 = AE\connect(array( 'CharacterSet'=>'UTF-8' ));
if (useUTF8Data()) {
$conn1 = AE\connect(array('CharacterSet'=>'UTF-8'));
} else {
$conn1 = AE\connect();
}
@ -73,8 +75,6 @@ function fetchRow($minFetchMode, $maxFetchMode)
dropTable($conn1, $tableName);
sqlsrv_close($conn1);
endTest($testName);
}
@ -89,7 +89,7 @@ function fetchObject($stmt, $rows, $fields, $useClass)
$obj = sqlsrv_fetch_object($stmt);
}
if ($obj === false) {
fatalError("Row $i is missing");
fatalError("In fetchObject: Row $i is missing");
}
$values[$i] = $obj;
}
@ -103,7 +103,7 @@ function fetchArray($stmt, $rows, $fields)
for ($i = 0; $i < $rows; $i++) {
$row = sqlsrv_fetch_array($stmt);
if ($row === false) {
fatalError("Row $i is missing");
fatalError("In fetchArray: Row $i is missing");
}
$values[$i] = $row;
}
@ -127,12 +127,36 @@ function checkData($rows, $fields, $actualValues, $expectedValues)
}
}
// locale must be set before 1st connection
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
$testName = "Fetch - Object";
// test ansi only if windows or non-UTF8 locales are supported (ODBC 17 and above)
startTest($testName);
if (isLocaleSupported()) {
try {
setUTF8Data(false);
fetchRow(0, 2);
} catch (Exception $e) {
echo $e->getMessage();
}
}
endTest($testName);
// test utf8
startTest($testName);
try {
setUTF8Data(true);
fetchRow(0, 2);
} catch (Exception $e) {
echo $e->getMessage();
}
endTest($testName);
?>
--EXPECT--
Test "Fetch - Object" completed successfully.
Test "Fetch - Object" completed successfully.

View file

@ -7,9 +7,10 @@ PHPT_EXEC=true
--SKIPIF--
<?
// locale must be set before 1st connection
if ( !isWindows() ) {
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
require('skipif_versions_old.inc');
?>
--FILE--
<?php
@ -94,7 +95,7 @@ $testName = "Fetch - Next Result";
// test ansi only if windows or non-UTF8 locales are supported (ODBC 17 and above)
startTest($testName);
if (isWindows() || isLocaleSupported()) {
if (isLocaleSupported()) {
try {
setUTF8Data(false);
fetchFields();

View file

@ -5,19 +5,22 @@ Verifies data retrieval with scrollable result sets.
--ENV--
PHPT_EXEC=true
--SKIPIF--
<?php require('skipif_versions_old.inc'); ?>
<?php
// locale must be set before 1st connection
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
require('skipif_versions_old.inc');
?>
--FILE--
<?php
require_once('MsCommon.inc');
function fetchRow($noRows)
{
$testName = "Fetch - Scrollable";
startTest($testName);
setup();
$tableName = 'TC48test';
if (! isWindows()) {
if (useUTF8Data()) {
$conn1 = AE\connect(array('CharacterSet'=>'UTF-8'));
} else {
$conn1 = AE\connect();
@ -72,8 +75,6 @@ function fetchRow($noRows)
dropTable($conn1, $tableName);
sqlsrv_close($conn1);
endTest($testName);
}
function fetchArray($stmt, $rows, $fields)
@ -135,12 +136,36 @@ function checkData($rows, $fields, $actualValues, $expectedValues)
}
}
// locale must be set before 1st connection
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
$testName = "Fetch - Scrollable";
// test ansi only if windows or non-UTF8 locales are supported (ODBC 17 and above)
startTest($testName);
if (isLocaleSupported()) {
try {
setUTF8Data(false);
fetchRow(10);
} catch (Exception $e) {
echo $e->getMessage();
}
}
endTest($testName);
// test utf8
startTest($testName);
try {
setUTF8Data(true);
fetchRow(10);
} catch (Exception $e) {
echo $e->getMessage();
}
endTest($testName);
?>
--EXPECT--
Test "Fetch - Scrollable" completed successfully.
Test "Fetch - Scrollable" completed successfully.

View file

@ -7,9 +7,10 @@ can be successfully retrieved as streams.
PHPT_EXEC=true
--SKIPIF--
<?// locale must be set before 1st connection
if ( !isWindows() ) {
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
require('skipif_versions_old.inc');
?>
--FILE--
<?php
@ -138,7 +139,7 @@ $errMessage = 'Connection with Column Encryption enabled does not support fetchi
// test ansi only if windows or non-UTF8 locales are supported (ODBC 17 and above)
startTest($testName);
if (isWindows() || isLocaleSupported()) {
if (isLocaleSupported()) {
try {
setUTF8Data(false);
streamRead(20, 1);

View file

@ -7,9 +7,10 @@ PHPT_EXEC=true
--SKIPIF--
<?
// locale must be set before 1st connection
if ( !isWindows() ) {
if (!isWindows()) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
require('skipif_versions_old.inc');
?>
--FILE--
<?php
@ -175,7 +176,7 @@ $errMessage = 'Connection with Column Encryption enabled does not support fetchi
// test ansi only if windows or non-UTF8 locales are supported (ODBC 17 and above)
startTest($testName);
if (isWindows() || isLocaleSupported()) {
if (isLocaleSupported()) {
try {
setUTF8Data(false);
streamScroll(20, 1);

View file

@ -3,11 +3,11 @@ streaming large amounts of data into a database and getting it out as a string e
--SKIPIF--
<?
// locale must be set before 1st connection
if ( !isWindows() ) {
if (!isWindows() ) {
setlocale(LC_ALL, "en_US.ISO-8859-1");
}
php require('skipif.inc');
require('skipif.inc');
?>
--FILE--
<?php
@ -259,7 +259,7 @@ if (!isWindows()) {
}
// test ansi only if windows or non-UTF8 locales are supported (ODBC 17 and above)
if (isWindows() || isLocaleSupported()) {
if (isLocaleSupported()) {
setUTF8Data(false);
runtest();
}