public async Task OrderQuantumTest(KeyPair clientKeyPair, KeyPair alphaKeyPair, ConnectionState state, Type excpectedException)
        {
            context.AppState.State = ApplicationState.Ready;

            var clientConnection = new AuditorWebSocketConnection(context, new FakeAuditorConnectionInfo(new FakeWebSocket()))
            {
                ConnectionState = state
            };
            var account       = context.AccountStorage.GetAccount(clientKeyPair);
            var orderEnvelope = new OrderRequest
            {
                Account = account?.Account.Id ?? 0
            }.CreateEnvelope().Sign(clientKeyPair);

            var orderQuantumEnvelope = new RequestQuantum
            {
                RequestEnvelope = orderEnvelope
            }.CreateEnvelope();

            orderQuantumEnvelope.Sign(alphaKeyPair);
            using var writer = new XdrBufferWriter();
            var inMessage = orderQuantumEnvelope.ToIncomingMessage(writer);


            await AssertMessageHandling(clientConnection, inMessage, excpectedException);
        }
        public async Task TxCommitQuantumTest(KeyPair alphaKeyPair, ConnectionState state, Type excpectedException)
        {
            context.AppState.State = ApplicationState.Ready;

            var clientConnection = new AuditorWebSocketConnection(context, new FakeAuditorConnectionInfo(new FakeWebSocket()))
            {
                ConnectionState = state
            };

            var ledgerNotification = new TxNotification
            {
                TxCursor = 0,
                Payments = new List <PaymentBase>()
            };

            var envelope = new TxCommitQuantum
            {
                Source = ledgerNotification.CreateEnvelope()
            }.CreateEnvelope();

            envelope.Sign(alphaKeyPair);
            using var writer = new XdrBufferWriter();
            var inMessage = envelope.ToIncomingMessage(writer);

            await AssertMessageHandling(clientConnection, inMessage, excpectedException);
        }
        public async Task OrderQuantumTest(KeyPair clientKeyPair, KeyPair alphaKeyPair, ConnectionState state, Type excpectedException)
        {
            Global.AppState.State = ApplicationState.Ready;

            var clientConnection = new AuditorWebSocketConnection(new FakeWebSocket(), null)
            {
                ConnectionState = state
            };
            var account       = Global.AccountStorage.GetAccount(clientKeyPair);
            var orderEnvelope = new OrderRequest
            {
                Account = account?.Account.Id ?? 0
            }.CreateEnvelope();

            orderEnvelope.Sign(clientKeyPair);

            var orderQuantumEnvelope = new RequestQuantum
            {
                RequestEnvelope = orderEnvelope
            }.CreateEnvelope();

            orderQuantumEnvelope.Sign(alphaKeyPair);


            await AssertMessageHandling(clientConnection, orderQuantumEnvelope, excpectedException);
        }
        public override Task HandleMessage(AuditorWebSocketConnection connection, MessageEnvelope envelope)
        {
            var resultMessage = (ResultMessage)envelope.Message;

            logger.Trace($"Result message received. Status {resultMessage.Status}, original message type is {resultMessage.OriginalMessage.Message.MessageType}");
            return(Task.CompletedTask);
        }
Exemplo n.º 5
0
        private async Task InternalRun()
        {
            try
            {
                while (auditor == null && !isAborted)
                {
                    var _auditor = new AuditorWebSocketConnection(new ClientWebSocket(), null);
                    try
                    {
                        Subscribe(_auditor);
                        await _auditor.EstablishConnection();

                        auditor = _auditor;
                    }
                    catch (Exception exc)
                    {
                        Unsubscribe(_auditor);
                        await CloseConnection(_auditor);

                        if (!(exc is OperationCanceledException))
                        {
                            logger.Info(exc, "Unable establish connection. Retry in 5000ms");
                        }
                        Thread.Sleep(5000);
                    }
                }
            }
            catch (Exception exc)
            {
                logger.Error(exc, "Auditor startup error.");
                Global.AppState.State = ApplicationState.Failed;
            }
        }
Exemplo n.º 6
0
 private async Task CloseConnection(AuditorWebSocketConnection _auditor)
 {
     if (_auditor != null)
     {
         await _auditor.CloseConnection();
     }
 }
Exemplo n.º 7
0
 private void Unsubscribe(AuditorWebSocketConnection _auditor)
 {
     if (_auditor != null)
     {
         _auditor.OnConnectionStateChanged -= OnConnectionStateChanged;
     }
 }
