//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: void perform(io.netty.channel.ChannelHandlerContext ctx) throws java.io.IOException internal virtual void Perform(ChannelHandlerContext ctx) { CheckPointer checkPointer = _checkPointerSupplier.get(); Resource checkPointLock = _mutex.storeCopy(() => checkPointer.TryCheckPoint(new SimpleTriggerInfo("Store copy"))); Future <Void> completion = null; try { using (RawCursor <StoreResource, IOException> resources = _resourceStreamFactory.create()) { while (resources.Next()) { StoreResource resource = resources.get(); _protocol.stream(ctx, resource); } completion = _protocol.end(ctx, SUCCESS); } } finally { if (completion != null) { completion.addListener(f => checkPointLock.close()); } else { checkPointLock.Close(); } } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldPerformSuccessfulStoreCopyProcess() throws Exception //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldPerformSuccessfulStoreCopyProcess() { // given StoreStreamingProcess process = new StoreStreamingProcess(_protocol, _checkPointerSupplier, _mutex, _resourceStream); // mocked behaviour ImmediateEventExecutor eventExecutor = ImmediateEventExecutor.INSTANCE; Promise <Void> completionPromise = eventExecutor.newPromise(); long lastCheckpointedTxId = 1000L; RawCursor <StoreResource, IOException> resources = rawCursorOf(); when(_checkPointer.tryCheckPoint(any())).thenReturn(lastCheckpointedTxId); when(_checkPointer.lastCheckPointedTransactionId()).thenReturn(lastCheckpointedTxId); when(_protocol.end(_ctx, SUCCESS)).thenReturn(completionPromise); when(_resourceStream.create()).thenReturn(resources); // when process.Perform(_ctx); // then InOrder inOrder = Mockito.inOrder(_protocol, _checkPointer); inOrder.verify(_checkPointer).tryCheckPoint(any()); inOrder.verify(_protocol).end(_ctx, SUCCESS); inOrder.verifyNoMoreInteractions(); assertEquals(1, @lock.ReadLockCount); // when completionPromise.Success = null; // then assertEquals(0, @lock.ReadLockCount); }