List:Commits« Previous MessageNext Message »
From:uwendel Date:September 6 2007 2:21pm
Subject:PHP mysqlnd svn commit: r1001 - trunk/tests/ext/mysqli
View as plain text  
Author: uwendel
Date: 2007-09-06 16:21:07 +0200 (Thu, 06 Sep 2007)
New Revision: 1001

Modified:
   trunk/tests/ext/mysqli/mysqli_get_client_stats.phpt
Log:
More testing and potentially more issues, but need
to build mysqlnd rev 1001 first.


Modified: trunk/tests/ext/mysqli/mysqli_get_client_stats.phpt
===================================================================
--- trunk/tests/ext/mysqli/mysqli_get_client_stats.phpt	2007-09-06 14:13:54 UTC (rev 1000)
+++ trunk/tests/ext/mysqli/mysqli_get_client_stats.phpt	2007-09-06 14:21:07 UTC (rev 1001)
@@ -9,6 +9,9 @@
 	die("skip only available with mysqlnd");
 }
 ?>
+--INI--
+mysqlnd.collect_statistics=1
+mysqlnd.collect_memory_statistics=1
 --FILE--
 <?php
 	/*
@@ -148,13 +151,18 @@
 
 	$expected['rows_fetched_from_server_normal'] =
(string)($expected['rows_fetched_from_server_normal'] + 1);
 	$expected['rows_fetched_from_client_normal_buffered'] =
(string)($expected['rows_fetched_from_client_normal_buffered'] + 1);
+	$expected['buffered_sets'] = (string)($expected['buffered_sets'] + 1);
+	$expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
 
+
 	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
 		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
 			++$test_counter, gettype($info), $info);
 
 	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected,
$test_counter);
 	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_buffered', $info,
$expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('buffered_sets', $info, $expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected,
$test_counter);
 
 	/* no change to rows_fetched_from_client_normal_buffered! */
 	if (!$row = mysqli_fetch_assoc($res))
@@ -184,9 +192,13 @@
 
 	$expected['rows_fetched_from_server_normal'] =
(string)($expected['rows_fetched_from_server_normal'] + $num_rows);
 	$expected['rows_fetched_from_client_normal_buffered'] =
(string)($expected['rows_fetched_from_client_normal_buffered'] + $num_rows);
+	$expected['buffered_sets'] = (string)($expected['buffered_sets'] + 1);
+	$expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
 
 	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected,
$test_counter);
 	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_buffered', $info,
$expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('buffered_sets', $info, $expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected,
$test_counter);
 
 	/* fetching none, but stats should not be affected - current implementation */
 	mysqli_free_result($res);
@@ -198,17 +210,269 @@
 	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected,
$test_counter);
 	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_buffered', $info,
$expected, $test_counter);
 
-	print "Checking for normal buffered side effects...\n";
+	print "Testing unbuffered normal...\n";
+	if (!$res = mysqli_query($link, 'SELECT id, label FROM test', MYSQLI_USE_RESULT))
+		printf("[%03d] SELECT id, label FROM test failed, [%d] %s\n",
+			++$test_counter, mysqli_errno($link), mysqli_error($link));
 
