@@ -43,6 +43,8 @@ const uint64_t deviceMetadataSize = 1024 * 1024 * 1024;
4343const uint64_t fileSize = 10 * 1024 * 1024 ;
4444const bool truncateFile = false ;
4545const uint32_t deviceMaxWriteSize = 4 * 1024 * 1024 ;
46+ const navy::IoEngine ioEngine = navy::IoEngine::IoUring;
47+ const unsigned int qDepth = 64 ;
4648
4749// BlockCache settings
4850const uint32_t blockCacheRegionSize = 16 * 1024 * 1024 ;
@@ -87,6 +89,7 @@ void setDeviceTestSettings(NavyConfig& config) {
8789 config.setRaidFiles (raidPaths, fileSize, truncateFile);
8890 config.setDeviceMetadataSize (deviceMetadataSize);
8991 config.setDeviceMaxWriteSize (deviceMaxWriteSize);
92+ config.enableAsyncIo (qDepth, ioEngine == navy::IoEngine::IoUring);
9093}
9194
9295void setBlockCacheTestSettings (NavyConfig& config) {
@@ -183,9 +186,8 @@ TEST(NavyConfigTest, Serialization) {
183186 expectedConfigMap[" navyConfig::fileSize" ] = " 10485760" ;
184187 expectedConfigMap[" navyConfig::truncateFile" ] = " false" ;
185188 expectedConfigMap[" navyConfig::deviceMaxWriteSize" ] = " 4194304" ;
186- expectedConfigMap[" navyConfig::numIoThreads" ] = " 0" ;
187- expectedConfigMap[" navyConfig::QDepthPerThread" ] = " 64" ;
188- expectedConfigMap[" navyConfig::enableIoUring" ] = " true" ;
189+ expectedConfigMap[" navyConfig::ioEngine" ] = " io_uring" ;
190+ expectedConfigMap[" navyConfig::QDepth" ] = " 64" ;
189191
190192 expectedConfigMap[" navyConfig::blockCacheLru" ] = " false" ;
191193 expectedConfigMap[" navyConfig::blockCacheRegionSize" ] = " 16777216" ;
@@ -245,30 +247,47 @@ TEST(NavyConfigTest, AdmissionPolicy) {
245247}
246248
247249TEST (NavyConfigTest, Device) {
248- NavyConfig config1{};
249- config1.setBlockSize (blockSize);
250- config1.setDeviceMetadataSize (deviceMetadataSize);
251- EXPECT_EQ (config1.getBlockSize (), blockSize);
252- EXPECT_EQ (config1.getDeviceMetadataSize (), deviceMetadataSize);
253-
254- // set simple file
255- config1.setSimpleFile (fileName, fileSize, truncateFile);
256- EXPECT_EQ (config1.getFileName (), fileName);
257- EXPECT_EQ (config1.getFileSize (), fileSize);
258- EXPECT_EQ (config1.getTruncateFile (), truncateFile);
259- EXPECT_THROW (config1.setRaidFiles (raidPaths, fileSize, truncateFile),
260- std::invalid_argument);
261-
262- // set RAID files
263- NavyConfig config2{};
264- EXPECT_THROW (config2.setRaidFiles (raidPathsInvalid, fileSize, truncateFile),
265- std::invalid_argument);
266- config2.setRaidFiles (raidPaths, fileSize, truncateFile);
267- EXPECT_EQ (config2.getRaidPaths (), raidPaths);
268- EXPECT_EQ (config2.getFileSize (), fileSize);
269- EXPECT_EQ (config1.getTruncateFile (), truncateFile);
270- EXPECT_THROW (config2.setSimpleFile (fileName, fileSize, truncateFile),
271- std::invalid_argument);
250+ {
251+ NavyConfig config{};
252+ config.setBlockSize (blockSize);
253+ config.setDeviceMetadataSize (deviceMetadataSize);
254+ EXPECT_EQ (config.getBlockSize (), blockSize);
255+ EXPECT_EQ (config.getDeviceMetadataSize (), deviceMetadataSize);
256+
257+ // set simple file
258+ config.setSimpleFile (fileName, fileSize, truncateFile);
259+ EXPECT_EQ (config.getFileName (), fileName);
260+ EXPECT_EQ (config.getFileSize (), fileSize);
261+ EXPECT_EQ (config.getTruncateFile (), truncateFile);
262+ EXPECT_THROW (config.setRaidFiles (raidPaths, fileSize, truncateFile),
263+ std::invalid_argument);
264+ }
265+
266+ {
267+ // set RAID files
268+ NavyConfig config{};
269+ EXPECT_THROW (config.setRaidFiles (raidPathsInvalid, fileSize, truncateFile),
270+ std::invalid_argument);
271+ config.setRaidFiles (raidPaths, fileSize, truncateFile);
272+ EXPECT_EQ (config.getRaidPaths (), raidPaths);
273+ EXPECT_EQ (config.getFileSize (), fileSize);
274+ EXPECT_EQ (config.getTruncateFile (), truncateFile);
275+ EXPECT_THROW (config.setSimpleFile (fileName, fileSize, truncateFile),
276+ std::invalid_argument);
277+ }
278+ {
279+ // set io engines
280+ NavyConfig config{};
281+ EXPECT_EQ (config.getIoEngine (), navy::IoEngine::Sync);
282+ EXPECT_EQ (config.getQDepth (), 0 );
283+ EXPECT_THROW (config.enableAsyncIo (0 , false ), std::invalid_argument);
284+ EXPECT_THROW (config.enableAsyncIo (0 , true ), std::invalid_argument);
285+ config.enableAsyncIo (1 , false );
286+ EXPECT_EQ (config.getIoEngine (), navy::IoEngine::LibAio);
287+ config.enableAsyncIo (64 , true );
288+ EXPECT_EQ (config.getIoEngine (), navy::IoEngine::IoUring);
289+ EXPECT_EQ (config.getQDepth (), 64 );
290+ }
272291}
273292
274293TEST (NavyConfigTest, BlockCache) {
0 commit comments