public void typed_failing_tryfire_command_should_fail()
        {
            var          bus          = new CommandBus("local");
            const int    data         = 12356;
            const string errText      = @"I knew this would happen.";
            long         gotResponse  = 0;
            long         responseData = 0;

            bus.Subscribe(new AdHocTypedCommandHandler <TestCommands.TypedTestCommand, TestCommands.TestFailedCommandResponse>(
                              cmd => new TestCommands.TestFailedCommandResponse(cmd, new CommandException(errText, cmd), data)));
            bus.Subscribe(new AdHocHandler <TestCommands.TestFailedCommandResponse>(
                              cmd =>
            {
                Interlocked.Exchange(ref gotResponse, 1);
                Interlocked.Exchange(ref responseData, cmd.Data);
            }
                              ));

            CommandResponse response;
            var             command = new TestCommands.TypedTestCommand(Guid.NewGuid(), null);
            var             passed  = bus.TryFire(command, out response);

            Assert.False(passed, "Expected false return");
            Assert.IsType(typeof(TestCommands.TestFailedCommandResponse), response);
            Assert.IsType(typeof(CommandException), ((Fail)response).Exception);
            Assert.Equal($"{command.GetType().Name}: {errText}", ((Fail)response).Exception.Message);
            Assert.Equal(data, ((TestCommands.TestFailedCommandResponse)response).Data);
            Assert.IsOrBecomesTrue(() => Interlocked.Read(ref gotResponse) == 1, null, "Expected Fail");
            Assert.IsOrBecomesTrue(() => data == responseData);
        }
Exemplo n.º 2
0
        public void can_serialize_bson_fail_commandresponse()
        {
            var cmd      = new TestCommands.TypedTestCommand(Guid.NewGuid(), null);
            var nearSide = cmd.Fail(new CommandException("O_Ops", cmd), 15);

            TestCommands.TestFailedCommandResponse farSide;
            var ms = new MemoryStream();

            using (var writer = new BsonWriter(ms))
            {
                var serializer = new JsonSerializer();
                serializer.Serialize(writer, nearSide);
            }
            var array = ms.ToArray();

            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (var writer = new JsonTextWriter(sw))
            {
                var serializer = new JsonSerializer();
                serializer.Serialize(writer, nearSide);
            }
            var foo = sb.ToString();

            var ms2 = new MemoryStream(array);

            using (var reader = new BsonReader(ms2))
            {
                var serializer = new JsonSerializer();
                farSide = serializer.Deserialize <TestCommands.TestFailedCommandResponse>(reader);
            }

            Assert.Equal(nearSide.MsgId, farSide.MsgId);
            Assert.Equal(nearSide.MsgTypeId, farSide.MsgTypeId);
            Assert.Equal(nearSide.CorrelationId, farSide.CorrelationId);
            Assert.Equal(nearSide.CommandType, farSide.CommandType);
            Assert.Equal(nearSide.CommandId, farSide.CommandId);
            Assert.Equal(nearSide.SourceId, farSide.SourceId);
            Assert.Equal(nearSide.Exception.Message, farSide.Exception.Message);

            Assert.Equal(nearSide.Data, farSide.Data);
        }
Exemplo n.º 3
0
        public void can_serialize_json_success_commandresponse()
        {
            var cmd      = new TestCommands.TypedTestCommand(Guid.NewGuid(), null);
            var nearSide = cmd.Succeed(15);

            TestCommands.TestCommandResponse farSide;


            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            using (var writer = new JsonTextWriter(sw))
            {
                var serializer = new JsonSerializer();
                serializer.Serialize(writer, nearSide);
            }
            var foo = sb.ToString();



            using (var reader = new JsonTextReader(new StringReader(foo)))
            {
                var serializer = new JsonSerializer();
                serializer.Binder           = new TestDeserializer();
                serializer.ContractResolver = new TestContractResolver();
                farSide = serializer.Deserialize <TestCommands.TestCommandResponse>(reader);
            }

            Assert.Equal(nearSide.MsgId, farSide.MsgId);
            Assert.Equal(nearSide.MsgTypeId, farSide.MsgTypeId);
            Assert.Equal(nearSide.CorrelationId, farSide.CorrelationId);
            Assert.Equal(nearSide.CommandType, farSide.CommandType);
            Assert.Equal(nearSide.CommandId, farSide.CommandId);
            Assert.Equal(nearSide.SourceId, farSide.SourceId);

            Assert.Equal(nearSide.Data, farSide.Data);
        }