protected void addWithSize(final int size, final long... arguments) throws Exception { for (long element : arguments) { byte[] record = generateRecord(size); beforeJournalOperation(); journal.appendAddRecord(element, (byte) 0, record, sync); records.add(new RecordInfo(element, (byte) 0, record, false, (short) 0)); } journal.debugWait(); }
@Test public void testCompactFirstFileReclaimed() throws Exception { setup(2, 60 * 1024, false); final byte recordType = (byte) 0; journal = new JournalImpl(fileSize, minFiles, minFiles, 0, 0, fileFactory, filePrefix, fileExtension, maxAIO); journal.start(); journal.loadInternalOnly(); journal.appendAddRecord(1, recordType, "test".getBytes(), true); journal.forceMoveNextFile(); journal.appendUpdateRecord(1, recordType, "update".getBytes(), true); journal.appendDeleteRecord(1, true); journal.appendAddRecord(2, recordType, "finalRecord".getBytes(), true); for (int i = 10; i < 100; i++) { journal.appendAddRecord(i, recordType, ("tst" + i).getBytes(), true); journal.forceMoveNextFile(); journal.appendUpdateRecord(i, recordType, ("uptst" + i).getBytes(), true); journal.appendDeleteRecord(i, true); } journal.testCompact(); journal.stop(); List<RecordInfo> records1 = new ArrayList<>(); List<PreparedTransactionInfo> preparedRecords = new ArrayList<>(); journal.start(); journal.load(records1, preparedRecords, null); assertEquals(1, records1.size()); }
journal.appendAddRecord(2, (byte) 0, record, sync);
@Test public void testRestartJournal() throws Exception { setup(10, 10 * 1024, true); createJournal(); startJournal(); load(); stopJournal(); startJournal(); load(); byte[] record = new byte[1000]; for (int i = 0; i < record.length; i++) { record[i] = (byte) 'a'; } // Appending records after restart should be valid (not throwing any // exceptions) for (int i = 0; i < 100; i++) { journal.appendAddRecord(1, (byte) 1, new SimpleEncoding(2, (byte) 'a'), false); } stopJournal(); }
@Test public void testMultipleAddUpdateDeleteDifferentRecordLengths() throws Exception { setup(10, 20480, true); createJournal(); startJournal(); load(); for (int i = 0; i < 100; i++) { byte[] record = generateRecord(RandomUtil.randomInterval(1500, 10000)); journal.appendAddRecord(i, (byte) 0, record, false); records.add(new RecordInfo(i, (byte) 0, record, false, (short) 0)); } for (int i = 0; i < 100; i++) { byte[] record = generateRecord(10 + RandomUtil.randomInterval(1500, 10000)); journal.appendUpdateRecord(i, (byte) 0, record, false); records.add(new RecordInfo(i, (byte) 0, record, true, (short) 0)); } for (int i = 0; i < 100; i++) { journal.appendDeleteRecord(i, false); removeRecordsForID(i); } stopJournal(); createJournal(); startJournal(); loadAndCheck(); stopJournal(); }