Exemplo n.º 8
0
        private async void Close(BaseWebSocketConnection e)
        {
            Global.AppState.State = ApplicationState.Running;
            Unsubscribe(auditor);
            await CloseConnection(auditor);

            auditor = null;
            if (!isAborted)
            {
                _ = InternalRun();
            }
        }
        public async Task AlphaStateTest(ApplicationState alphaState)
        {
            context.AppState.State = ApplicationState.Running;

            var clientConnection = new AuditorWebSocketConnection(context, new FakeAuditorConnectionInfo(new FakeWebSocket()));

            var envelope = new AlphaState
            {
                State = alphaState
            }.CreateEnvelope().Sign(TestEnvironment.AlphaKeyPair);

            using var writer = new XdrBufferWriter();
            var inMessage = envelope.ToIncomingMessage(writer);
            var isHandled = await context.MessageHandlers.HandleMessage(clientConnection, inMessage);

            Assert.IsTrue(isHandled);
        }
        public async Task AlphaStateTest(ApplicationState alphaState)
        {
            Global.AppState.State = ApplicationState.Running;

            var clientConnection = new AuditorWebSocketConnection(new FakeWebSocket(), null);

            var envelope = new AlphaState
            {
                State = alphaState
            }.CreateEnvelope();

            envelope.Sign(TestEnvironment.AlphaKeyPair);

            var isHandled = await MessageHandlers <AuditorWebSocketConnection> .HandleMessage(clientConnection, envelope);

            Assert.IsTrue(isHandled);
        }
        public async Task QuantaBatchTest(KeyPair alphaKeyPair, ConnectionState state, Type excpectedException)
        {
            Global.AppState.State = ApplicationState.Ready;

            var clientConnection = new AuditorWebSocketConnection(new FakeWebSocket(), null)
            {
                ConnectionState = state
            };
            var orderEnvelope = new QuantaBatch
            {
                Quanta = new List <MessageEnvelope>()
            }.CreateEnvelope();

            orderEnvelope.Sign(alphaKeyPair);

            await AssertMessageHandling(clientConnection, orderEnvelope, excpectedException);
        }
        public async Task QuantaBatchTest(KeyPair alphaKeyPair, ConnectionState state, Type excpectedException)
        {
            context.AppState.State = ApplicationState.Ready;

            var clientConnection = new AuditorWebSocketConnection(context, new FakeAuditorConnectionInfo(new FakeWebSocket()))
            {
                ConnectionState = state
            };
            var orderEnvelope = new QuantaBatch
            {
                Quanta = new List <MessageEnvelope>()
            }.CreateEnvelope();

            orderEnvelope.Sign(alphaKeyPair);
            using var writer = new XdrBufferWriter();
            var inMessage = orderEnvelope.ToIncomingMessage(writer);

            await AssertMessageHandling(clientConnection, inMessage, excpectedException);
        }
        public async Task HandshakeTest()
        {
            Global.AppState.State = ApplicationState.Running;

            var clientConnection = new AuditorWebSocketConnection(new FakeWebSocket(), null);

            var hd = new HandshakeData();

            hd.Randomize();

            var envelope = new HandshakeInit {
                HandshakeData = hd
            }.CreateEnvelope();

            envelope.Sign(TestEnvironment.AlphaKeyPair);
            var isHandled = await MessageHandlers <AuditorWebSocketConnection> .HandleMessage(clientConnection, envelope);

            Assert.IsTrue(isHandled);
        }
        public async Task TxCommitQuantumTest(KeyPair alphaKeyPair, ConnectionState state, Type excpectedException)
        {
            Global.AppState.State = ApplicationState.Ready;

            var clientConnection = new AuditorWebSocketConnection(new FakeWebSocket(), null)
            {
                ConnectionState = state
            };

            var ledgerNotification = new TxNotification
            {
                TxCursor = 0,
                Payments = new List <PaymentBase>()
            };

            var envelope = new TxCommitQuantum
            {
                Source = ledgerNotification.CreateEnvelope()
            }.CreateEnvelope();

            envelope.Sign(alphaKeyPair);

            await AssertMessageHandling(clientConnection, envelope, excpectedException);
        }
Exemplo n.º 15
0
        private void InternalRun()
        {
            var runTask = Task.Factory.StartNew(async() =>
            {
                try
                {
                    while (!isAborted)
                    {
                        var _auditor = new AuditorWebSocketConnection(Context, connectionFactory());
                        try
                        {
                            Subscribe(_auditor);
                            await _auditor.EstablishConnection();
                            auditor = _auditor;
                            break;
                        }
                        catch (Exception exc)
                        {
                            Unsubscribe(_auditor);
                            await CloseConnection(_auditor);

                            if (!(exc is OperationCanceledException))
                            {
                                logger.Info(exc, "Unable establish connection. Retry in 5000ms");
                            }
                            Thread.Sleep(5000);
                        }
                    }
                }
                catch (Exception exc)
                {
                    logger.Error(exc, "Auditor startup error.");
                    Context.AppState.State = ApplicationState.Failed;
                }
            }).Unwrap();
        }