Check in Tim's test script for PHP implementation of CDB class while we track down...
authorBrion Vibber <brion@users.mediawiki.org>
Fri, 24 Jul 2009 19:18:05 +0000 (19:18 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Fri, 24 Jul 2009 19:18:05 +0000 (19:18 +0000)
maintenance/cdb-test.php [new file with mode: 0644]

diff --git a/maintenance/cdb-test.php b/maintenance/cdb-test.php
new file mode 100644 (file)
index 0000000..84e7f94
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+require( 'commandLine.inc' );
+function randomString() {
+       $len = mt_rand( 0, 10 );
+       $s = '';
+       for ( $j = 0; $j < $len; $j++ ) {
+               $s .= chr( mt_rand( 0, 255 ) );
+       }
+       return $s;
+}
+function cdbAssert( $msg, $key, $v1, $v2 ) {
+       if ( $v1 !== $v2 ) {
+               echo $msg . ', k=' . bin2hex( $key ) . 
+                       ', v1=' . bin2hex( $v1 ) . 
+                       ', v2=' . bin2hex( $v2 ) . "\n";
+               return false;
+       } else {
+               return true;
+       }
+}
+
+
+echo "Write test...\n";
+
+$w1 = new CdbWriter_PHP( 'php.cdb' );
+$w2 = new CdbWriter_DBA( 'dba.cdb' );
+
+$data = array();
+for ( $i = 0; $i < 100000; $i++ ) {
+       $key = randomString();
+       $value = randomString();
+       $w1->set( $key, $value );
+       $w2->set( $key, $value );
+
+       if ( !isset( $data[$key] ) ) {
+               $data[$key] = $value;
+       }
+}
+
+$w1->close();
+$w2->close();
+
+passthru( 'md5sum php.cdb dba.cdb' );
+
+echo "Read test...\n";
+
+$r1 = new CdbReader_PHP( 'php.cdb' );
+$r2 = new CdbReader_DBA( 'dba.cdb' );
+
+foreach ( $data as $key => $value ) {
+       if ( $key === '' ) {
+               // Known bug
+               continue;
+       }
+       $v1 = $r1->get( $key );
+       $v2 = $r2->get( $key );
+
+       $v1 = $v1 === false ? '(not found)' : $v1;
+       $v2 = $v2 === false ? '(not found)' : $v2;
+
+       #cdbAssert( 'Mismatch', $key, $v1, $v2 );
+       cdbAssert( "PHP error", $key, $v1, $value );
+       cdbAssert( "DBA error", $key, $v2, $value );
+}
+echo "Done.\n";