Skip to content

Commit 1ca2aa2

Browse files
committed
#32: * fix Mysql tests
1 parent 2418bfc commit 1ca2aa2

28 files changed

+1508
-573
lines changed

tests/mysqli/001-mysqli_connect_async.phpt

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,24 @@ async
55
mysqli
66
--SKIPIF--
77
<?php
8-
if (!extension_loaded('mysqli')) die('skip mysqli not available');
9-
if (!getenv('MYSQL_TEST_HOST')) die('skip MYSQL_TEST_HOST not set');
8+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
9+
AsyncMySQLiTest::skipIfNoAsync();
10+
AsyncMySQLiTest::skipIfNoMySQLi();
11+
AsyncMySQLiTest::skip();
1012
?>
1113
--FILE--
1214
<?php
15+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
1316

1417
use function Async\spawn;
1518
use function Async\await;
1619

1720
echo "start\n";
1821

1922
$coroutine = spawn(function() {
20-
$host = getenv("MYSQL_TEST_HOST");
21-
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
22-
$user = getenv("MYSQL_TEST_USER") ?: "root";
23-
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
24-
$db = getenv("MYSQL_TEST_DB") ?: "test";
25-
2623
try {
27-
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
28-
29-
if ($mysqli->connect_error) {
30-
echo "connection failed: " . $mysqli->connect_error . "\n";
31-
return "failed";
32-
}
33-
24+
// Initialize database first
25+
$mysqli = AsyncMySQLiTest::initDatabase();
3426
echo "connected\n";
3527

3628
// Test simple query

tests/mysqli/002-mysqli_query_async.phpt

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,25 @@ async
55
mysqli
66
--SKIPIF--
77
<?php
8-
if (!extension_loaded('mysqli')) die('skip mysqli not available');
9-
if (!getenv('MYSQL_TEST_HOST')) die('skip MYSQL_TEST_HOST not set');
8+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
9+
AsyncMySQLiTest::skipIfNoAsync();
10+
AsyncMySQLiTest::skipIfNoMySQLi();
11+
AsyncMySQLiTest::skip();
1012
?>
1113
--FILE--
1214
<?php
15+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
1316

1417
use function Async\spawn;
1518
use function Async\await;
1619

1720
echo "start\n";
1821

1922
$coroutine = spawn(function() {
20-
$host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1";
21-
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
22-
$user = getenv("MYSQL_TEST_USER") ?: "root";
23-
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
24-
$db = getenv("MYSQL_TEST_DB") ?: "test";
25-
2623
try {
27-
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
24+
$mysqli = AsyncMySQLiTest::initDatabase();
2825

29-
if ($mysqli->connect_error) {
30-
echo "connection failed: " . $mysqli->connect_error . "\n";
31-
return "failed";
32-
}
33-
34-
// Create temporary table
26+
// Create and populate test table
3527
$mysqli->query("DROP TEMPORARY TABLE IF EXISTS async_test");
3628
$result = $mysqli->query("CREATE TEMPORARY TABLE async_test (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), value INT)");
3729

tests/mysqli/003-mysqli_concurrent_connections.phpt

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,25 @@ async
55
mysqli
66
--SKIPIF--
77
<?php
8-
if (!extension_loaded('mysqli')) die('skip mysqli not available');
9-
if (!getenv('MYSQL_TEST_HOST')) die('skip MYSQL_TEST_HOST not set');
8+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
9+
AsyncMySQLiTest::skipIfNoAsync();
10+
AsyncMySQLiTest::skipIfNoMySQLi();
11+
AsyncMySQLiTest::skip();
1012
?>
1113
--FILE--
1214
<?php
15+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
1316

1417
use function Async\spawn;
1518
use function Async\await;
1619
use function Async\awaitAllOrFail;
1720

1821
echo "start\n";
1922

20-
function createMysqliConnection() {
21-
$host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1";
22-
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
23-
$user = getenv("MYSQL_TEST_USER") ?: "root";
24-
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
25-
$db = getenv("MYSQL_TEST_DB") ?: "test";
26-
27-
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
28-
if ($mysqli->connect_error) {
29-
throw new Exception("Connection failed: " . $mysqli->connect_error);
30-
}
31-
return $mysqli;
32-
}
33-
3423
// Create multiple coroutines with separate MySQLi connections
3524
$coroutines = [
3625
spawn(function() {
37-
$mysqli = createMysqliConnection();
26+
$mysqli = AsyncMySQLiTest::factory();
3827
$result = $mysqli->query("SELECT 'coroutine1' as source, CONNECTION_ID() as conn_id");
3928
$row = $result->fetch_assoc();
4029
echo "from {$row['source']} conn_id: {$row['conn_id']}\n";
@@ -44,7 +33,7 @@ $coroutines = [
4433
}),
4534

4635
spawn(function() {
47-
$mysqli = createMysqliConnection();
36+
$mysqli = AsyncMySQLiTest::factory();
4837
$result = $mysqli->query("SELECT 'coroutine2' as source, CONNECTION_ID() as conn_id");
4938
$row = $result->fetch_assoc();
5039
echo "from {$row['source']} conn_id: {$row['conn_id']}\n";
@@ -54,7 +43,7 @@ $coroutines = [
5443
}),
5544

5645
spawn(function() {
57-
$mysqli = createMysqliConnection();
46+
$mysqli = AsyncMySQLiTest::factory();
5847
$result = $mysqli->query("SELECT 'coroutine3' as source, CONNECTION_ID() as conn_id");
5948
$row = $result->fetch_assoc();
6049
echo "from {$row['source']} conn_id: {$row['conn_id']}\n";
@@ -64,7 +53,7 @@ $coroutines = [
6453
}),
6554

6655
spawn(function() {
67-
$mysqli = createMysqliConnection();
56+
$mysqli = AsyncMySQLiTest::factory();
6857
// Test with some workload
6958
$mysqli->query("CREATE TEMPORARY TABLE temp_work (id INT, data VARCHAR(100))");
7059
$mysqli->query("INSERT INTO temp_work VALUES (1, 'data1'), (2, 'data2')");

tests/mysqli/005-mysqli_multi_query_async.phpt

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,23 @@ async
55
mysqli
66
--SKIPIF--
77
<?php
8-
if (!extension_loaded('mysqli')) die('skip mysqli not available');
9-
if (!getenv('MYSQL_TEST_HOST')) die('skip MYSQL_TEST_HOST not set');
8+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
9+
AsyncMySQLiTest::skipIfNoAsync();
10+
AsyncMySQLiTest::skipIfNoMySQLi();
11+
AsyncMySQLiTest::skip();
1012
?>
1113
--FILE--
1214
<?php
15+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
1316

1417
use function Async\spawn;
1518
use function Async\await;
1619

1720
echo "start\n";
1821

1922
$coroutine = spawn(function() {
20-
$host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1";
21-
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
22-
$user = getenv("MYSQL_TEST_USER") ?: "root";
23-
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
24-
$db = getenv("MYSQL_TEST_DB") ?: "test";
25-
2623
try {
27-
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
28-
29-
if ($mysqli->connect_error) {
30-
throw new Exception("Connection failed: " . $mysqli->connect_error);
31-
}
24+
$mysqli = AsyncMySQLiTest::initDatabase();
3225

3326
// Prepare multi-query
3427
$multi_query = "

tests/mysqli/006-mysqli_transaction_async.phpt

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,23 @@ async
55
mysqli
66
--SKIPIF--
77
<?php
8-
if (!extension_loaded('mysqli')) die('skip mysqli not available');
9-
if (!getenv('MYSQL_TEST_HOST')) die('skip MYSQL_TEST_HOST not set');
8+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
9+
AsyncMySQLiTest::skipIfNoAsync();
10+
AsyncMySQLiTest::skipIfNoMySQLi();
11+
AsyncMySQLiTest::skip();
1012
?>
1113
--FILE--
1214
<?php
15+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
1316

1417
use function Async\spawn;
1518
use function Async\await;
1619

1720
echo "start\n";
1821

1922
$coroutine = spawn(function() {
20-
$host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1";
21-
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
22-
$user = getenv("MYSQL_TEST_USER") ?: "root";
23-
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
24-
$db = getenv("MYSQL_TEST_DB") ?: "test";
25-
2623
try {
27-
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
28-
29-
if ($mysqli->connect_error) {
30-
throw new Exception("Connection failed: " . $mysqli->connect_error);
31-
}
24+
$mysqli = AsyncMySQLiTest::initDatabase();
3225

3326
// Create test table
3427
$mysqli->query("DROP TEMPORARY TABLE IF EXISTS async_transaction_test");

tests/mysqli/007-mysqli_error_scenarios.phpt

Lines changed: 9 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@ async
55
mysqli
66
--SKIPIF--
77
<?php
8-
if (!extension_loaded('mysqli')) die('skip mysqli not available');
9-
if (!getenv('MYSQL_TEST_HOST')) die('skip MYSQL_TEST_HOST not set');
8+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
9+
AsyncMySQLiTest::skipIfNoAsync();
10+
AsyncMySQLiTest::skipIfNoMySQLi();
11+
AsyncMySQLiTest::skip();
1012
?>
1113
--FILE--
1214
<?php
15+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
1316

1417
use function Async\spawn;
1518
use function Async\await;
@@ -19,18 +22,8 @@ echo "start\n";
1922

2023
// Test SQL syntax error
2124
$error_test1 = spawn(function() {
22-
$host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1";
23-
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
24-
$user = getenv("MYSQL_TEST_USER") ?: "root";
25-
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
26-
$db = getenv("MYSQL_TEST_DB") ?: "test";
27-
2825
try {
29-
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
30-
31-
if ($mysqli->connect_error) {
32-
throw new Exception("Connection failed: " . $mysqli->connect_error);
33-
}
26+
$mysqli = AsyncMySQLiTest::factory();
3427

3528
// Intentional syntax error
3629
$result = $mysqli->query("INVALID SQL SYNTAX HERE");
@@ -49,18 +42,8 @@ $error_test1 = spawn(function() {
4942

5043
// Test table not found error
5144
$error_test2 = spawn(function() {
52-
$host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1";
53-
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
54-
$user = getenv("MYSQL_TEST_USER") ?: "root";
55-
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
56-
$db = getenv("MYSQL_TEST_DB") ?: "test";
57-
5845
try {
59-
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
60-
61-
if ($mysqli->connect_error) {
62-
throw new Exception("Connection failed: " . $mysqli->connect_error);
63-
}
46+
$mysqli = AsyncMySQLiTest::factory();
6447

6548
// Query non-existent table
6649
$result = $mysqli->query("SELECT * FROM non_existent_table_54321");
@@ -79,18 +62,8 @@ $error_test2 = spawn(function() {
7962

8063
// Test duplicate key error
8164
$error_test3 = spawn(function() {
82-
$host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1";
83-
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
84-
$user = getenv("MYSQL_TEST_USER") ?: "root";
85-
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
86-
$db = getenv("MYSQL_TEST_DB") ?: "test";
87-
8865
try {
89-
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
90-
91-
if ($mysqli->connect_error) {
92-
throw new Exception("Connection failed: " . $mysqli->connect_error);
93-
}
66+
$mysqli = AsyncMySQLiTest::factory();
9467

9568
// Create table with unique constraint
9669
$mysqli->query("DROP TEMPORARY TABLE IF EXISTS error_test");
@@ -120,18 +93,8 @@ $error_test3 = spawn(function() {
12093

12194
// Test prepared statement error
12295
$error_test4 = spawn(function() {
123-
$host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1";
124-
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
125-
$user = getenv("MYSQL_TEST_USER") ?: "root";
126-
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
127-
$db = getenv("MYSQL_TEST_DB") ?: "test";
128-
12996
try {
130-
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
131-
132-
if ($mysqli->connect_error) {
133-
throw new Exception("Connection failed: " . $mysqli->connect_error);
134-
}
97+
$mysqli = AsyncMySQLiTest::factory();
13598

13699
// Try to prepare invalid SQL
137100
$stmt = $mysqli->prepare("INVALID PREPARE STATEMENT ?");

tests/mysqli/008-mysqli_result_async.phpt

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,23 @@ async
55
mysqli
66
--SKIPIF--
77
<?php
8-
if (!extension_loaded('mysqli')) die('skip mysqli not available');
9-
if (!getenv('MYSQL_TEST_HOST')) die('skip MYSQL_TEST_HOST not set');
8+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
9+
AsyncMySQLiTest::skipIfNoAsync();
10+
AsyncMySQLiTest::skipIfNoMySQLi();
11+
AsyncMySQLiTest::skip();
1012
?>
1113
--FILE--
1214
<?php
15+
require_once __DIR__ . '/inc/async_mysqli_test.inc';
1316

1417
use function Async\spawn;
1518
use function Async\await;
1619

1720
echo "start\n";
1821

1922
$coroutine = spawn(function() {
20-
$host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1";
21-
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
22-
$user = getenv("MYSQL_TEST_USER") ?: "root";
23-
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
24-
$db = getenv("MYSQL_TEST_DB") ?: "test";
25-
2623
try {
27-
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
28-
29-
if ($mysqli->connect_error) {
30-
throw new Exception("Connection failed: " . $mysqli->connect_error);
31-
}
24+
$mysqli = AsyncMySQLiTest::initDatabase();
3225

3326
// Create test data
3427
$mysqli->query("DROP TEMPORARY TABLE IF EXISTS result_test");

0 commit comments

Comments
 (0)