http://www.mediawiki.org/wiki/Special:Code/MediaWiki/61981
Revision: 61981 Author: ialex Date: 2010-02-04 17:57:40 +0000 (Thu, 04 Feb 2010) Log Message: ----------- * Port maintenance/cdb-test.php to PHPUnit * Reduced entries from 100000 to 1000 so that the test doesn't need hours to complete :) Added Paths: ----------- trunk/phase3/maintenance/tests/CdbTest.php Removed Paths: ------------- trunk/phase3/maintenance/cdb-test.php Deleted: trunk/phase3/maintenance/cdb-test.php =================================================================== --- trunk/phase3/maintenance/cdb-test.php 2010-02-04 17:49:43 UTC (rev 61980) +++ trunk/phase3/maintenance/cdb-test.php 2010-02-04 17:57:40 UTC (rev 61981) @@ -1,83 +0,0 @@ -<?php - -/** - * Test the CDB reader/writer - */ - -require_once( dirname(__FILE__) . '/Maintenance.php' ); - -class CdbTest extends Maintenance { - public function __construct() { - parent::__construct(); - $this->mDescription = "CDB read/write test"; - } - - public function execute() { - $this->output( "Write test...\n" ); - - $w1 = new CdbWriter_PHP( 'php.cdb' ); - $w2 = new CdbWriter_DBA( 'dba.cdb' ); - - $data = array(); - for ( $i = 0; $i < 100000; $i++ ) { - $key = $this->randomString(); - $value = $this->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' ); - - $this->output( "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 ); - $this->cdbAssert( "PHP error", $key, $v1, $value ); - $this->cdbAssert( "DBA error", $key, $v2, $value ); - } - $this->output( "Done.\n" ); - } - - private function randomString() { - $len = mt_rand( 0, 10 ); - $s = ''; - for ( $j = 0; $j < $len; $j++ ) { - $s .= chr( mt_rand( 0, 255 ) ); - } - return $s; - } - - private function cdbAssert( $msg, $key, $v1, $v2 ) { - if ( $v1 !== $v2 ) { - $this->output( $msg . ', k=' . bin2hex( $key ) . - ', v1=' . bin2hex( $v1 ) . - ', v2=' . bin2hex( $v2 ) . "\n" ); - return false; - } else { - return true; - } - } -} - -$maintClass = "CdbTest"; -require_once( DO_MAINTENANCE ); Copied: trunk/phase3/maintenance/tests/CdbTest.php (from rev 61953, trunk/phase3/maintenance/cdb-test.php) =================================================================== --- trunk/phase3/maintenance/tests/CdbTest.php (rev 0) +++ trunk/phase3/maintenance/tests/CdbTest.php 2010-02-04 17:57:40 UTC (rev 61981) @@ -0,0 +1,73 @@ +<?php + +/** + * Test the CDB reader/writer + */ + +class CdbTest extends PHPUnit_Framework_TestCase { + + public function testCdb() { + $w1 = new CdbWriter_PHP( 'php.cdb' ); + $w2 = new CdbWriter_DBA( 'dba.cdb' ); + + $data = array(); + for ( $i = 0; $i < 1000; $i++ ) { + $key = $this->randomString(); + $value = $this->randomString(); + $w1->set( $key, $value ); + $w2->set( $key, $value ); + + if ( !isset( $data[$key] ) ) { + $data[$key] = $value; + } + } + + $w1->close(); + $w2->close(); + + $this->assertEquals( + md5_file( 'dba.cdb' ), + md5_file( 'php.cdb' ), + 'same hash' + ); + + $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 ); + $this->cdbAssert( "PHP error", $key, $v1, $value ); + $this->cdbAssert( "DBA error", $key, $v2, $value ); + } + + unlink( 'dba.cdb' ); + unlink( 'php.cdb' ); + } + + private function randomString() { + $len = mt_rand( 0, 10 ); + $s = ''; + for ( $j = 0; $j < $len; $j++ ) { + $s .= chr( mt_rand( 0, 255 ) ); + } + return $s; + } + + private function cdbAssert( $msg, $key, $v1, $v2 ) { + $this->assertEquals( + $v2, + $v1, + $msg . ', k=' . bin2hex( $key ) + ); + } +} _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs