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); }
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; } }
private async Task CloseConnection(AuditorWebSocketConnection _auditor) { if (_auditor != null) { await _auditor.CloseConnection(); } }
private void Unsubscribe(AuditorWebSocketConnection _auditor) { if (_auditor != null) { _auditor.OnConnectionStateChanged -= OnConnectionStateChanged; } }
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); }
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(); }