예제 #1
0
        public async Task ShouldRetrySendRequestOnUnavailableUntilSucceed()
        {
            // given
            var countdownEvent = new CountdownEvent(5);

            TestService.AddRequestHandler(
                typeof(CancelProcessInstanceRequest),
                req =>
            {
                countdownEvent.Signal();
                throw new RpcException(new Status(StatusCode.Unavailable, "exhausted"));
            });
            var expectedRequest = new CancelProcessInstanceRequest
            {
                ProcessInstanceKey = 12113
            };

            // when
            var resultTask = ZeebeClient.NewCancelInstanceCommand(12113).SendWithRetry();

            countdownEvent.Wait(TimeSpan.FromSeconds(10));

            // then
            Assert.AreEqual(0, countdownEvent.CurrentCount);
            TestService.AddRequestHandler(typeof(CancelProcessInstanceRequest), req => new CancelProcessInstanceResponse());
            await resultTask;

            var request = TestService.Requests[typeof(CancelProcessInstanceRequest)][0];

            Assert.AreEqual(expectedRequest, request);

            var requestCount = TestService.Requests[typeof(CancelProcessInstanceRequest)].Count;

            Assert.GreaterOrEqual(requestCount, 5);
        }
예제 #2
0
 public CancelProcessInstanceCommand(Gateway.GatewayClient client, IAsyncRetryStrategy asyncRetryStrategy, long processInstanceKey)
 {
     request = new CancelProcessInstanceRequest
     {
         ProcessInstanceKey = processInstanceKey
     };
     this.client             = client;
     this.asyncRetryStrategy = asyncRetryStrategy;
 }
예제 #3
0
        public async Task ShouldSendRequestAsExpected()
        {
            // given
            var expected = new CancelProcessInstanceRequest
            {
                ProcessInstanceKey = 12113
            };

            // when
            await ZeebeClient.NewCancelInstanceCommand(12113).Send();

            // then
            var request = TestService.Requests[typeof(CancelProcessInstanceRequest)][0];

            Assert.AreEqual(expected, request);
        }
예제 #4
0
 public override AsyncUnaryCall <CancelProcessInstanceResponse> CancelProcessInstanceAsync(CancelProcessInstanceRequest request, CallOptions options)
 {
     throw new ObjectDisposedException(ZeebeClientWasAlreadyDisposed);
 }
예제 #5
0
 public override AsyncUnaryCall <CancelProcessInstanceResponse> CancelProcessInstanceAsync(CancelProcessInstanceRequest request, Metadata headers = null,
                                                                                           DateTime?deadline = null, CancellationToken cancellationToken = default(CancellationToken))
 {
     throw new ObjectDisposedException(ZeebeClientWasAlreadyDisposed);
 }
 public override Task <CancelProcessInstanceResponse> CancelProcessInstance(CancelProcessInstanceRequest request, ServerCallContext context)
 {
     return(Task.FromResult((CancelProcessInstanceResponse)HandleRequest(request, context)));
 }