@@ -7126,7 +7126,7 @@ TEST_CASE("/redwood/correctness/unit/RedwoodRecordRef") {
71267126 bytes += deltaTest (a, b);
71277127 }
71287128 double elapsed = timer () - start;
7129- printf (" DeltaTest() on random large records %g M/s %g MB/s\n " , count / elapsed / 1e6 , bytes / elapsed / 1e6 );
7129+ printf (" DeltaTest() on random large records %f M/s %f MB/s\n " , count / elapsed / 1e6 , bytes / elapsed / 1e6 );
71307130
71317131 keyBuffer.resize (30 );
71327132 valueBuffer.resize (100 );
@@ -7138,7 +7138,7 @@ TEST_CASE("/redwood/correctness/unit/RedwoodRecordRef") {
71387138 RedwoodRecordRef b = randomRedwoodRecordRef (keyBuffer, valueBuffer);
71397139 bytes += deltaTest (a, b);
71407140 }
7141- printf (" DeltaTest() on random small records %g M/s %g MB/s\n " , count / elapsed / 1e6 , bytes / elapsed / 1e6 );
7141+ printf (" DeltaTest() on random small records %f M/s %f MB/s\n " , count / elapsed / 1e6 , bytes / elapsed / 1e6 );
71427142
71437143 RedwoodRecordRef rec1;
71447144 RedwoodRecordRef rec2;
@@ -7155,15 +7155,15 @@ TEST_CASE("/redwood/correctness/unit/RedwoodRecordRef") {
71557155 for (i = 0 ; i < count; ++i) {
71567156 total += rec1.getCommonPrefixLen (rec2, 50 );
71577157 }
7158- printf (" %" PRId64 " getCommonPrefixLen(skip=50) %g M/s\n " , total, count / (timer () - start) / 1e6 );
7158+ printf (" %" PRId64 " getCommonPrefixLen(skip=50) %f M/s\n " , total, count / (timer () - start) / 1e6 );
71597159
71607160 start = timer ();
71617161 total = 0 ;
71627162 count = 100e6 ;
71637163 for (i = 0 ; i < count; ++i) {
71647164 total += rec1.getCommonPrefixLen (rec2, 0 );
71657165 }
7166- printf (" %" PRId64 " getCommonPrefixLen(skip=0) %g M/s\n " , total, count / (timer () - start) / 1e6 );
7166+ printf (" %" PRId64 " getCommonPrefixLen(skip=0) %f M/s\n " , total, count / (timer () - start) / 1e6 );
71677167
71687168 char buf[1000 ];
71697169 RedwoodRecordRef::Delta& d = *(RedwoodRecordRef::Delta*)buf;
@@ -7176,15 +7176,15 @@ TEST_CASE("/redwood/correctness/unit/RedwoodRecordRef") {
71767176 for (i = 0 ; i < count; ++i) {
71777177 total += rec1.writeDelta (d, rec2, commonPrefix);
71787178 }
7179- printf (" %" PRId64 " writeDelta(commonPrefix=%d) %g M/s\n " , total, commonPrefix, count / (timer () - start) / 1e6 );
7179+ printf (" %" PRId64 " writeDelta(commonPrefix=%d) %f M/s\n " , total, commonPrefix, count / (timer () - start) / 1e6 );
71807180
71817181 start = timer ();
71827182 total = 0 ;
71837183 count = 10e6 ;
71847184 for (i = 0 ; i < count; ++i) {
71857185 total += rec1.writeDelta (d, rec2);
71867186 }
7187- printf (" %" PRId64 " writeDelta() %g M/s\n " , total, count / (timer () - start) / 1e6 );
7187+ printf (" %" PRId64 " writeDelta() %f M/s\n " , total, count / (timer () - start) / 1e6 );
71887188
71897189 return Void ();
71907190}
@@ -7744,30 +7744,43 @@ TEST_CASE("/redwood/correctness/btree") {
77447744 g_redwoodMetricsActor = Void (); // Prevent trace event metrics from starting
77457745 g_redwoodMetrics.clear ();
77467746
7747- state std::string pagerFile = " unittest_pageFile.redwood" ;
7747+ state std::string fileName = params. get ( " fileName " ). orDefault ( " unittest_pageFile.redwood" ) ;
77487748 IPager2* pager;
77497749
7750- state bool serialTest = deterministicRandom ()->coinflip ();
7751- state bool shortTest = deterministicRandom ()->coinflip ();
7750+ state bool serialTest = params. getInt ( " serialTest " ). orDefault ( deterministicRandom ()->coinflip () );
7751+ state bool shortTest = params. getInt ( " shortTest " ). orDefault ( deterministicRandom ()->coinflip () );
77527752
77537753 state int pageSize =
77547754 shortTest ? 200 : (deterministicRandom ()->coinflip () ? 4096 : deterministicRandom ()->randomInt (200 , 400 ));
77557755
7756- state int64_t targetPageOps = shortTest ? 50000 : 1000000 ;
7757- state bool pagerMemoryOnly = shortTest && (deterministicRandom ()->random01 () < .001 );
7758- state int maxKeySize = deterministicRandom ()->randomInt (1 , pageSize * 2 );
7759- state int maxValueSize = randomSize (pageSize * 25 );
7760- state int maxCommitSize = shortTest ? 1000 : randomSize (std::min<int >((maxKeySize + maxValueSize) * 20000 , 10e6 ));
7761- state double clearProbability = deterministicRandom ()->random01 () * .1 ;
7762- state double clearSingleKeyProbability = deterministicRandom ()->random01 ();
7763- state double clearPostSetProbability = deterministicRandom ()->random01 () * .1 ;
7764- state double coldStartProbability = pagerMemoryOnly ? 0 : (deterministicRandom ()->random01 () * 0.3 );
7765- state double advanceOldVersionProbability = deterministicRandom ()->random01 ();
7756+ state int64_t targetPageOps = params.getInt (" targetPageOps" ).orDefault (shortTest ? 50000 : 1000000 );
7757+ state bool pagerMemoryOnly =
7758+ params.getInt (" pagerMemoryOnly" ).orDefault (shortTest && (deterministicRandom ()->random01 () < .001 ));
7759+ state int maxKeySize = params.getInt (" maxKeySize" ).orDefault (deterministicRandom ()->randomInt (1 , pageSize * 2 ));
7760+ state int maxValueSize = params.getInt (" maxValueSize" ).orDefault (randomSize (pageSize * 25 ));
7761+ state int maxCommitSize =
7762+ params.getInt (" maxCommitSize" )
7763+ .orDefault (shortTest ? 1000 : randomSize (std::min<int >((maxKeySize + maxValueSize) * 20000 , 10e6 )));
7764+ state double clearProbability =
7765+ params.getDouble (" clearProbability" ).orDefault (deterministicRandom ()->random01 () * .1 );
7766+ state double clearSingleKeyProbability =
7767+ params.getDouble (" clearSingleKeyProbability" ).orDefault (deterministicRandom ()->random01 ());
7768+ state double clearPostSetProbability =
7769+ params.getDouble (" clearPostSetProbability" ).orDefault (deterministicRandom ()->random01 () * .1 );
7770+ state double coldStartProbability = params.getDouble (" coldStartProbability" )
7771+ .orDefault (pagerMemoryOnly ? 0 : (deterministicRandom ()->random01 () * 0.3 ));
7772+ state double advanceOldVersionProbability =
7773+ params.getDouble (" advanceOldVersionProbability" ).orDefault (deterministicRandom ()->random01 ());
77667774 state int64_t cacheSizeBytes =
7767- pagerMemoryOnly ? 2e9 : (pageSize * deterministicRandom ()->randomInt (1 , (BUGGIFY ? 2 : 10000 ) + 1 ));
7768- state Version versionIncrement = deterministicRandom ()->randomInt64 (1 , 1e8 );
7769- state Version remapCleanupWindow = BUGGIFY ? 0 : deterministicRandom ()->randomInt64 (1 , versionIncrement * 50 );
7770- state int maxVerificationMapEntries = 300e3 ;
7775+ params.getInt (" cacheSizeBytes" )
7776+ .orDefault (pagerMemoryOnly ? 2e9
7777+ : (pageSize * deterministicRandom ()->randomInt (1 , (BUGGIFY ? 2 : 10000 ) + 1 )));
7778+ state Version versionIncrement =
7779+ params.getInt (" versionIncrement" ).orDefault (deterministicRandom ()->randomInt64 (1 , 1e8 ));
7780+ state Version remapCleanupWindow =
7781+ params.getInt (" remapCleanupWindow" )
7782+ .orDefault (BUGGIFY ? 0 : deterministicRandom ()->randomInt64 (1 , versionIncrement * 50 ));
7783+ state int maxVerificationMapEntries = params.getInt (" maxVerificationMapEntries" ).orDefault (300e3 );
77717784
77727785 printf (" \n " );
77737786 printf (" targetPageOps: %" PRId64 " \n " , targetPageOps);
@@ -7790,11 +7803,11 @@ TEST_CASE("/redwood/correctness/btree") {
77907803 printf (" \n " );
77917804
77927805 printf (" Deleting existing test data...\n " );
7793- deleteFile (pagerFile );
7806+ deleteFile (fileName );
77947807
77957808 printf (" Initializing...\n " );
7796- pager = new DWALPager (pageSize, pagerFile , cacheSizeBytes, remapCleanupWindow, pagerMemoryOnly);
7797- state VersionedBTree* btree = new VersionedBTree (pager, pagerFile );
7809+ pager = new DWALPager (pageSize, fileName , cacheSizeBytes, remapCleanupWindow, pagerMemoryOnly);
7810+ state VersionedBTree* btree = new VersionedBTree (pager, fileName );
77987811 wait (btree->init ());
77997812
78007813 state std::map<std::pair<std::string, Version>, Optional<std::string>> written;
@@ -7997,8 +8010,8 @@ TEST_CASE("/redwood/correctness/btree") {
79978010 wait (closedFuture);
79988011
79998012 printf (" Reopening btree from disk.\n " );
8000- IPager2* pager = new DWALPager (pageSize, pagerFile , cacheSizeBytes, remapCleanupWindow);
8001- btree = new VersionedBTree (pager, pagerFile );
8013+ IPager2* pager = new DWALPager (pageSize, fileName , cacheSizeBytes, remapCleanupWindow);
8014+ btree = new VersionedBTree (pager, fileName );
80028015 wait (btree->init ());
80038016
80048017 Version v = btree->getLatestVersion ();
@@ -8034,7 +8047,7 @@ TEST_CASE("/redwood/correctness/btree") {
80348047 state Future<Void> closedFuture = btree->onClosed ();
80358048 btree->close ();
80368049 wait (closedFuture);
8037- btree = new VersionedBTree (new DWALPager (pageSize, pagerFile , cacheSizeBytes, 0 ), pagerFile );
8050+ btree = new VersionedBTree (new DWALPager (pageSize, fileName , cacheSizeBytes, 0 ), fileName );
80388051 wait (btree->init ());
80398052
80408053 wait (btree->clearAllAndCheckSanity ());
@@ -8133,29 +8146,29 @@ TEST_CASE(":/redwood/performance/set") {
81338146 g_redwoodMetricsActor = Void (); // Prevent trace event metrics from starting
81348147 g_redwoodMetrics.clear ();
81358148
8136- state std::string fileName = params.getParam (" fileName" ).orDefault (" unittest.redwood" );
8137- state int pageSize = params.getIntParam (" pageSize" ).orDefault (SERVER_KNOBS->REDWOOD_DEFAULT_PAGE_SIZE );
8138- state int64_t pageCacheBytes = params.getIntParam (" pageCacheBytes" ).orDefault (FLOW_KNOBS->PAGE_CACHE_4K );
8139- state int nodeCount = params.getIntParam (" nodeCount" ).orDefault (1e9 );
8140- state int maxRecordsPerCommit = params.getIntParam (" maxRecordsPerCommit" ).orDefault (20000 );
8141- state int maxKVBytesPerCommit = params.getIntParam (" maxKVBytesPerCommit" ).orDefault (20e6 );
8142- state int64_t kvBytesTarget = params.getIntParam (" kvBytesTarget" ).orDefault (4e9 );
8143- state int minKeyPrefixBytes = params.getIntParam (" minKeyPrefixBytes" ).orDefault (25 );
8144- state int maxKeyPrefixBytes = params.getIntParam (" maxKeyPrefixBytes" ).orDefault (25 );
8145- state int minValueSize = params.getIntParam (" minValueSize" ).orDefault (100 );
8146- state int maxValueSize = params.getIntParam (" maxValueSize" ).orDefault (500 );
8147- state int minConsecutiveRun = params.getIntParam (" minConsecutiveRun" ).orDefault (1 );
8148- state int maxConsecutiveRun = params.getIntParam (" maxConsecutiveRun" ).orDefault (100 );
8149- state char firstKeyChar = params.getParam (" firstKeyChar" ).orDefault (" a" )[0 ];
8150- state char lastKeyChar = params.getParam (" lastKeyChar" ).orDefault (" m" )[0 ];
8149+ state std::string fileName = params.get (" fileName" ).orDefault (" unittest.redwood" );
8150+ state int pageSize = params.getInt (" pageSize" ).orDefault (SERVER_KNOBS->REDWOOD_DEFAULT_PAGE_SIZE );
8151+ state int64_t pageCacheBytes = params.getInt (" pageCacheBytes" ).orDefault (FLOW_KNOBS->PAGE_CACHE_4K );
8152+ state int nodeCount = params.getInt (" nodeCount" ).orDefault (1e9 );
8153+ state int maxRecordsPerCommit = params.getInt (" maxRecordsPerCommit" ).orDefault (20000 );
8154+ state int maxKVBytesPerCommit = params.getInt (" maxKVBytesPerCommit" ).orDefault (20e6 );
8155+ state int64_t kvBytesTarget = params.getInt (" kvBytesTarget" ).orDefault (4e9 );
8156+ state int minKeyPrefixBytes = params.getInt (" minKeyPrefixBytes" ).orDefault (25 );
8157+ state int maxKeyPrefixBytes = params.getInt (" maxKeyPrefixBytes" ).orDefault (25 );
8158+ state int minValueSize = params.getInt (" minValueSize" ).orDefault (100 );
8159+ state int maxValueSize = params.getInt (" maxValueSize" ).orDefault (500 );
8160+ state int minConsecutiveRun = params.getInt (" minConsecutiveRun" ).orDefault (1 );
8161+ state int maxConsecutiveRun = params.getInt (" maxConsecutiveRun" ).orDefault (100 );
8162+ state char firstKeyChar = params.get (" firstKeyChar" ).orDefault (" a" )[0 ];
8163+ state char lastKeyChar = params.get (" lastKeyChar" ).orDefault (" m" )[0 ];
81518164 state Version remapCleanupWindow =
8152- params.getIntParam (" remapCleanupWindow" ).orDefault (SERVER_KNOBS->REDWOOD_REMAP_CLEANUP_WINDOW );
8153- state bool openExisting = params.getIntParam (" openExisting" ).orDefault (0 );
8154- state bool insertRecords = !openExisting || params.getIntParam (" insertRecords" ).orDefault (0 );
8155- state int concurrentSeeks = params.getIntParam (" concurrentSeeks" ).orDefault (64 );
8156- state int concurrentScans = params.getIntParam (" concurrentScans" ).orDefault (64 );
8157- state int seeks = params.getIntParam (" seeks" ).orDefault (1000000 );
8158- state int scans = params.getIntParam (" scans" ).orDefault (20000 );
8165+ params.getInt (" remapCleanupWindow" ).orDefault (SERVER_KNOBS->REDWOOD_REMAP_CLEANUP_WINDOW );
8166+ state bool openExisting = params.getInt (" openExisting" ).orDefault (0 );
8167+ state bool insertRecords = !openExisting || params.getInt (" insertRecords" ).orDefault (0 );
8168+ state int concurrentSeeks = params.getInt (" concurrentSeeks" ).orDefault (64 );
8169+ state int concurrentScans = params.getInt (" concurrentScans" ).orDefault (64 );
8170+ state int seeks = params.getInt (" seeks" ).orDefault (1000000 );
8171+ state int scans = params.getInt (" scans" ).orDefault (20000 );
81598172
81608173 printf (" pageSize: %d\n " , pageSize);
81618174 printf (" pageCacheBytes: %" PRId64 " \n " , pageCacheBytes);
@@ -8648,10 +8661,10 @@ ACTOR Future<Void> doPrefixInsertComparison(int suffixSize,
86488661}
86498662
86508663TEST_CASE (" :/redwood/performance/prefixSizeComparison" ) {
8651- state int suffixSize = 12 ;
8652- state int valueSize = 100 ;
8653- state int recordCountTarget = 100e6 ;
8654- state int usePrefixesInOrder = false ;
8664+ state int suffixSize = params. getInt ( " suffixSize " ). orDefault ( 12 ) ;
8665+ state int valueSize = params. getInt ( " valueSize " ). orDefault ( 100 ) ;
8666+ state int recordCountTarget = params. getInt ( " recordCountTarget " ). orDefault ( 100e6 ) ;
8667+ state bool usePrefixesInOrder = params. getInt ( " usePrefixesInOrder " ). orDefault ( 0 ) ;
86558668
86568669 wait (doPrefixInsertComparison (
86578670 suffixSize, valueSize, recordCountTarget, usePrefixesInOrder, KVSource ({ { 10 , 100000 } })));
@@ -8669,9 +8682,9 @@ TEST_CASE(":/redwood/performance/prefixSizeComparison") {
86698682}
86708683
86718684TEST_CASE (" :/redwood/performance/sequentialInsert" ) {
8672- state int prefixLen = 30 ;
8673- state int valueSize = 100 ;
8674- state int recordCountTarget = 100e6 ;
8685+ state int prefixLen = params. getInt ( " prefixLen " ). orDefault ( 30 ) ;
8686+ state int valueSize = params. getInt ( " valueSize " ). orDefault ( 100 ) ;
8687+ state int recordCountTarget = params. getInt ( " recordCountTarget " ). orDefault ( 100e6 ) ;
86758688
86768689 deleteFile (" test.redwood" );
86778690 wait (delay (5 ));
0 commit comments