ferhui commented on a change in pull request #3009: URL: https://github.com/apache/ozone/pull/3009#discussion_r794983745
########## File path: hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/spi/impl/TestOzoneManagerServiceProviderImpl.java ########## @@ -263,6 +266,76 @@ public void testGetAndApplyDeltaUpdatesFromOM() throws Exception { .getKeyTable(getBucketLayout()).isExist(fullKey)); } + @Test + public void testGetAndApplyDeltaUpdatesFromOMWithLimit() throws Exception { + + // Writing 2 Keys into a source OM DB and collecting it in a + // DBUpdatesWrapper. + OMMetadataManager sourceOMMetadataMgr = + initializeNewOmMetadataManager(temporaryFolder.newFolder()); + writeDataToOm(sourceOMMetadataMgr, "key_one"); + writeDataToOm(sourceOMMetadataMgr, "key_two"); + + RocksDB rocksDB = ((RDBStore)sourceOMMetadataMgr.getStore()).getDb(); + TransactionLogIterator transactionLogIterator = rocksDB.getUpdatesSince(0L); + DBUpdates[] dbUpdatesWrapper = new DBUpdates[4]; + int index = 0; + while(transactionLogIterator.isValid()) { + TransactionLogIterator.BatchResult result = + transactionLogIterator.getBatch(); + result.writeBatch().markWalTerminationPoint(); + WriteBatch writeBatch = result.writeBatch(); + dbUpdatesWrapper[index] = new DBUpdates(); + dbUpdatesWrapper[index].addWriteBatch(writeBatch.data(), + result.sequenceNumber()); + index++; + transactionLogIterator.next(); + } + + // OM Service Provider's Metadata Manager. + OMMetadataManager omMetadataManager = + initializeNewOmMetadataManager(temporaryFolder.newFolder()); + + OzoneConfiguration withLimitConfiguration = + new OzoneConfiguration(configuration); + withLimitConfiguration.setLong(RECON_OM_DELTA_UPDATE_LIMIT, 1); + withLimitConfiguration.setLong(RECON_OM_DELTA_UPDATE_LOOP_LIMIT, 3); + OzoneManagerServiceProviderImpl ozoneManagerServiceProvider = + new OzoneManagerServiceProviderImpl(withLimitConfiguration, + getTestReconOmMetadataManager(omMetadataManager, + temporaryFolder.newFolder()), + getMockTaskController(), new ReconUtils(), + getMockOzoneManagerClientWith4Updates(dbUpdatesWrapper[0], + dbUpdatesWrapper[1], dbUpdatesWrapper[2], dbUpdatesWrapper[3])); + + OMDBUpdatesHandler updatesHandler = + new OMDBUpdatesHandler(omMetadataManager); + ozoneManagerServiceProvider.getAndApplyDeltaUpdatesFromOM( + 0L, updatesHandler); + + OzoneManagerSyncMetrics metrics = ozoneManagerServiceProvider.getMetrics(); + assertEquals(1.0, + metrics.getAverageNumUpdatesInDeltaRequest().value(), 0.0); + assertEquals(3, metrics.getNumNonZeroDeltaRequests().value()); + + // In this method, we have to assert the "GET" part and the "APPLY" path. Review comment: "GET" part or path? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org For additional commands, e-mail: issues-h...@ozone.apache.org