Exemple #1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldRollbackTransactionIfExecutionErrorOccurs() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldRollbackTransactionIfExecutionErrorOccurs()
        {
            // given
            TransitionalPeriodTransactionMessContainer kernel             = MockKernel();
            TransitionalTxManagementKernelTransaction  transactionContext = kernel.NewTransaction(@explicit, AUTH_DISABLED, -1);

            TransactionRegistry registry = mock(typeof(TransactionRegistry));

            QueryExecutionEngine executionEngine      = mock(typeof(QueryExecutionEngine));
            TransactionalContext transactionalContext = PrepareKernelWithQuerySession(kernel);

            when(executionEngine.ExecuteQuery("query", NoParams, transactionalContext)).thenThrow(new System.NullReferenceException());

            when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L);
            TransactionHandle         handle = GetTransactionHandle(kernel, executionEngine, registry);
            ExecutionResultSerializer output = mock(typeof(ExecutionResultSerializer));

            // when
            handle.Execute(statements(new Statement("query", map(), false, (ResultDataContent[])null)), output, mock(typeof(HttpServletRequest)));

            // then
            verify(transactionContext).rollback();
            verify(registry).forget(1337L);

            InOrder outputOrder = inOrder(output);

            outputOrder.verify(output).transactionCommitUri(uriScheme.txCommitUri(1337));
            outputOrder.verify(output).errors(argThat(HasErrors(Org.Neo4j.Kernel.Api.Exceptions.Status_Statement.ExecutionFailed)));
            outputOrder.verify(output).finish();
            verifyNoMoreInteractions(output);
        }
Exemple #2
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldRollbackTransactionAndTellRegistryToForgetItsHandle()
        public virtual void ShouldRollbackTransactionAndTellRegistryToForgetItsHandle()
        {
            // given
            TransitionalPeriodTransactionMessContainer kernel             = MockKernel();
            TransitionalTxManagementKernelTransaction  transactionContext = kernel.NewTransaction(@explicit, AUTH_DISABLED, -1);

            TransactionRegistry registry = mock(typeof(TransactionRegistry));

            when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L);
            GraphDatabaseQueryService queryService = mock(typeof(GraphDatabaseQueryService));
            TransactionHandle         handle       = new TransactionHandle(kernel, mock(typeof(QueryExecutionEngine)), queryService, registry, uriScheme, true, AUTH_DISABLED, anyLong(), NullLogProvider.Instance);
            ExecutionResultSerializer output       = mock(typeof(ExecutionResultSerializer));

            // when
            handle.Rollback(output);

            // then
            InOrder transactionOrder = inOrder(transactionContext, registry);

            transactionOrder.verify(transactionContext).rollback();
            transactionOrder.verify(registry).forget(1337L);

            InOrder outputOrder = inOrder(output);

            outputOrder.verify(output).errors(argThat(HasNoErrors()));
            outputOrder.verify(output).finish();
            verifyNoMoreInteractions(output);
        }
Exemple #3
0
        private TransitionalPeriodTransactionMessContainer MockKernel()
        {
            TransitionalTxManagementKernelTransaction  context = mock(typeof(TransitionalTxManagementKernelTransaction));
            TransitionalPeriodTransactionMessContainer kernel  = mock(typeof(TransitionalPeriodTransactionMessContainer));

            when(kernel.NewTransaction(any(typeof(Transaction_Type)), any(typeof(LoginContext)), anyLong())).thenReturn(context);
            return(kernel);
        }
Exemple #4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void reopenStartDefaultTransactionIfTimeoutNotSpecified()
        public virtual void ReopenStartDefaultTransactionIfTimeoutNotSpecified()
        {
            TransitionalTxManagementKernelTransaction managementKernelTransaction = new TransitionalTxManagementKernelTransaction(_databaseFacade, _type, _loginContext, -1, _contextBridge);

            managementKernelTransaction.ReopenAfterPeriodicCommit();

            verify(_databaseFacade, times(2)).beginTransaction(_type, _loginContext);
        }
Exemple #5
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void reopenStartTransactionWithCustomTimeoutIfSpecified()
        public virtual void ReopenStartTransactionWithCustomTimeoutIfSpecified()
        {
            TransitionalTxManagementKernelTransaction managementKernelTransaction = new TransitionalTxManagementKernelTransaction(_databaseFacade, _type, _loginContext, 10, _contextBridge);

            managementKernelTransaction.ReopenAfterPeriodicCommit();

            verify(_databaseFacade, times(2)).beginTransaction(_type, _loginContext, 10, TimeUnit.MILLISECONDS);
        }
