use of org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel in project neo4j by neo4j.
the class VersionAwareLogEntryReaderTest method shouldReadACommandLogEntry.
@Test
public void shouldReadACommandLogEntry() throws IOException {
// given
LogEntryVersion version = LogEntryVersion.CURRENT;
Command.NodeCommand nodeCommand = new Command.NodeCommand(new NodeRecord(11), new NodeRecord(11));
final LogEntryCommand command = new LogEntryCommand(version, nodeCommand);
final InMemoryClosableChannel channel = new InMemoryClosableChannel();
channel.put(version.byteCode());
channel.put(LogEntryByteCodes.COMMAND);
nodeCommand.serialize(channel);
// when
final LogEntry logEntry = logEntryReader.readLogEntry(channel);
// then
assertEquals(command, logEntry);
}
use of org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel in project neo4j by neo4j.
the class VersionAwareLogEntryReaderTest method shouldReturnNullWhenThereIsNoCommand.
@Test
public void shouldReturnNullWhenThereIsNoCommand() throws IOException {
// given
LogEntryVersion version = LogEntryVersion.CURRENT;
final InMemoryClosableChannel channel = new InMemoryClosableChannel();
channel.put(version.byteCode());
channel.put(LogEntryByteCodes.COMMAND);
channel.put(NeoCommandType.NONE);
// when
final LogEntry logEntry = logEntryReader.readLogEntry(channel);
// then
assertNull(logEntry);
}
use of org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel in project neo4j by neo4j.
the class VersionAwareLogEntryReaderTest method shouldParseStreamOfZerosAsEmptyLogEntries.
@Test
public void shouldParseStreamOfZerosAsEmptyLogEntries() throws Exception {
// GIVEN
LogEntryReader<ReadableClosablePositionAwareChannel> reader = new VersionAwareLogEntryReader<>();
InMemoryClosableChannel channel = new InMemoryClosableChannel();
int count = 100;
channel.put(new byte[count], count);
// WHEN/THEN
for (int i = 0; i < count; i++) {
LogEntry entry = reader.readLogEntry(channel);
assertNull(entry);
assertEquals(i + 1, channel.readerPosition());
}
}
use of org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel in project neo4j by neo4j.
the class VersionAwareLogEntryReaderTest method shouldParseOldStartEntry.
@Test
public void shouldParseOldStartEntry() throws IOException {
// given
LogEntryVersion version = LogEntryVersion.V2_1;
final InMemoryClosableChannel channel = new InMemoryClosableChannel();
final LogEntryStart start = new LogEntryStart(1, 2, 3, 4, new byte[] {}, new LogPosition(0, 37));
channel.put(version.byteCode());
channel.put(LogEntryByteCodes.TX_START);
// ignored data
// globalId length
channel.put((byte) 1);
// branchId length
channel.put((byte) 0);
// globalId
channel.put(new byte[] { 7 }, 1);
// branchId
channel.put(new byte[] {}, 0);
// identifier
channel.putInt(123);
// formatId
channel.putInt(456);
// actually used data
channel.putInt(start.getMasterId());
channel.putInt(start.getLocalId());
channel.putLong(start.getTimeWritten());
channel.putLong(start.getLastCommittedTxWhenTransactionStarted());
// when
final LogEntry logEntry = logEntryReader.readLogEntry(channel);
// then
assertTrue(logEntry instanceof IdentifiableLogEntry);
assertEquals(start, ((IdentifiableLogEntry) logEntry).getEntry());
}
use of org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel in project neo4j by neo4j.
the class VersionAwareLogEntryReaderTest method shouldReturnNullWhenThereIsNoCommandOldVersion.
@Test
public void shouldReturnNullWhenThereIsNoCommandOldVersion() throws IOException {
// given
LogEntryVersion version = LogEntryVersion.V2_1;
final InMemoryClosableChannel channel = new InMemoryClosableChannel();
channel.put(version.byteCode());
channel.put(LogEntryByteCodes.COMMAND);
channel.put(NeoCommandType.NONE);
// when
final LogEntry logEntry = logEntryReader.readLogEntry(channel);
// then
assertNull(logEntry);
}
Aggregations