private KernelStatement getKernelStatement( KernelTransactionImplementation transaction, StorageReader storageReader ) { return new KernelStatement( transaction, null, storageReader, LockTracer.NONE, mock( StatementOperationParts.class ), new ClockContext(), EmptyVersionContextSupplier.EMPTY ); } }
@Test( expected = NotInTransactionException.class ) public void assertStatementIsNotOpenWhileAcquireIsNotInvoked() { KernelTransactionImplementation transaction = mock( KernelTransactionImplementation.class ); TxStateHolder txStateHolder = mock( TxStateHolder.class ); StorageReader storeStatement = mock( StorageReader.class ); KernelStatement statement = new KernelStatement( transaction, txStateHolder, storeStatement, LockTracer.NONE, mock( StatementOperationParts.class ), new ClockContext(), EmptyVersionContextSupplier.EMPTY ); statement.assertOpen(); }
@Test public void shouldReleaseStorageReaderWhenForceClosed() { // given StorageReader storeStatement = mock( StorageReader.class ); KernelStatement statement = new KernelStatement( mock( KernelTransactionImplementation.class ), null, storeStatement, LockTracer.NONE, mock( StatementOperationParts.class ), new ClockContext(), EmptyVersionContextSupplier.EMPTY ); statement.acquire(); // when try { statement.forceClose(); } catch ( KernelStatement.StatementNotClosedException ignored ) { // ignore } // then verify( storeStatement ).release(); }
@Test public void reportQueryWaitingTimeToTransactionStatisticWhenFinishQueryExecution() { KernelTransactionImplementation transaction = mock( KernelTransactionImplementation.class ); TxStateHolder txStateHolder = mock( TxStateHolder.class ); StorageReader storeStatement = mock( StorageReader.class ); KernelTransactionImplementation.Statistics statistics = new KernelTransactionImplementation.Statistics( transaction, new AtomicReference<>( CpuClock.NOT_AVAILABLE ), new AtomicReference<>( HeapAllocation.NOT_AVAILABLE ) ); when( transaction.getStatistics() ).thenReturn( statistics ); when( transaction.executingQueries() ).thenReturn( ExecutingQueryList.EMPTY ); KernelStatement statement = new KernelStatement( transaction, txStateHolder, storeStatement, LockTracer.NONE, mock( StatementOperationParts.class ), new ClockContext(), EmptyVersionContextSupplier.EMPTY ); statement.acquire(); ExecutingQuery query = getQueryWithWaitingTime(); ExecutingQuery query2 = getQueryWithWaitingTime(); ExecutingQuery query3 = getQueryWithWaitingTime(); statement.stopQueryExecution( query ); statement.stopQueryExecution( query2 ); statement.stopQueryExecution( query3 ); assertEquals( 3, statistics.getWaitingTimeNanos( 1 ) ); }
@SuppressWarnings( "deprecation" ) @Before public void before() { db = (GraphDatabaseAPI) createGraphDatabase(); DependencyResolver resolver = db.getDependencyResolver(); this.storageReader = resolver.resolveDependency( StorageEngine.class ).newReader(); this.state = new KernelStatement( null, null, storageReader, LockTracer.NONE, null, new ClockContext(), EmptyVersionContextSupplier.EMPTY ); }