Exemple #6
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldThrowSpecificExceptionOnConcurrentTransactionAccess() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldThrowSpecificExceptionOnConcurrentTransactionAccess()
        {
            // given
            TransactionRegistry registry = new TransactionHandleRegistry(mock(typeof(Clock)), 0, NullLogProvider.Instance);
            TransitionalPeriodTransactionMessContainer kernel           = mock(typeof(TransitionalPeriodTransactionMessContainer));
            GraphDatabaseQueryService queryService                      = mock(typeof(GraphDatabaseQueryService));
            TransitionalTxManagementKernelTransaction kernelTransaction = mock(typeof(TransitionalTxManagementKernelTransaction));

            when(kernel.NewTransaction(any(typeof(KernelTransaction.Type)), any(typeof(LoginContext)), anyLong())).thenReturn(kernelTransaction);
            TransactionFacade actions = new TransactionFacade(kernel, null, queryService, registry, NullLogProvider.Instance);

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final TransactionHandle transactionHandle = actions.newTransactionHandle(new DisgustingUriScheme(), true, org.neo4j.internal.kernel.api.security.LoginContext.AUTH_DISABLED, -1);
            TransactionHandle transactionHandle = actions.NewTransactionHandle(new DisgustingUriScheme(), true, LoginContext.AUTH_DISABLED, -1);

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.neo4j.test.DoubleLatch latch = new org.neo4j.test.DoubleLatch();
            DoubleLatch latch = new DoubleLatch();

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final StatementDeserializer statements = mock(StatementDeserializer.class);
            StatementDeserializer statements = mock(typeof(StatementDeserializer));

//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
            when(statements.HasNext()).thenAnswer(invocation =>
            {
                latch.StartAndWaitForAllToStartAndFinish();
                return(false);
            });

            (new Thread(() =>
            {
                // start and block until finish
                transactionHandle.Execute(statements, mock(typeof(ExecutionResultSerializer)), mock(typeof(HttpServletRequest)));
            })).Start();

            latch.WaitForAllToStart();

            try
            {
                // when
                actions.FindTransactionHandle(DisgustingUriScheme.ParseTxId(transactionHandle.Uri()));
                fail("should have thrown exception");
            }
            catch (InvalidConcurrentTransactionAccess)
            {
                // then we get here
            }
            finally
            {
                latch.Finish();
            }
        }
Exemple #7
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private void ensureActiveTransaction() throws org.neo4j.server.rest.transactional.error.InternalBeginTransactionError
        private void EnsureActiveTransaction()
        {
            if (_context == null)
            {
                try
                {
                    _context = _txManagerFacade.newTransaction(_type, _loginContext, _customTransactionTimeout);
                }
                catch (Exception e)
                {
                    _log.error("Failed to start transaction.", e);
                    throw new InternalBeginTransactionError(e);
                }
            }
            else
            {
                _context.resumeSinceTransactionsAreStillThreadBound();
            }
        }
Exemple #8
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldLogMessageIfCommitErrorOccurs() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldLogMessageIfCommitErrorOccurs()
        {
            // given
            TransitionalPeriodTransactionMessContainer kernel             = MockKernel();
            TransitionalTxManagementKernelTransaction  transactionContext = kernel.NewTransaction(@explicit, AUTH_DISABLED, -1);

            doThrow(new System.NullReferenceException()).when(transactionContext).commit();

            LogProvider logProvider = mock(typeof(LogProvider));
            Log         log         = mock(typeof(Log));

            when(logProvider.GetLog(typeof(TransactionHandle))).thenReturn(log);

            TransactionRegistry registry = mock(typeof(TransactionRegistry));

            QueryExecutionEngine engine = mock(typeof(QueryExecutionEngine));
            Result executionResult      = mock(typeof(Result));
            TransactionalContext transactionalContext = PrepareKernelWithQuerySession(kernel);

            when(engine.ExecuteQuery("query", NoParams, transactionalContext)).thenReturn(executionResult);
            when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L);
            GraphDatabaseQueryService queryService = mock(typeof(GraphDatabaseQueryService));
            TransactionHandle         handle       = new TransactionHandle(kernel, engine, queryService, registry, uriScheme, false, AUTH_DISABLED, anyLong(), logProvider);
            ExecutionResultSerializer output       = mock(typeof(ExecutionResultSerializer));

            // when
            Statement statement = new Statement("query", map(), false, (ResultDataContent[])null);

            handle.Commit(statements(statement), output, mock(typeof(HttpServletRequest)));

            // then
            verify(log).error(eq("Failed to commit transaction."), any(typeof(System.NullReferenceException)));
            verify(registry).forget(1337L);

            InOrder outputOrder = inOrder(output);

            outputOrder.verify(output).statementResult(executionResult, false, ( ResultDataContent[] )null);
            outputOrder.verify(output).notifications(anyCollectionOf(typeof(Notification)));
            outputOrder.verify(output).errors(argThat(HasErrors(Org.Neo4j.Kernel.Api.Exceptions.Status_Transaction.TransactionCommitFailed)));
            outputOrder.verify(output).finish();
            verifyNoMoreInteractions(output);
        }
