use of org.neo4j.kernel.impl.transaction.log.ReadableLogChannel in project neo4j by neo4j.
the class LogTestUtils method filterNeostoreLogicalLog.
public static File filterNeostoreLogicalLog(FileSystemAbstraction fileSystem, File file, final LogHook<LogEntry> filter) throws IOException {
filter.file(file);
File tempFile = new File(file.getAbsolutePath() + ".tmp");
fileSystem.deleteFile(tempFile);
try (StoreChannel in = fileSystem.open(file, "r");
StoreChannel out = fileSystem.open(tempFile, "rw")) {
LogHeader logHeader = transferLogicalLogHeader(in, out, ByteBuffer.allocate(LOG_HEADER_SIZE));
PhysicalLogVersionedStoreChannel outChannel = new PhysicalLogVersionedStoreChannel(out, logHeader.logVersion, logHeader.logFormatVersion);
PhysicalLogVersionedStoreChannel inChannel = new PhysicalLogVersionedStoreChannel(in, logHeader.logVersion, logHeader.logFormatVersion);
ReadableLogChannel inBuffer = new ReadAheadLogChannel(inChannel, LogVersionBridge.NO_MORE_CHANNELS);
LogEntryReader<ReadableLogChannel> entryReader = new VersionAwareLogEntryReader<>();
LogEntry entry;
while ((entry = entryReader.readLogEntry(inBuffer)) != null) {
if (filter.test(entry)) {
// TODO allright, write to outBuffer
}
}
}
return tempFile;
}
use of org.neo4j.kernel.impl.transaction.log.ReadableLogChannel in project neo4j by neo4j.
the class LegacyLogEntryReaderTest method shouldReadTheEntries.
@Test
public void shouldReadTheEntries() throws IOException {
// given
final LogEntry start = new LogEntryStart(0, 1, 2, 3, EMPTY_ADDITIONAL_ARRAY, UNSPECIFIED);
NodeRecord record = new NodeRecord(42);
final LogEntry command = new LogEntryCommand(new Command.NodeCommand(record, record));
final LogEntry commit = new OnePhaseCommit(42, 43);
final LogEntryReader<ReadableLogChannel> logEntryReader = mock(LogEntryReader.class);
when(logEntryReader.readLogEntry(any(ReadableLogChannel.class))).thenReturn(new IdentifiableLogEntry(start, 1), new IdentifiableLogEntry(command, 1), new IdentifiableLogEntry(commit, 1), null);
final LegacyLogEntryReader reader = new LegacyLogEntryReader(fs, from -> logEntryReader);
// when
final IOCursor<LogEntry> cursor = reader.openReadableChannel(input).other();
// then
assertTrue(cursor.next());
assertEquals(start, cursor.get());
assertTrue(cursor.next());
assertEquals(command, cursor.get());
assertTrue(cursor.next());
assertEquals(commit, cursor.get());
assertFalse(cursor.next());
cursor.close();
}
Aggregations