use of org.neo4j.kernel.impl.transaction.CommittedTransactionRepresentation in project neo4j by neo4j.
the class ReversedMultiFileTransactionCursorTest method shouldReadMultipleVersionsReversed.
@Test
void shouldReadMultipleVersionsReversed() throws Exception {
// GIVEN
TransactionCursor cursor = new ReversedMultiFileTransactionCursor(logFile, log(5, 3, 8), 2, start());
// WHEN
CommittedTransactionRepresentation[] reversed = exhaust(cursor);
// THEN
assertTransactionRange(reversed, 5 + 3 + 8, 0);
}
use of org.neo4j.kernel.impl.transaction.CommittedTransactionRepresentation in project neo4j by neo4j.
the class ReversedMultiFileTransactionCursorTest method assertTransactionRange.
private static void assertTransactionRange(CommittedTransactionRepresentation[] reversed, long highTxId, long lowTxId) {
long expectedTxId = highTxId;
for (CommittedTransactionRepresentation transaction : reversed) {
expectedTxId--;
assertEquals(expectedTxId, transaction.getCommitEntry().getTxId());
}
assertEquals(lowTxId, expectedTxId);
}
use of org.neo4j.kernel.impl.transaction.CommittedTransactionRepresentation in project neo4j by neo4j.
the class ReversedMultiFileTransactionCursorTest method transactions.
private static CommittedTransactionRepresentation[] transactions(int count, AtomicLong txId) {
CommittedTransactionRepresentation[] result = new CommittedTransactionRepresentation[count];
for (int i = 0; i < count; i++) {
CommittedTransactionRepresentation transaction = result[i] = mock(CommittedTransactionRepresentation.class);
LogEntryCommit commitEntry = mock(LogEntryCommit.class);
when(commitEntry.getTxId()).thenReturn(txId.getAndIncrement());
when(transaction.getCommitEntry()).thenReturn(commitEntry);
}
return result;
}
use of org.neo4j.kernel.impl.transaction.CommittedTransactionRepresentation in project neo4j by neo4j.
the class BatchingTransactionAppenderTest method shouldAppendCommittedTransactions.
@Test
void shouldAppendCommittedTransactions() throws Exception {
// GIVEN
when(logFile.getTransactionLogWriter()).thenReturn(new TransactionLogWriter(channel, new DbmsLogEntryWriterFactory(() -> LATEST)));
long nextTxId = 15;
when(transactionIdStore.nextCommittingTransactionId()).thenReturn(nextTxId);
when(transactionIdStore.getLastCommittedTransaction()).thenReturn(new TransactionId(nextTxId, BASE_TX_CHECKSUM, BASE_TX_COMMIT_TIMESTAMP));
TransactionAppender appender = life.add(new BatchingTransactionAppender(logFiles, NO_ROTATION, positionCache, transactionIdStore, databaseHealth));
// WHEN
final byte[] additionalHeader = new byte[] { 1, 2, 5 };
final long timeStarted = 12345;
long latestCommittedTxWhenStarted = nextTxId - 5;
long timeCommitted = timeStarted + 10;
PhysicalTransactionRepresentation transactionRepresentation = new PhysicalTransactionRepresentation(singleTestCommand());
transactionRepresentation.setHeader(additionalHeader, timeStarted, latestCommittedTxWhenStarted, timeCommitted, -1, ANONYMOUS);
LogEntryStart start = new LogEntryStart(0L, latestCommittedTxWhenStarted, 0, null, LogPosition.UNSPECIFIED);
LogEntryCommit commit = new LogEntryCommit(nextTxId, 0L, BASE_TX_CHECKSUM);
CommittedTransactionRepresentation transaction = new CommittedTransactionRepresentation(start, transactionRepresentation, commit);
appender.append(new TransactionToApply(transactionRepresentation, transaction.getCommitEntry().getTxId(), NULL), logAppendEvent);
// THEN
LogEntryReader logEntryReader = logEntryReader();
try (PhysicalTransactionCursor reader = new PhysicalTransactionCursor(channel, logEntryReader)) {
reader.next();
TransactionRepresentation result = reader.get().getTransactionRepresentation();
assertArrayEquals(additionalHeader, result.additionalHeader());
assertEquals(timeStarted, result.getTimeStarted());
assertEquals(timeCommitted, result.getTimeCommitted());
assertEquals(latestCommittedTxWhenStarted, result.getLatestCommittedTxWhenStarted());
}
}
use of org.neo4j.kernel.impl.transaction.CommittedTransactionRepresentation in project neo4j by neo4j.
the class PhysicalLogicalTransactionStoreTest method verifyTransaction.
private static void verifyTransaction(TransactionMetadataCache positionCache, byte[] additionalHeader, long timeStarted, long latestCommittedTxWhenStarted, long timeCommitted, LogicalTransactionStore store) throws IOException {
try (TransactionCursor cursor = store.getTransactions(TransactionIdStore.BASE_TX_ID + 1)) {
boolean hasNext = cursor.next();
assertTrue(hasNext);
CommittedTransactionRepresentation tx = cursor.get();
TransactionRepresentation transaction = tx.getTransactionRepresentation();
assertArrayEquals(additionalHeader, transaction.additionalHeader());
assertEquals(timeStarted, transaction.getTimeStarted());
assertEquals(timeCommitted, transaction.getTimeCommitted());
assertEquals(latestCommittedTxWhenStarted, transaction.getLatestCommittedTxWhenStarted());
}
positionCache.clear();
}
Aggregations