Exemple #9
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldResumeTransactionWhenExecutingStatementsOnSecondRequest() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldResumeTransactionWhenExecutingStatementsOnSecondRequest()
        {
            // given
            TransitionalPeriodTransactionMessContainer kernel             = MockKernel();
            TransitionalTxManagementKernelTransaction  transactionContext = kernel.NewTransaction(@explicit, AUTH_DISABLED, -1);

            TransactionRegistry  registry             = mock(typeof(TransactionRegistry));
            QueryExecutionEngine executionEngine      = mock(typeof(QueryExecutionEngine));
            TransactionalContext transactionalContext = PrepareKernelWithQuerySession(kernel);

            when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L);
            TransactionHandle         handle = GetTransactionHandle(kernel, executionEngine, registry);
            ExecutionResultSerializer output = mock(typeof(ExecutionResultSerializer));

            handle.Execute(statements(new Statement("query", map(), false, (ResultDataContent[])null)), output, mock(typeof(HttpServletRequest)));
            reset(transactionContext, registry, executionEngine, output);
            Result executionResult = mock(typeof(Result));

            when(executionEngine.ExecuteQuery("query", NoParams, transactionalContext)).thenReturn(executionResult);

            // when
            handle.Execute(statements(new Statement("query", map(), false, (ResultDataContent[])null)), output, mock(typeof(HttpServletRequest)));

            // then
            InOrder order = inOrder(transactionContext, registry, executionEngine);

            order.verify(transactionContext).resumeSinceTransactionsAreStillThreadBound();
            order.verify(executionEngine).executeQuery("query", NoParams, transactionalContext);
            order.verify(transactionContext).suspendSinceTransactionsAreStillThreadBound();
            order.verify(registry).release(1337L, handle);

            InOrder outputOrder = inOrder(output);

            outputOrder.verify(output).transactionCommitUri(uriScheme.txCommitUri(1337));
            outputOrder.verify(output).statementResult(executionResult, false, ( ResultDataContent[] )null);
            outputOrder.verify(output).notifications(anyCollectionOf(typeof(Notification)));
            outputOrder.verify(output).transactionStatus(anyLong());
            outputOrder.verify(output).errors(argThat(HasNoErrors()));
            outputOrder.verify(output).finish();
            verifyNoMoreInteractions(output);
        }
Exemple #10
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldCommitTransactionAndTellRegistryToForgetItsHandle() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldCommitTransactionAndTellRegistryToForgetItsHandle()
        {
            // given
            TransitionalPeriodTransactionMessContainer kernel             = MockKernel();
            TransitionalTxManagementKernelTransaction  transactionContext = kernel.NewTransaction(@explicit, AUTH_DISABLED, -1);

            TransactionRegistry registry = mock(typeof(TransactionRegistry));

            QueryExecutionEngine engine = mock(typeof(QueryExecutionEngine));
            TransactionalContext transactionalContext = PrepareKernelWithQuerySession(kernel);
            Result result = mock(typeof(Result));

            when(engine.ExecuteQuery("query", NoParams, transactionalContext)).thenReturn(result);
            when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L);
            GraphDatabaseQueryService queryService = mock(typeof(GraphDatabaseQueryService));
            TransactionHandle         handle       = new TransactionHandle(kernel, engine, queryService, registry, uriScheme, false, AUTH_DISABLED, anyLong(), NullLogProvider.Instance);
            ExecutionResultSerializer output       = mock(typeof(ExecutionResultSerializer));

            // when
            Statement statement = new Statement("query", map(), false, (ResultDataContent[])null);

            handle.Commit(statements(statement), output, mock(typeof(HttpServletRequest)));

            // then
            InOrder transactionOrder = inOrder(transactionContext, registry);

            transactionOrder.verify(transactionContext).commit();
            transactionOrder.verify(registry).forget(1337L);

            InOrder outputOrder = inOrder(output);

            outputOrder.verify(output).statementResult(result, false, ( ResultDataContent[] )null);
            outputOrder.verify(output).notifications(anyCollectionOf(typeof(Notification)));
            outputOrder.verify(output).errors(argThat(HasNoErrors()));
            outputOrder.verify(output).finish();
            verifyNoMoreInteractions(output);
        }
Exemple #11
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldInterruptTransaction()
        public virtual void ShouldInterruptTransaction()
        {
            // given
            TransitionalPeriodTransactionMessContainer kernel = MockKernel();
            TransitionalTxManagementKernelTransaction  tx     = mock(typeof(TransitionalTxManagementKernelTransaction));

            when(kernel.NewTransaction(any(typeof(Transaction_Type)), any(typeof(LoginContext)), anyLong())).thenReturn(tx);
            TransactionRegistry registry = mock(typeof(TransactionRegistry));

            when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L);
            QueryExecutionEngine executionEngine = mock(typeof(QueryExecutionEngine));
            TransactionHandle    handle          = GetTransactionHandle(kernel, executionEngine, registry);

            ExecutionResultSerializer output = mock(typeof(ExecutionResultSerializer));
            Statement statement = new Statement("MATCH (n) RETURN n", map(), false, (ResultDataContent[])null);

            handle.Execute(statements(statement), output, mock(typeof(HttpServletRequest)));

            // when
            handle.Terminate();

            // then
            verify(tx, times(1)).terminate();
        }