public IHostOperationExecutor Create(SessionCollection arg) { var e = new HostOperationExecutor <TRequest, TResponse>(_model, _serializer, arg, _loggerFactory); Setup?.Invoke(e); return(e); }
public void ExecutorCancelTest() { var serializeMock = new Mock <BaseSerializer>(); var mockSession = new Mock <SessionCollection>(); var mockSetting = new HostOperationExecutor <DefaultMessage, DefaultMessage>(OperationRuntimeModel.CreateFromAttribute(new [] { typeof(Foo) }), serializeMock.Object, mockSession.Object, new NullLoggerFactory()); var cts = new CancellationTokenSource(); var task = mockSetting.Execute <Foo, int>(new Foo(), cts.Token); cts.Cancel(); Assert.Equal(TaskStatus.Canceled, task.Status); mockSession.Verify(c => c.SendToAllAsync(It.IsAny <ArraySegment <byte> >(), DeliveryMode.Reliable | DeliveryMode.Ordered), Times.Exactly(2)); }
public void ExecuteTest() { var serializeMock = new Mock <BaseSerializer>(); var mockSession = new Mock <SessionCollection>(); var mockSetting = new HostOperationExecutor <DefaultMessage, DefaultMessage>(OperationRuntimeModel.CreateFromAttribute(new [] { typeof(A) }), serializeMock.Object, mockSession.Object, new NullLoggerFactory()); var task = mockSetting.Execute <A, int>(new A()); Assert.Equal(TaskStatus.WaitingForActivation, task.Status); mockSession.Verify(c => c.SendToAllAsync(It.IsAny <ArraySegment <byte> >(), It.IsAny <DeliveryMode>()), Times.Once); serializeMock.Verify(serializer => serializer.Serialize(It.IsAny <A>(), It.IsAny <Session>()), Times.Once); }
public async Task ReceiveResultTest() { var serializeMock = new Mock <BaseSerializer>(); serializeMock.Setup(serializer => serializer.Deserialize <int>(It.IsAny <ArraySegment <byte> >(), It.IsAny <Session>())).Returns(111); serializeMock.Setup(serializer => serializer.Serialize(It.IsAny <A>(), It.IsAny <Session>())).Returns(new byte[10]); var executor = new HostOperationExecutor <DefaultMessage, DefaultMessage>(OperationRuntimeModel.CreateFromAttribute(new[] { typeof(A) }), serializeMock.Object, new Mock <SessionCollection>().Object, new NullLoggerFactory()); var mockGenerator = new Mock <IGeneratorId>(); mockGenerator.Setup(id => id.Generate()).Returns(100); executor.MessageIdGenerator = mockGenerator.Object; IResponseReceiver <DefaultMessage> e = executor; Task.Delay(100).ContinueWith(_ => e.Receive(new DefaultMessage() { OperationCode = 0, Status = BuiltInOperationState.Success, OperationData = new byte[10], Id = 100 })) .GetAwaiter(); var result = await executor.Execute <A, int>(new A()); Assert.Equal(111, result.Result); }