X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fmaintenance%2Fbackup_PageTest.php;h=7a78e524a59f363d94a721c7507225b397fdf9d0;hb=02e9220745bc38b79f3ebc86df9d3b351dfeb042;hp=000b50f1d7b9afb54bc9b88d2d5d2e5307ba821c;hpb=eadc306573803f444fd692b701823f9939fdd9e7;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/maintenance/backup_PageTest.php b/tests/phpunit/maintenance/backup_PageTest.php index 000b50f1d7..7a78e524a5 100644 --- a/tests/phpunit/maintenance/backup_PageTest.php +++ b/tests/phpunit/maintenance/backup_PageTest.php @@ -3,9 +3,19 @@ namespace MediaWiki\Tests\Maintenance; use DumpBackup; +use Exception; +use MediaWiki\MediaWikiServices; +use MediaWiki\Revision\RevisionRecord; +use MediaWikiTestCase; +use MWException; +use RequestContext; +use RevisionDeleter; use Title; use WikiExporter; +use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\LoadBalancer; use WikiPage; +use XmlDumpWriter; /** * Tests for page dumps of BackupDumper @@ -27,6 +37,11 @@ class BackupDumperPageTest extends DumpTestCase { private $revId4_1, $textId4_1; private $namespace, $talk_namespace; + /** + * @var LoadBalancer|null + */ + private $streamingLoadBalancer = null; + function addDBData() { // be sure, titles created here using english namespace names $this->setContentLang( 'en' ); @@ -65,6 +80,17 @@ class BackupDumperPageTest extends DumpTestCase { "BackupDumperTestP2Summary4 extra " ); $this->pageId2 = $page->getId(); + $revDel = RevisionDeleter::createList( + 'revision', + RequestContext::getMain(), + $this->pageTitle2, + [ $this->revId2_2 ] + ); + $revDel->setVisibility( [ + 'value' => [ RevisionRecord::DELETED_TEXT => 1 ], + 'comment' => 'testing!' + ] ); + $this->pageTitle3 = Title::newFromText( 'BackupDumperTestP3', $this->namespace ); $page = WikiPage::factory( $this->pageTitle3 ); list( $this->revId3_1, $this->textId3_1 ) = $this->addRevision( $page, @@ -101,154 +127,359 @@ class BackupDumperPageTest extends DumpTestCase { "Page ids increasing without holes" ); } - function testFullTextPlain() { + function tearDown() { + parent::tearDown(); + + if ( isset( $this->streamingLoadBalancer ) ) { + $this->streamingLoadBalancer->closeAll(); + } + } + + /** + * Returns a new database connection which is separate from the conenctions returned + * by the default LoadBalancer instance. + * + * @return IDatabase + */ + private function newStreamingDBConnection() { + // Create a *new* LoadBalancer, so no connections are shared + if ( !$this->streamingLoadBalancer ) { + $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); + + $this->streamingLoadBalancer = $lbFactory->newMainLB(); + } + + $db = $this->streamingLoadBalancer->getConnection( DB_REPLICA ); + + // Make sure the DB connection has the fake table clones and the fake table prefix + MediaWikiTestCase::setupDatabaseWithTestPrefix( $db ); + + // Make sure the DB connection has all the test data + $this->copyTestData( $this->db, $db ); + + return $db; + } + + /** + * @param array $argv + * @param int $startId + * @param int $endId + * + * @return DumpBackup + */ + private function newDumpBackup( $argv, $startId, $endId ) { + $dumper = new DumpBackup( $argv ); + $dumper->startId = $startId; + $dumper->endId = $endId; + $dumper->reporting = false; + + // NOTE: The copyTestData() method used by newStreamingDBConnection() + // doesn't work with SQLite (T217607). + // But DatabaseSqlite doesn't support streaming anyway, so just skip that part. + if ( $this->db->getType() === 'sqlite' ) { + $dumper->setDB( $this->db ); + } else { + $dumper->setDB( $this->newStreamingDBConnection() ); + } + + return $dumper; + } + + public function schemaVersionProvider() { + foreach ( XmlDumpWriter::$supportedSchemas as $schemaVersion ) { + yield [ $schemaVersion ]; + } + } + + /** + * @dataProvider schemaVersionProvider + */ + function testFullTextPlain( $schemaVersion ) { // Preparing the dump $fname = $this->getNewTempFile(); - $dumper = new DumpBackup(); - $dumper->loadWithArgv( [ '--full', '--quiet', '--output', 'file:' . $fname ] ); - $dumper->startId = $this->pageId1; - $dumper->endId = $this->pageId4 + 1; - $dumper->setDB( $this->db ); + $dumper = $this->newDumpBackup( + [ '--full', '--quiet', '--output', 'file:' . $fname, '--schema-version', $schemaVersion ], + $this->pageId1, + $this->pageId4 + 1 + ); // Performing the dump $dumper->execute(); // Checking the dumped data - $this->assertDumpStart( $fname ); + $this->assertDumpSchema( $fname, $this->getXmlSchemaPath( $schemaVersion ) ); + $asserter = $this->getDumpAsserter( $schemaVersion ); + + $asserter->assertDumpStart( $fname ); // Page 1 - $this->assertPageStart( $this->pageId1, $this->namespace, $this->pageTitle1->getPrefixedText() ); - $this->assertRevision( $this->revId1_1, "BackupDumperTestP1Summary1", - $this->textId1_1, 23, "0bolhl6ol7i6x0e7yq91gxgaan39j87", - "BackupDumperTestP1Text1" ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId1, + $this->namespace, + $this->pageTitle1->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId1_1, + "BackupDumperTestP1Summary1", + $this->textId1_1, + 23, + "0bolhl6ol7i6x0e7yq91gxgaan39j87", + "BackupDumperTestP1Text1" + ); + $asserter->assertPageEnd(); // Page 2 - $this->assertPageStart( $this->pageId2, $this->namespace, $this->pageTitle2->getPrefixedText() ); - $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1", - $this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2", - "BackupDumperTestP2Text1" ); - $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2", - $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", - "BackupDumperTestP2Text2", $this->revId2_1 ); - $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3", - $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", - "BackupDumperTestP2Text3", $this->revId2_2 ); - $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra", - $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", - "BackupDumperTestP2Text4 some additional Text", $this->revId2_3 ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId2, + $this->namespace, + $this->pageTitle2->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId2_1, + "BackupDumperTestP2Summary1", + $this->textId2_1, + 23, + "jprywrymfhysqllua29tj3sc7z39dl2", + "BackupDumperTestP2Text1" + ); + $asserter->assertRevision( + $this->revId2_2, + "BackupDumperTestP2Summary2", + null, // deleted! + false, // deleted! + null, // deleted! + false, // deleted! + $this->revId2_1 + ); + $asserter->assertRevision( + $this->revId2_3, + "BackupDumperTestP2Summary3", + $this->textId2_3, + 23, + "jfunqmh1ssfb8rs43r19w98k28gg56r", + "BackupDumperTestP2Text3", + $this->revId2_2 + ); + $asserter->assertRevision( + $this->revId2_4, + "BackupDumperTestP2Summary4 extra", + $this->textId2_4, + 44, + "6o1ciaxa6pybnqprmungwofc4lv00wv", + "BackupDumperTestP2Text4 some additional Text", + $this->revId2_3 + ); + $asserter->assertPageEnd(); // Page 3 // -> Page is marked deleted. Hence not visible // Page 4 - $this->assertPageStart( + $asserter->assertPageStart( $this->pageId4, $this->talk_namespace, $this->pageTitle4->getPrefixedText() ); - $this->assertRevision( $this->revId4_1, "Talk BackupDumperTestP1 Summary1", - $this->textId4_1, 35, "nktofwzd0tl192k3zfepmlzxoax1lpe", - "Talk about BackupDumperTestP1 Text1" ); - $this->assertPageEnd(); + $asserter->assertRevision( + $this->revId4_1, + "Talk BackupDumperTestP1 Summary1", + $this->textId4_1, + 35, + "nktofwzd0tl192k3zfepmlzxoax1lpe", + "Talk about BackupDumperTestP1 Text1", + false, + CONTENT_MODEL_WIKITEXT, + CONTENT_FORMAT_WIKITEXT, + $schemaVersion + ); + $asserter->assertPageEnd(); + + $asserter->assertDumpEnd(); - $this->assertDumpEnd(); + // FIXME: add multi-slot test case! } - function testFullStubPlain() { + /** + * @dataProvider schemaVersionProvider + */ + function testFullStubPlain( $schemaVersion ) { // Preparing the dump $fname = $this->getNewTempFile(); - $dumper = new DumpBackup(); - $dumper->loadWithArgv( [ '--full', '--quiet', '--output', 'file:' . $fname, '--stub' ] ); - $dumper->startId = $this->pageId1; - $dumper->endId = $this->pageId4 + 1; - $dumper->setDB( $this->db ); + $dumper = $this->newDumpBackup( + [ + '--full', + '--quiet', + '--output', + 'file:' . $fname, + '--stub', + '--schema-version', $schemaVersion, + ], + $this->pageId1, + $this->pageId4 + 1 + ); // Performing the dump $dumper->execute(); // Checking the dumped data - $this->assertDumpStart( $fname ); + $this->assertDumpSchema( $fname, $this->getXmlSchemaPath( $schemaVersion ) ); + $asserter = $this->getDumpAsserter( $schemaVersion ); + + $asserter->assertDumpStart( $fname ); // Page 1 - $this->assertPageStart( $this->pageId1, $this->namespace, $this->pageTitle1->getPrefixedText() ); - $this->assertRevision( $this->revId1_1, "BackupDumperTestP1Summary1", - $this->textId1_1, 23, "0bolhl6ol7i6x0e7yq91gxgaan39j87" ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId1, + $this->namespace, + $this->pageTitle1->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId1_1, + "BackupDumperTestP1Summary1", + $this->textId1_1, + 23, + "0bolhl6ol7i6x0e7yq91gxgaan39j87" + ); + $asserter->assertPageEnd(); // Page 2 - $this->assertPageStart( $this->pageId2, $this->namespace, $this->pageTitle2->getPrefixedText() ); - $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1", - $this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2" ); - $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2", - $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", false, $this->revId2_1 ); - $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3", - $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", false, $this->revId2_2 ); - $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra", - $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId2, + $this->namespace, + $this->pageTitle2->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId2_1, + "BackupDumperTestP2Summary1", + $this->textId2_1, + 23, + "jprywrymfhysqllua29tj3sc7z39dl2" + ); + $asserter->assertRevision( + $this->revId2_2, + "BackupDumperTestP2Summary2", + null, // deleted! + false, // deleted! + null, // deleted! + false, // deleted! + $this->revId2_1 + ); + $asserter->assertRevision( + $this->revId2_3, + "BackupDumperTestP2Summary3", + $this->textId2_3, + 23, + "jfunqmh1ssfb8rs43r19w98k28gg56r", + false, + $this->revId2_2 + ); + $asserter->assertRevision( + $this->revId2_4, + "BackupDumperTestP2Summary4 extra", + $this->textId2_4, + 44, + "6o1ciaxa6pybnqprmungwofc4lv00wv", + false, + $this->revId2_3 + ); + $asserter->assertPageEnd(); // Page 3 // -> Page is marked deleted. Hence not visible // Page 4 - $this->assertPageStart( + $asserter->assertPageStart( $this->pageId4, $this->talk_namespace, $this->pageTitle4->getPrefixedText() ); - $this->assertRevision( $this->revId4_1, "Talk BackupDumperTestP1 Summary1", - $this->textId4_1, 35, "nktofwzd0tl192k3zfepmlzxoax1lpe" ); - $this->assertPageEnd(); + $asserter->assertRevision( + $this->revId4_1, + "Talk BackupDumperTestP1 Summary1", + $this->textId4_1, + 35, + "nktofwzd0tl192k3zfepmlzxoax1lpe" + ); + $asserter->assertPageEnd(); - $this->assertDumpEnd(); + $asserter->assertDumpEnd(); } - function testCurrentStubPlain() { + /** + * @dataProvider schemaVersionProvider + */ + function testCurrentStubPlain( $schemaVersion ) { // Preparing the dump $fname = $this->getNewTempFile(); - $dumper = new DumpBackup( [ '--output', 'file:' . $fname ] ); - $dumper->startId = $this->pageId1; - $dumper->endId = $this->pageId4 + 1; - $dumper->reporting = false; - $dumper->setDB( $this->db ); + $dumper = $this->newDumpBackup( + [ '--output', 'file:' . $fname, '--schema-version', $schemaVersion ], + $this->pageId1, + $this->pageId4 + 1 + ); // Performing the dump $dumper->dump( WikiExporter::CURRENT, WikiExporter::STUB ); // Checking the dumped data - $this->assertDumpStart( $fname ); + $this->assertDumpSchema( $fname, $this->getXmlSchemaPath( $schemaVersion ) ); + + $asserter = $this->getDumpAsserter( $schemaVersion ); + $asserter->assertDumpStart( $fname ); // Page 1 - $this->assertPageStart( $this->pageId1, $this->namespace, $this->pageTitle1->getPrefixedText() ); - $this->assertRevision( $this->revId1_1, "BackupDumperTestP1Summary1", - $this->textId1_1, 23, "0bolhl6ol7i6x0e7yq91gxgaan39j87" ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId1, + $this->namespace, + $this->pageTitle1->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId1_1, + "BackupDumperTestP1Summary1", + $this->textId1_1, + 23, + "0bolhl6ol7i6x0e7yq91gxgaan39j87" + ); + $asserter->assertPageEnd(); // Page 2 - $this->assertPageStart( $this->pageId2, $this->namespace, $this->pageTitle2->getPrefixedText() ); - $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra", - $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId2, + $this->namespace, + $this->pageTitle2->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId2_4, + "BackupDumperTestP2Summary4 extra", + $this->textId2_4, + 44, + "6o1ciaxa6pybnqprmungwofc4lv00wv", + false, + $this->revId2_3 + ); + $asserter->assertPageEnd(); // Page 3 // -> Page is marked deleted. Hence not visible // Page 4 - $this->assertPageStart( + $asserter->assertPageStart( $this->pageId4, $this->talk_namespace, $this->pageTitle4->getPrefixedText() ); - $this->assertRevision( $this->revId4_1, "Talk BackupDumperTestP1 Summary1", - $this->textId4_1, 35, "nktofwzd0tl192k3zfepmlzxoax1lpe" ); - $this->assertPageEnd(); + $asserter->assertRevision( + $this->revId4_1, + "Talk BackupDumperTestP1 Summary1", + $this->textId4_1, + 35, + "nktofwzd0tl192k3zfepmlzxoax1lpe" + ); + $asserter->assertPageEnd(); - $this->assertDumpEnd(); + $asserter->assertDumpEnd(); } function testCurrentStubGzip() { @@ -257,45 +488,67 @@ class BackupDumperPageTest extends DumpTestCase { // Preparing the dump $fname = $this->getNewTempFile(); - $dumper = new DumpBackup( [ '--output', 'gzip:' . $fname ] ); - $dumper->startId = $this->pageId1; - $dumper->endId = $this->pageId4 + 1; - $dumper->reporting = false; - $dumper->setDB( $this->db ); + $dumper = $this->newDumpBackup( + [ '--output', 'gzip:' . $fname ], + $this->pageId1, + $this->pageId4 + 1 + ); // Performing the dump $dumper->dump( WikiExporter::CURRENT, WikiExporter::STUB ); // Checking the dumped data $this->gunzip( $fname ); - $this->assertDumpStart( $fname ); + + $asserter = $this->getDumpAsserter(); + $asserter->assertDumpStart( $fname ); // Page 1 - $this->assertPageStart( $this->pageId1, $this->namespace, $this->pageTitle1->getPrefixedText() ); - $this->assertRevision( $this->revId1_1, "BackupDumperTestP1Summary1", - $this->textId1_1, 23, "0bolhl6ol7i6x0e7yq91gxgaan39j87" ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId1, + $this->namespace, + $this->pageTitle1->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId1_1, + "BackupDumperTestP1Summary1", + $this->textId1_1, + 23, + "0bolhl6ol7i6x0e7yq91gxgaan39j87" + ); + $asserter->assertPageEnd(); // Page 2 - $this->assertPageStart( $this->pageId2, $this->namespace, $this->pageTitle2->getPrefixedText() ); - $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra", - $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId2, + $this->namespace, + $this->pageTitle2->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId2_4, + "BackupDumperTestP2Summary4 extra", + $this->textId2_4, + 44, + "6o1ciaxa6pybnqprmungwofc4lv00wv", + false, + $this->revId2_3 + ); + $asserter->assertPageEnd(); // Page 3 // -> Page is marked deleted. Hence not visible // Page 4 - $this->assertPageStart( + $asserter->assertPageStart( $this->pageId4, $this->talk_namespace, $this->pageTitle4->getPrefixedText() ); - $this->assertRevision( $this->revId4_1, "Talk BackupDumperTestP1 Summary1", + $asserter->assertRevision( $this->revId4_1, "Talk BackupDumperTestP1 Summary1", $this->textId4_1, 35, "nktofwzd0tl192k3zfepmlzxoax1lpe" ); - $this->assertPageEnd(); + $asserter->assertPageEnd(); - $this->assertDumpEnd(); + $asserter->assertDumpEnd(); } /** @@ -308,22 +561,27 @@ class BackupDumperPageTest extends DumpTestCase { * * We reproduce such a setup with our mini fixture, although we omit * chunks, and all the other gimmicks of xmldumps-backup. + * + * @dataProvider schemaVersionProvider */ - function testXmlDumpsBackupUseCase() { + function testXmlDumpsBackupUseCase( $schemaVersion ) { $this->checkHasGzip(); $fnameMetaHistory = $this->getNewTempFile(); $fnameMetaCurrent = $this->getNewTempFile(); $fnameArticles = $this->getNewTempFile(); - $dumper = new DumpBackup( [ "--full", "--stub", "--output=gzip:" . $fnameMetaHistory, - "--output=gzip:" . $fnameMetaCurrent, "--filter=latest", - "--output=gzip:" . $fnameArticles, "--filter=latest", - "--filter=notalk", "--filter=namespace:!NS_USER", - "--reporting=1000" ] ); - $dumper->startId = $this->pageId1; - $dumper->endId = $this->pageId4 + 1; - $dumper->setDB( $this->db ); + $dumper = $this->newDumpBackup( + [ "--full", "--stub", "--output=gzip:" . $fnameMetaHistory, + "--output=gzip:" . $fnameMetaCurrent, "--filter=latest", + "--output=gzip:" . $fnameArticles, "--filter=latest", + "--filter=notalk", "--filter=namespace:!NS_USER", + "--reporting=1000", '--schema-version', $schemaVersion + ], + $this->pageId1, + $this->pageId4 + 1 + ); + $dumper->reporting = true; // xmldumps-backup uses reporting. We will not check the exact reported // message, as they are dependent on the processing power of the used @@ -342,89 +600,187 @@ class BackupDumperPageTest extends DumpTestCase { // Checking meta-history ------------------------------------------------- $this->gunzip( $fnameMetaHistory ); - $this->assertDumpStart( $fnameMetaHistory ); + $this->assertDumpSchema( $fnameMetaHistory, $this->getXmlSchemaPath( $schemaVersion ) ); + + $asserter = $this->getDumpAsserter( $schemaVersion ); + $asserter->assertDumpStart( $fnameMetaHistory ); // Page 1 - $this->assertPageStart( $this->pageId1, $this->namespace, $this->pageTitle1->getPrefixedText() ); - $this->assertRevision( $this->revId1_1, "BackupDumperTestP1Summary1", - $this->textId1_1, 23, "0bolhl6ol7i6x0e7yq91gxgaan39j87" ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId1, + $this->namespace, + $this->pageTitle1->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId1_1, + "BackupDumperTestP1Summary1", + $this->textId1_1, + 23, + "0bolhl6ol7i6x0e7yq91gxgaan39j87" + ); + $asserter->assertPageEnd(); // Page 2 - $this->assertPageStart( $this->pageId2, $this->namespace, $this->pageTitle2->getPrefixedText() ); - $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1", - $this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2" ); - $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2", - $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", false, $this->revId2_1 ); - $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3", - $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", false, $this->revId2_2 ); - $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra", - $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId2, + $this->namespace, + $this->pageTitle2->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId2_1, + "BackupDumperTestP2Summary1", + $this->textId2_1, + 23, + "jprywrymfhysqllua29tj3sc7z39dl2" + ); + $asserter->assertRevision( + $this->revId2_2, + "BackupDumperTestP2Summary2", + null, // deleted! + false, // deleted! + null, // deleted! + false, // deleted! + $this->revId2_1 + ); + $asserter->assertRevision( + $this->revId2_3, + "BackupDumperTestP2Summary3", + $this->textId2_3, + 23, + "jfunqmh1ssfb8rs43r19w98k28gg56r", + false, + $this->revId2_2 + ); + $asserter->assertRevision( + $this->revId2_4, + "BackupDumperTestP2Summary4 extra", + $this->textId2_4, + 44, + "6o1ciaxa6pybnqprmungwofc4lv00wv", + false, + $this->revId2_3 + ); + $asserter->assertPageEnd(); // Page 3 // -> Page is marked deleted. Hence not visible // Page 4 - $this->assertPageStart( + $asserter->assertPageStart( $this->pageId4, $this->talk_namespace, - $this->pageTitle4->getPrefixedText() + $this->pageTitle4->getPrefixedText( $schemaVersion ) ); - $this->assertRevision( $this->revId4_1, "Talk BackupDumperTestP1 Summary1", - $this->textId4_1, 35, "nktofwzd0tl192k3zfepmlzxoax1lpe" ); - $this->assertPageEnd(); + $asserter->assertRevision( + $this->revId4_1, + "Talk BackupDumperTestP1 Summary1", + $this->textId4_1, + 35, + "nktofwzd0tl192k3zfepmlzxoax1lpe" + ); + $asserter->assertPageEnd(); - $this->assertDumpEnd(); + $asserter->assertDumpEnd(); // Checking meta-current ------------------------------------------------- $this->gunzip( $fnameMetaCurrent ); - $this->assertDumpStart( $fnameMetaCurrent ); + $this->assertDumpSchema( $fnameMetaCurrent, $this->getXmlSchemaPath( $schemaVersion ) ); + + $asserter = $this->getDumpAsserter( $schemaVersion ); + $asserter->assertDumpStart( $fnameMetaCurrent ); // Page 1 - $this->assertPageStart( $this->pageId1, $this->namespace, $this->pageTitle1->getPrefixedText() ); - $this->assertRevision( $this->revId1_1, "BackupDumperTestP1Summary1", - $this->textId1_1, 23, "0bolhl6ol7i6x0e7yq91gxgaan39j87" ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId1, + $this->namespace, + $this->pageTitle1->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId1_1, + "BackupDumperTestP1Summary1", + $this->textId1_1, + 23, + "0bolhl6ol7i6x0e7yq91gxgaan39j87" + ); + $asserter->assertPageEnd(); // Page 2 - $this->assertPageStart( $this->pageId2, $this->namespace, $this->pageTitle2->getPrefixedText() ); - $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra", - $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId2, + $this->namespace, + $this->pageTitle2->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId2_4, + "BackupDumperTestP2Summary4 extra", + $this->textId2_4, + 44, + "6o1ciaxa6pybnqprmungwofc4lv00wv", + false, + $this->revId2_3 + ); + $asserter->assertPageEnd(); // Page 3 // -> Page is marked deleted. Hence not visible // Page 4 - $this->assertPageStart( + $asserter->assertPageStart( $this->pageId4, $this->talk_namespace, $this->pageTitle4->getPrefixedText() ); - $this->assertRevision( $this->revId4_1, "Talk BackupDumperTestP1 Summary1", - $this->textId4_1, 35, "nktofwzd0tl192k3zfepmlzxoax1lpe" ); - $this->assertPageEnd(); + $asserter->assertRevision( + $this->revId4_1, + "Talk BackupDumperTestP1 Summary1", + $this->textId4_1, + 35, + "nktofwzd0tl192k3zfepmlzxoax1lpe" + ); + $asserter->assertPageEnd(); - $this->assertDumpEnd(); + $asserter->assertDumpEnd(); // Checking articles ------------------------------------------------- $this->gunzip( $fnameArticles ); - $this->assertDumpStart( $fnameArticles ); + $this->assertDumpSchema( $fnameArticles, $this->getXmlSchemaPath( $schemaVersion ) ); + + $asserter = $this->getDumpAsserter( $schemaVersion ); + $asserter->assertDumpStart( $fnameArticles ); // Page 1 - $this->assertPageStart( $this->pageId1, $this->namespace, $this->pageTitle1->getPrefixedText() ); - $this->assertRevision( $this->revId1_1, "BackupDumperTestP1Summary1", - $this->textId1_1, 23, "0bolhl6ol7i6x0e7yq91gxgaan39j87" ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId1, + $this->namespace, + $this->pageTitle1->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId1_1, + "BackupDumperTestP1Summary1", + $this->textId1_1, + 23, + "0bolhl6ol7i6x0e7yq91gxgaan39j87" + ); + $asserter->assertPageEnd(); // Page 2 - $this->assertPageStart( $this->pageId2, $this->namespace, $this->pageTitle2->getPrefixedText() ); - $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra", - $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 ); - $this->assertPageEnd(); + $asserter->assertPageStart( + $this->pageId2, + $this->namespace, + $this->pageTitle2->getPrefixedText() + ); + $asserter->assertRevision( + $this->revId2_4, + "BackupDumperTestP2Summary4 extra", + $this->textId2_4, + 44, + "6o1ciaxa6pybnqprmungwofc4lv00wv", + false, + $this->revId2_3 + ); + $asserter->assertPageEnd(); // Page 3 // -> Page is marked deleted. Hence not visible @@ -432,7 +788,7 @@ class BackupDumperPageTest extends DumpTestCase { // Page 4 // -> Page is not in $this->namespace. Hence not visible - $this->assertDumpEnd(); + $asserter->assertDumpEnd(); $this->expectETAOutput(); }