예제 #1
0
            public IHostOperationExecutor Create(SessionCollection arg)
            {
                var e = new HostOperationExecutor <TRequest, TResponse>(_model, _serializer, arg, _loggerFactory);

                Setup?.Invoke(e);
                return(e);
            }
예제 #2
0
        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);
        }