public void Raises_DiagnosticGenerated_On_Exception() { var mocks = new Mocks(); var handler = new DistributedMessageHandler( mocks.Client.Object); mocks.Diagnostic.Setup(m => m.Debug(It.IsAny <string>())); var conn = new Mock <IMessageConnection>(); conn.Setup(m => m.WriteAsync(It.IsAny <IOutgoingMessage>(), It.IsAny <CancellationToken?>())) .Throws(new Exception()); var msg = new MessageBuilder() .WriteCode(MessageCode.Distributed.Ping) .Build(); var diagnostics = new List <DiagnosticEventArgs>(); handler.DiagnosticGenerated += (_, e) => diagnostics.Add(e); handler.HandleMessageRead(conn.Object, msg); diagnostics = diagnostics .Where(d => d.Level == DiagnosticLevel.Warning) .Where(d => d.Message.IndexOf("Error handling distributed message", StringComparison.InvariantCultureIgnoreCase) > -1) .ToList(); Assert.Single(diagnostics); }
public void Raises_DiagnosticGenerated_On_SearchResponseResolver_Exception(string username, int token, string query) { var mocks = new Mocks(); var handler = new DistributedMessageHandler( mocks.Client.Object); mocks.Client.Setup(m => m.Options) .Returns(new SoulseekClientOptions(searchResponseResolver: (a, b, c) => { throw new Exception(); })); mocks.Diagnostic.Setup(m => m.Debug(It.IsAny <string>())); var conn = new Mock <IMessageConnection>(); var message = new DistributedSearchRequest(username, token, query).ToByteArray(); var diagnostics = new List <DiagnosticEventArgs>(); handler.DiagnosticGenerated += (_, e) => diagnostics.Add(e); handler.HandleMessageRead(conn.Object, message); diagnostics = diagnostics .Where(d => d.Level == DiagnosticLevel.Warning) .Where(d => d.Message.IndexOf("Error resolving search response", StringComparison.InvariantCultureIgnoreCase) > -1) .ToList(); Assert.Single(diagnostics); }
private (DistributedMessageHandler Handler, Mocks Mocks) GetFixture(SoulseekClientOptions clientOptions = null) { var mocks = new Mocks(clientOptions); var handler = new DistributedMessageHandler( mocks.Client.Object, mocks.Diagnostic.Object); return(handler, mocks); }
public void Does_Not_Throw_Raising_DiagnosticGenerated_If_No_Handlers_Bound(string message) { using (var client = new SoulseekClient(options: null)) { DistributedMessageHandler l = new DistributedMessageHandler(client); var diagnostic = l.GetProperty <IDiagnosticFactory>("Diagnostic"); var ex = Record.Exception(() => diagnostic.Info(message)); Assert.Null(ex); } }
public void Raises_DiagnosticGenerated_On_Diagnostic(string message) { using (var client = new SoulseekClient(options: null)) { DiagnosticEventArgs args = default; DistributedMessageHandler l = new DistributedMessageHandler(client); l.DiagnosticGenerated += (sender, e) => args = e; var diagnostic = l.GetProperty <IDiagnosticFactory>("Diagnostic"); diagnostic.Info(message); Assert.Equal(message, args.Message); } }