-	/* no change to any of those! */
+
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_unbuffered', $info,
$expected, $test_counter);
+
+	while ($row = mysqli_fetch_assoc($res))
+		;
+	mysqli_free_result($res);
+
+	$expected['rows_fetched_from_server_normal'] =
(string)($expected['rows_fetched_from_server_normal'] + $num_rows);
+	$expected['rows_fetched_from_client_normal_unbuffered'] =
(string)($expected['rows_fetched_from_client_normal_unbuffered'] + $num_rows);
+	$expected['unbuffered_sets'] = (string)($expected['unbuffered_sets'] + 1);
+	$expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_unbuffered', $info,
$expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('unbuffered_sets', $info, $expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected,
$test_counter);
+
+	print "Testing unbuffered normal... - SELECT id, label FROM test, not all fetched\n";
+	if (!$res = mysqli_query($link, 'SELECT id, label FROM test', MYSQLI_USE_RESULT))
+		printf("[%03d] SELECT id, label FROM test failed, [%d] %s\n",
+			++$test_counter, mysqli_errno($link), mysqli_error($link));
+
+	for ($i = 0; $i < $num_rows - 1; $i++)
+		$row = mysqli_fetch_assoc($res);
+
+	$expected['rows_fetched_from_server_normal'] =
(string)($expected['rows_fetched_from_server_normal'] + $num_rows - 1);
+	$expected['rows_fetched_from_client_normal_unbuffered'] =
(string)($expected['rows_fetched_from_client_normal_unbuffered'] + $num_rows - 1);
+	$expected['unbuffered_sets'] = (string)($expected['unbuffered_sets'] + 1);
+	$expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_unbuffered', $info,
$expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('unbuffered_sets', $info, $expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected,
$test_counter);
+
+	print "Testing if implicit fetching and cleaning happens...\n";
+	mysqli_free_result($res);
+
+	/* last row has been implicitly cleaned from the wire by freeing the result set */
+	$expected['rows_fetched_from_server_normal'] =
(string)($expected['rows_fetched_from_server_normal'] + 1);
+	$expected['rows_fetched_from_client_normal_unbuffered'] =
(string)($expected['rows_fetched_from_client_normal_unbuffered'] + 1);
+	$expected['rows_skipped_normal'] = (string)($info['rows_skipped_normal'] + 1);
+	$expected['flushed_normal_sets'] = (string)($expected['flushed_normal_sets'] + 1);
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_unbuffered', $info,
$expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('rows_skipped_normal', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('flushed_normal_sets', $info, $expected,
$test_counter);
+
+	print "Testing buffered Prepared Statements...\n";
+	if (!$stmt = mysqli_stmt_init($link))
+		printf("[%03d] stmt_init() failed, [%d] %s\n",
+			++$test_counter, mysqli_errno($link), mysqli_error($link));
+
+	if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test') ||
+			!mysqli_stmt_execute($stmt))
+		printf("[%03d] prepare/execute failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	/* by default PS is unbuffered - no change */
 	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected,
$test_counter);
-	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_buffered', $info,
$expected, $test_counter);
-	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_unbuffered', $info,
$expected, $test_counter);
 	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_buffered', $info,
