@Test
public void pruneAndArchiveLastLog() throws IOException
{
life.start();
generateTransactionLogFiles( logFiles );
long highestLogVersion = logFiles.getHighestLogVersion();
File highestLogFile = logFiles.getHighestLogFile();
long fileSizeBeforePrune = highestLogFile.length();
int bytesToPrune = 5;
long byteOffset = fileSizeBeforePrune - bytesToPrune;
LogPosition prunePosition = new LogPosition( highestLogVersion, byteOffset );
logPruner.truncate( prunePosition );
assertEquals( TOTAL_NUMBER_OF_LOG_FILES, logFiles.logFiles().length );
assertEquals( byteOffset, highestLogFile.length() );
File corruptedLogsDirectory = new File( databaseDirectory, CorruptedLogsTruncator.CORRUPTED_TX_LOGS_BASE_NAME );
assertTrue( corruptedLogsDirectory.exists() );
File[] files = corruptedLogsDirectory.listFiles();
assertEquals( 1, files.length );
File corruptedLogsArchive = files[0];
checkArchiveName( highestLogVersion, byteOffset, corruptedLogsArchive );
try ( ZipFile zipFile = new ZipFile( corruptedLogsArchive ) )
{
assertEquals( 1, zipFile.size() );
checkEntryNameAndSize( zipFile, highestLogFile.getName(), bytesToPrune );
}
}