use of org.neo4j.storageengine.api.StorageEngine in project neo4j by neo4j.
the class KernelTransactionFactory method kernelTransactionWithInternals.
static Instances kernelTransactionWithInternals(SecurityContext securityContext) {
TransactionHeaderInformation headerInformation = new TransactionHeaderInformation(-1, -1, new byte[0]);
TransactionHeaderInformationFactory headerInformationFactory = mock(TransactionHeaderInformationFactory.class);
when(headerInformationFactory.create()).thenReturn(headerInformation);
StorageEngine storageEngine = mock(StorageEngine.class);
StoreReadLayer storeReadLayer = mock(StoreReadLayer.class);
StorageStatement storageStatement = mock(StorageStatement.class);
when(storeReadLayer.newStatement()).thenReturn(storageStatement);
when(storageEngine.storeReadLayer()).thenReturn(storeReadLayer);
KernelTransactionImplementation transaction = new KernelTransactionImplementation(mock(StatementOperationContainer.class), mock(SchemaWriteGuard.class), new TransactionHooks(), mock(ConstraintIndexCreator.class), new Procedures(), headerInformationFactory, mock(TransactionRepresentationCommitProcess.class), mock(TransactionMonitor.class), mock(Supplier.class), mock(Pool.class), Clocks.systemClock(), NULL, LockTracer.NONE, PageCursorTracerSupplier.NULL, storageEngine, new CanWrite());
StatementLocks statementLocks = new SimpleStatementLocks(new NoOpClient());
transaction.initialize(0, 0, statementLocks, KernelTransaction.Type.implicit, securityContext, 0L);
return new Instances(transaction, storageEngine, storeReadLayer, storageStatement);
}
use of org.neo4j.storageengine.api.StorageEngine in project neo4j by neo4j.
the class KernelTransactionsTest method newKernelTransactions.
private static KernelTransactions newKernelTransactions(boolean testKernelTransactions, TransactionCommitProcess commitProcess, StorageStatement firstStoreStatements, StorageStatement... otherStorageStatements) throws Throwable {
Locks locks = mock(Locks.class);
when(locks.newClient()).thenReturn(mock(Locks.Client.class));
StoreReadLayer readLayer = mock(StoreReadLayer.class);
when(readLayer.newStatement()).thenReturn(firstStoreStatements, otherStorageStatements);
StorageEngine storageEngine = mock(StorageEngine.class);
when(storageEngine.storeReadLayer()).thenReturn(readLayer);
doAnswer(invocation -> {
invocation.getArgumentAt(0, Collection.class).add(mock(StorageCommand.class));
return null;
}).when(storageEngine).createCommands(anyCollection(), any(ReadableTransactionState.class), any(StorageStatement.class), any(ResourceLocker.class), anyLong());
return newKernelTransactions(locks, storageEngine, commitProcess, testKernelTransactions);
}
use of org.neo4j.storageengine.api.StorageEngine in project neo4j by neo4j.
the class TransactionRepresentationCommitProcessTest method shouldSuccessfullyCommitTransactionWithNoCommands.
@Test
public void shouldSuccessfullyCommitTransactionWithNoCommands() throws Exception {
// GIVEN
long txId = 11;
long commitTimestamp = System.currentTimeMillis();
TransactionIdStore transactionIdStore = mock(TransactionIdStore.class);
TransactionAppender appender = new TestableTransactionAppender(transactionIdStore);
when(transactionIdStore.nextCommittingTransactionId()).thenReturn(txId);
StorageEngine storageEngine = mock(StorageEngine.class);
TransactionCommitProcess commitProcess = new TransactionRepresentationCommitProcess(appender, storageEngine);
PhysicalTransactionRepresentation noCommandTx = new PhysicalTransactionRepresentation(Collections.emptyList());
noCommandTx.setHeader(new byte[0], -1, -1, -1, -1, -1, -1);
// WHEN
commitProcess.commit(new TransactionToApply(noCommandTx), commitEvent, INTERNAL);
verify(transactionIdStore).transactionCommitted(txId, FakeCommitment.CHECKSUM, FakeCommitment.TIMESTAMP);
}
use of org.neo4j.storageengine.api.StorageEngine in project neo4j by neo4j.
the class TransactionRepresentationCommitProcessTest method shouldCloseTransactionRegardlessOfWhetherOrNotItAppliedCorrectly.
@Test
public void shouldCloseTransactionRegardlessOfWhetherOrNotItAppliedCorrectly() throws Exception {
// GIVEN
TransactionIdStore transactionIdStore = mock(TransactionIdStore.class);
TransactionAppender appender = new TestableTransactionAppender(transactionIdStore);
long txId = 11;
when(transactionIdStore.nextCommittingTransactionId()).thenReturn(txId);
IOException rootCause = new IOException("Mock exception");
StorageEngine storageEngine = mock(StorageEngine.class);
doThrow(new IOException(rootCause)).when(storageEngine).apply(any(TransactionToApply.class), any(TransactionApplicationMode.class));
TransactionCommitProcess commitProcess = new TransactionRepresentationCommitProcess(appender, storageEngine);
TransactionToApply transaction = mockedTransaction();
// WHEN
try {
commitProcess.commit(transaction, commitEvent, INTERNAL);
} catch (TransactionFailureException e) {
assertThat(e.getMessage(), containsString("Could not apply the transaction to the store"));
assertTrue(contains(e, rootCause.getMessage(), rootCause.getClass()));
}
// THEN
// we can't verify transactionCommitted since that's part of the TransactionAppender, which we have mocked
verify(transactionIdStore, times(1)).transactionClosed(eq(txId), anyLong(), anyLong());
}
use of org.neo4j.storageengine.api.StorageEngine in project neo4j by neo4j.
the class OperationsTest method setUp.
@BeforeEach
void setUp() throws Exception {
TxState realTxState = new TxState();
txState = Mockito.spy(realTxState);
when(transaction.getReasonIfTerminated()).thenReturn(Optional.empty());
when(transaction.lockClient()).thenReturn(locks);
when(transaction.dataWrite()).thenReturn(write);
when(transaction.isOpen()).thenReturn(true);
when(transaction.lockTracer()).thenReturn(LockTracer.NONE);
when(transaction.txState()).thenReturn(txState);
when(transaction.securityContext()).thenReturn(SecurityContext.authDisabled(AccessMode.Static.FULL, EMBEDDED_CONNECTION, DB_NAME));
logHelper = new SecurityLogHelper(getFormat());
securityLog = new CommunitySecurityLog((LogExtended) logHelper.getLogProvider().getLog(this.getClass()));
when(transaction.securityAuthorizationHandler()).thenReturn(new SecurityAuthorizationHandler(securityLog));
DefaultPooledCursors cursors = mock(DefaultPooledCursors.class);
nodeCursor = mock(FullAccessNodeCursor.class);
propertyCursor = mock(FullAccessPropertyCursor.class);
relationshipCursor = mock(DefaultRelationshipScanCursor.class);
when(cursors.allocateFullAccessNodeCursor(NULL)).thenReturn(nodeCursor);
when(cursors.allocateFullAccessPropertyCursor(NULL, INSTANCE)).thenReturn(propertyCursor);
when(cursors.allocateRelationshipScanCursor(NULL)).thenReturn(relationshipCursor);
StorageEngine engine = mock(StorageEngine.class);
storageReader = mock(StorageReader.class);
storageReaderSnapshot = mock(StorageSchemaReader.class);
when(storageReader.nodeExists(anyLong(), any())).thenReturn(true);
when(storageReader.constraintsGetForLabel(anyInt())).thenReturn(Collections.emptyIterator());
when(storageReader.constraintsGetAll()).thenReturn(Collections.emptyIterator());
when(storageReader.schemaSnapshot()).thenReturn(storageReaderSnapshot);
when(engine.newReader()).thenReturn(storageReader);
indexingService = mock(IndexingService.class);
Dependencies dependencies = new Dependencies();
var facade = mock(GraphDatabaseFacade.class);
dependencies.satisfyDependency(facade);
allStoreHolder = new AllStoreHolder(storageReader, transaction, cursors, mock(GlobalProcedures.class), mock(SchemaState.class), indexingService, mock(IndexStatisticsStore.class), dependencies, Config.defaults(), INSTANCE);
constraintIndexCreator = mock(ConstraintIndexCreator.class);
tokenHolders = mockedTokenHolders();
creationContext = mock(CommandCreationContext.class);
IndexingProvidersService indexingProvidersService = mock(IndexingProvidersService.class);
when(indexingProvidersService.indexProviderByName("native-btree-1.0")).thenReturn(GenericNativeIndexProvider.DESCRIPTOR);
when(indexingProvidersService.getDefaultProvider()).thenReturn(GenericNativeIndexProvider.DESCRIPTOR);
when(indexingProvidersService.indexProviderByName("fulltext-1.0")).thenReturn(FulltextIndexProviderFactory.DESCRIPTOR);
when(indexingProvidersService.getFulltextProvider()).thenReturn(FulltextIndexProviderFactory.DESCRIPTOR);
when(indexingProvidersService.indexProviderByName("provider-1.0")).thenReturn(new IndexProviderDescriptor("provider", "1.0"));
when(indexingProvidersService.completeConfiguration(any())).thenAnswer(inv -> inv.getArgument(0));
operations = new Operations(allStoreHolder, storageReader, mock(IndexTxStateUpdater.class), creationContext, transaction, new KernelToken(storageReader, creationContext, transaction, tokenHolders), cursors, constraintIndexCreator, mock(ConstraintSemantics.class), indexingProvidersService, Config.defaults(), INSTANCE, () -> KernelVersion.LATEST, mock(DbmsRuntimeRepository.class));
operations.initialize(NULL);
this.order = inOrder(locks, txState, storageReader, storageReaderSnapshot, creationContext);
}
Aggregations