$expected, $test_counter);
+
+	if (!mysqli_stmt_store_result($stmt))
+		printf("[%03d] store_result failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+	mysqli_stmt_free_result($stmt);
+
+	$expected['rows_fetched_from_server_ps'] =
(string)($expected['rows_fetched_from_server_ps'] + $num_rows);
+	$expected['rows_fetched_from_client_ps_buffered'] =
(string)($expected['rows_fetched_from_client_ps_buffered'] + $num_rows);
+	$expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
+	$expected['ps_buffered_sets'] = (string)($expected['ps_buffered_sets'] + 1);
+
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_buffered', $info,
$expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('ps_buffered_sets', $info, $expected, $test_counter);
+
+	print "Testing buffered Prepared Statements... - fetching all\n";
+
+	if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test') ||
+			!mysqli_stmt_execute($stmt))
+		printf("[%03d] prepare/execute failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	$id = $label = null;
+	if (!mysqli_stmt_bind_result($stmt, $id, $label))
+		printf("[%03d] bind_result failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	if (!mysqli_stmt_store_result($stmt))
+		printf("[%03d] store_result failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	while (mysqli_stmt_fetch($stmt))
+		;
+
+	$expected['rows_fetched_from_server_ps'] =
(string)($expected['rows_fetched_from_server_ps'] + $num_rows);
+	$expected['rows_fetched_from_client_ps_buffered'] =
(string)($expected['rows_fetched_from_client_ps_buffered'] + $num_rows);
+	$expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
+	$expected['ps_buffered_sets'] = (string)($expected['ps_buffered_sets'] + 1);
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_buffered', $info,
$expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('ps_buffered_sets', $info, $expected, $test_counter);
+
+	mysqli_stmt_free_result($stmt);
+
+	print "Testing buffered Prepared Statements... - fetching all but one\n";
+
+	if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test') ||
+			!mysqli_stmt_execute($stmt))
+		printf("[%03d] prepare/execute failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	$id = $label = null;
+	if (!mysqli_stmt_bind_result($stmt, $id, $label))
+		printf("[%03d] bind_result failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	if (!mysqli_stmt_store_result($stmt))
+		printf("[%03d] store_result failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	for ($i = 0; $i < $num_rows - 1; $i++)
+		mysqli_stmt_fetch($stmt);
+
+	$expected['rows_fetched_from_server_ps'] =
(string)($expected['rows_fetched_from_server_ps'] + $num_rows);
+	$expected['rows_fetched_from_client_ps_buffered'] =
(string)($expected['rows_fetched_from_client_ps_buffered'] + $num_rows);
+	$expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
+	$expected['ps_buffered_sets'] = (string)($expected['ps_buffered_sets'] + 1);
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_buffered', $info,
$expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('ps_buffered_sets', $info, $expected, $test_counter);
+
+	$expected['rows_skipped_ps'] = $info['rows_skipped_ps'];
+	mysqli_stmt_free_result($stmt);
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
+	/* buffered result set - no skipping possible! */
+	mysqli_get_client_stats_assert_eq('rows_skipped_ps', $info, $expected, $test_counter);
+
+	print "Testing unbuffered Prepared Statements... - fetching all\n";
+
+	if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test') ||
+			!mysqli_stmt_execute($stmt))
+		printf("[%03d] prepare/execute failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	$id = $label = null;
+	if (!mysqli_stmt_bind_result($stmt, $id, $label))
+		printf("[%03d] bind_result failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	while (mysqli_stmt_fetch($stmt))
+		;
+
+	$expected['rows_fetched_from_server_ps'] =
(string)($expected['rows_fetched_from_server_ps'] + $num_rows);
+	$expected['rows_fetched_from_client_ps_unbuffered'] =
(string)($expected['rows_fetched_from_client_ps_unbuffered'] + $num_rows);
+	$expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
+	$expected['ps_unbuffered_sets'] = (string)($expected['ps_unbuffered_sets'] + 1);
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected,
$test_counter);
 	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_unbuffered', $info,
$expected, $test_counter);
-	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_cursor', $info,
$expected, $test_counter);
-	mysqli_get_client_stats_assert_eq('rows_skipped_normal', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('ps_unbuffered_sets', $info, $expected,
$test_counter);
 
+	mysqli_stmt_free_result($stmt);
+
+	print "Testing unbuffered Prepared Statements... - fetching all but one\n";
+
+	if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test') ||
+			!mysqli_stmt_execute($stmt))
+		printf("[%03d] prepare/execute failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	$id = $label = null;
+	if (!mysqli_stmt_bind_result($stmt, $id, $label))
+		printf("[%03d] bind_result failed, [%d] %s\n",
+			++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+
+	for ($i = 0; $i < $num_rows - 1; $i++)
+		mysqli_stmt_fetch($stmt);
+
+	$expected['rows_fetched_from_server_ps'] =
(string)($expected['rows_fetched_from_server_ps'] + $num_rows - 1);
+	$expected['rows_fetched_from_client_ps_unbuffered'] =
(string)($expected['rows_fetched_from_client_ps_unbuffered'] + $num_rows - 1);
+	$expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
+	$expected['ps_unbuffered_sets'] = (string)($expected['ps_unbuffered_sets'] + 1);
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_unbuffered', $info,
$expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected,
$test_counter);
+	mysqli_get_client_stats_assert_eq('ps_unbuffered_sets', $info, $expected,
$test_counter);
+
+	$expected['rows_skipped_ps'] = $info['rows_skipped_ps'] + 1;
+	$expected['flushed_ps_sets'] = (string)($expected['flushed_ps_sets'] + 1);
+	mysqli_stmt_free_result($stmt);
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
+	mysqli_get_client_stats_assert_eq('rows_skipped_ps', $info, $expected, $test_counter);
+	mysqli_get_client_stats_assert_eq('flushed_ps_sets', $info, $expected, $test_counter);
+
+/*
+	print "Checking for normal buffered side effects...\n";
+	foreach ($info as $k => $v)
+		if ($info[$k] != $expected[$k])
+			printf("$k - $v != %s\n", $expected[$k]);
+*/
+
+	print "... done with fetch statistics\n";
+
+	if (!is_array($info = mysqli_get_client_stats()) || empty($info))
+		printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
+			++$test_counter, gettype($info), $info);
+
 	//
 	// result_set_queries statistics
 	//
@@ -697,7 +961,15 @@
 }
 Testing buffered normal...
 Testing buffered normal... - SELECT id, label FROM test
-Checking for normal buffered side effects...
+Testing unbuffered normal...
+Testing unbuffered normal... - SELECT id, label FROM test, not all fetched
+Testing if implicit fetching and cleaning happens...
+Testing buffered Prepared Statements...
+Testing buffered Prepared Statements... - fetching all
+Testing buffered Prepared Statements... - fetching all but one
+Testing unbuffered Prepared Statements... - fetching all
+Testing unbuffered Prepared Statements... - fetching all but one
+... done with fetch statistics
 done!
 --UEXPECTF--
 array(57) {
@@ -818,5 +1090,13 @@
 }
 Testing buffered normal...
 Testing buffered normal... - SELECT id, label FROM test
-Checking for normal buffered side effects...
+Testing unbuffered normal...
+Testing unbuffered normal... - SELECT id, label FROM test, not all fetched
+Testing if implicit fetching and cleaning happens...
+Testing buffered Prepared Statements...
+Testing buffered Prepared Statements... - fetching all
+Testing buffered Prepared Statements... - fetching all but one
+Testing unbuffered Prepared Statements... - fetching all
+Testing unbuffered Prepared Statements... - fetching all but one
+... done with fetch statistics
 done!
\ No newline at end of file

Thread
PHP mysqlnd svn commit: r1001 - trunk/tests/ext/mysqliuwendel6 Sep