public async Task Unary_SmallDeadline_ExceededWithoutReschedule() { var tcs = new TaskCompletionSource <DataMessage>(TaskCreationOptions.RunContinuationsAsynchronously); Task <DataMessage> UnaryTimeout(DataMessage request, ServerCallContext context) { return(tcs.Task); } // Arrange var method = Fixture.DynamicGrpc.AddUnaryMethod <DataMessage, DataMessage>(UnaryTimeout); var channel = CreateChannel(); var client = TestClientFactory.Create(channel, method); // Act var call = client.UnaryCall(new DataMessage(), new CallOptions(deadline: DateTime.UtcNow.AddMilliseconds(200))); // Assert var ex = await ExceptionAssert.ThrowsAsync <RpcException>(() => call.ResponseAsync).DefaultTimeout(); Assert.AreEqual(StatusCode.DeadlineExceeded, ex.StatusCode); Assert.AreEqual(StatusCode.DeadlineExceeded, call.GetStatus().StatusCode); Assert.IsFalse(Logs.Any(l => l.EventId.Name == "DeadlineTimerRescheduled")); tcs.SetResult(new DataMessage()); }
public bool IsLogNumAvalible(int newLogNum) { if (Logs == null || Logs.Count == 0) { return(true); } return(!Logs.Any(x => x.LogNumber == newLogNum)); }
public int NumberOfTimes(int minutesInterval) { if (Logs == null || !Logs.Any()) { return(0); } return(Logs.Count(l => l.SearchDate.AddMinutes(minutesInterval) > DateTime.UtcNow)); }
/// <summary> /// Fixed: /// </summary> public SysLogModel(Exception e, Logs logs = null) { Class = Routes.Controller(); Method = Routes.Action(); ErrMessage = e.Message + (logs?.Any() == true ? "\n" + logs.Select(o => o.Name + ": " + o.Value).Join("\n") : string.Empty); ErrStackTrace = e.StackTrace; WriteSysLog(); }
/// <summary> /// Fixed: /// </summary> public SysLogModel(Context context, Exception e, Logs logs = null) { Class = context.Controller; Method = context.Action; ErrMessage = e.Message + (logs?.Any() == true ? "\n" + logs.Select(o => o.Name + ": " + o.Value).Join("\n") : string.Empty); ErrStackTrace = e.StackTrace; WriteSysLog(context: context); }
/// <summary> /// Gets whether or not the enricher has already been procesed. /// </summary> /// <returns></returns> public bool GetHasBeenProcessed(IEnricher enricher, string addressId) { // ReSharper disable once ConvertIfStatementToReturnStatement if (Logs != null) { return(Logs.Any(m => string.Equals(m.TargetAddressId, addressId, StringComparison.OrdinalIgnoreCase) && string.Equals(m.SourceAddressId, addressId, StringComparison.OrdinalIgnoreCase))); } return(false); }
protected void EmailLog(string fromAddress, string recipientsSeparatedByCommas, string emailSubject) { if (Logs.Any(x => x.IsError)) { emailSubject = $"Error Occurred - {emailSubject}"; } var msg = new MailMessage(fromAddress, recipientsSeparatedByCommas); msg.Subject = emailSubject; //var attachmentStream = GenerateStreamFromString(GetHumanReadableLogContents()); //msg.Attachments.Add(new Attachment(attachmentStream, "log.txt")); msg.Body = GetHumanReadableLogContents(); msg.IsBodyHtml = false; var client = new SmtpClient(); client.Send(msg); }
public async Task Duplex_DeadlineExceedDuringDelay_Failure() { var callCount = 0; Task DuplexDeadlineExceeded(IAsyncStreamReader <DataMessage> requestStream, IServerStreamWriter <DataMessage> responseStream, ServerCallContext context) { callCount++; return(Task.FromException(new RpcException(new Status(StatusCode.DeadlineExceeded, ""), new Metadata { new Metadata.Entry(GrpcProtocolConstants.RetryPushbackHeader, TimeSpan.FromSeconds(10).TotalMilliseconds.ToString()) }))); } // Arrange var method = Fixture.DynamicGrpc.AddDuplexStreamingMethod <DataMessage, DataMessage>(DuplexDeadlineExceeded); var serviceConfig = ServiceConfigHelpers.CreateHedgingServiceConfig( hedgingDelay: TimeSpan.FromSeconds(10), nonFatalStatusCodes: new List <StatusCode> { StatusCode.DeadlineExceeded }); var channel = CreateChannel(serviceConfig: serviceConfig); var client = TestClientFactory.Create(channel, method); // Act var deadlineTimeout = 500; var call = client.DuplexStreamingCall(new CallOptions(deadline: DateTime.UtcNow.AddMilliseconds(deadlineTimeout))); // Assert var ex = await ExceptionAssert.ThrowsAsync <RpcException>(() => call.ResponseStream.MoveNext(CancellationToken.None)).DefaultTimeout(); Assert.AreEqual(StatusCode.DeadlineExceeded, ex.StatusCode); ex = await ExceptionAssert.ThrowsAsync <RpcException>(() => call.RequestStream.WriteAsync(new DataMessage())).DefaultTimeout(); Assert.AreEqual(StatusCode.DeadlineExceeded, ex.StatusCode); Assert.AreEqual(StatusCode.DeadlineExceeded, call.GetStatus().StatusCode); Assert.AreEqual(1, callCount); Assert.IsFalse(Logs.Any(l => l.EventId.Name == "DeadlineTimerRescheduled")); }
public async Task Unary_DeadlineExceedAfterServerCall_Failure(int exceptedServerCallCount) { var callCount = 0; var tcs = new TaskCompletionSource <DataMessage>(TaskCreationOptions.RunContinuationsAsynchronously); Task <DataMessage> UnaryFailure(DataMessage request, ServerCallContext context) { callCount++; if (callCount < exceptedServerCallCount) { return(Task.FromException <DataMessage>(new RpcException(new Status(StatusCode.DeadlineExceeded, "")))); } return(tcs.Task); } // Arrange var method = Fixture.DynamicGrpc.AddUnaryMethod <DataMessage, DataMessage>(UnaryFailure); var serviceConfig = ServiceConfigHelpers.CreateRetryServiceConfig(retryableStatusCodes: new List <StatusCode> { StatusCode.DeadlineExceeded }); var channel = CreateChannel(serviceConfig: serviceConfig); var client = TestClientFactory.Create(channel, method); // Act var call = client.UnaryCall(new DataMessage(), new CallOptions(deadline: DateTime.UtcNow.AddMilliseconds(200))); // Assert var ex = await ExceptionAssert.ThrowsAsync <RpcException>(() => call.ResponseAsync).DefaultTimeout(); Assert.AreEqual(StatusCode.DeadlineExceeded, ex.StatusCode); Assert.AreEqual(StatusCode.DeadlineExceeded, call.GetStatus().StatusCode); Assert.AreEqual(exceptedServerCallCount, callCount); Assert.IsFalse(Logs.Any(l => l.EventId.Name == "DeadlineTimerRescheduled")); AssertHasLog(LogLevel.Debug, "CallCommited", "Call commited. Reason: DeadlineExceeded"); tcs.SetResult(new DataMessage()); }
/// <summary> /// Fixed: /// </summary> public SysLogModel( Context context, Exception e, string extendedErrorMessage = null, Logs logs = null, SysLogTypes sysLogType = SysLogTypes.Execption) { Class = context.Controller; Method = context.Action; ErrMessage = e.Message + (extendedErrorMessage != null ? "\n" + extendedErrorMessage : string.Empty) + (logs?.Any() == true ? "\n" + logs.Select(o => o.Name + ": " + o.Value).Join("\n") : string.Empty); ErrStackTrace = e.StackTrace; WriteSysLog( context: context, sysLogType: sysLogType); }
public async Task Unary_DeadlineExceedDuringDelay_Failure() { var callCount = 0; Task <DataMessage> UnaryFailure(DataMessage request, ServerCallContext context) { callCount++; return(Task.FromException <DataMessage>(new RpcException(new Status(StatusCode.DeadlineExceeded, ""), new Metadata { new Metadata.Entry(GrpcProtocolConstants.RetryPushbackHeader, TimeSpan.FromSeconds(10).TotalMilliseconds.ToString()) }))); } // Arrange var method = Fixture.DynamicGrpc.AddUnaryMethod <DataMessage, DataMessage>(UnaryFailure); var serviceConfig = ServiceConfigHelpers.CreateHedgingServiceConfig( hedgingDelay: TimeSpan.FromSeconds(10), nonFatalStatusCodes: new List <StatusCode> { StatusCode.DeadlineExceeded }); var channel = CreateChannel(serviceConfig: serviceConfig); var client = TestClientFactory.Create(channel, method); // Act var call = client.UnaryCall(new DataMessage(), new CallOptions(deadline: DateTime.UtcNow.AddMilliseconds(300))); // Assert var ex = await ExceptionAssert.ThrowsAsync <RpcException>(() => call.ResponseAsync).DefaultTimeout(); Assert.AreEqual(StatusCode.DeadlineExceeded, ex.StatusCode); Assert.AreEqual(StatusCode.DeadlineExceeded, call.GetStatus().StatusCode); Assert.AreEqual(1, callCount); Assert.IsFalse(Logs.Any(l => l.EventId.Name == "DeadlineTimerRescheduled")); AssertHasLog(LogLevel.Debug, "CallCommited", "Call commited. Reason: DeadlineExceeded"); }
public async Task Unary_DeadlineExceedDuringBackoff_Failure() { var callCount = 0; Task <DataMessage> UnaryFailureWithPushback(DataMessage request, ServerCallContext context) { callCount++; Logger.LogInformation($"Server sending pushback for call {callCount}."); return(Task.FromException <DataMessage>(new RpcException(new Status(StatusCode.Unavailable, ""), new Metadata { new Metadata.Entry("grpc-retry-pushback-ms", TimeSpan.FromSeconds(10).TotalMilliseconds.ToString(CultureInfo.InvariantCulture)) }))); } // Arrange var method = Fixture.DynamicGrpc.AddUnaryMethod <DataMessage, DataMessage>(UnaryFailureWithPushback, nameof(UnaryFailureWithPushback)); var serviceConfig = ServiceConfigHelpers.CreateRetryServiceConfig( initialBackoff: TimeSpan.FromSeconds(10), maxBackoff: TimeSpan.FromSeconds(10), retryableStatusCodes: new List <StatusCode> { StatusCode.Unavailable }); var channel = CreateChannel(serviceConfig: serviceConfig); var client = TestClientFactory.Create(channel, method); // Act var call = client.UnaryCall(new DataMessage(), new CallOptions(deadline: DateTime.UtcNow.AddMilliseconds(500))); // Assert var ex = await ExceptionAssert.ThrowsAsync <RpcException>(() => call.ResponseAsync).DefaultTimeout(); Assert.AreEqual(StatusCode.DeadlineExceeded, ex.StatusCode); Assert.AreEqual(StatusCode.DeadlineExceeded, call.GetStatus().StatusCode); Assert.AreEqual(1, callCount); Assert.IsFalse(Logs.Any(l => l.EventId.Name == "DeadlineTimerRescheduled")); }
protected override void Test(IOrganizationService service) { // // Arrange // var plugin = new SyncContactToAccount(); var context = new PluginExecutionContextBuilder() .WithTarget(new Contact()) .WithFirstRegisteredEvent(plugin) .Build(); var provider = new ServiceProviderBuilder(service, context, Logger).Build(); // // Act // plugin.Execute(provider); // // Assert // Assert.IsTrue(Logs.Any(l => l.Trace == SyncContactToAccount.AddressNotUpdatedMessage)); }
public static string CreateRequestRecord(string actionName, string controllerName, string httpMethodType, string path, string requestBody, string returnType) { if (!ParameterValue.SYS01001) { return(""); } Log rec = new Log(); rec.Id = Guid.NewGuid(); rec.CreateDate = DateTime.Now; rec.RequestBody = requestBody; rec.Path = Validation.IsNull(path) ? "-" : path; rec.ActionName = Validation.IsNull(actionName) ? "-" : actionName; rec.ControllerName = Validation.IsNull(controllerName) ? "-" : controllerName; rec.ReturnTypeName = Validation.IsNull(returnType) ? "-" : returnType; rec.MethodType = Validation.IsNull(httpMethodType) ? HTTPMethodType.Unknown : (httpMethodType.ToUpper() == "POST" ? HTTPMethodType.POST : (httpMethodType.ToUpper() == "PUT" ? HTTPMethodType.PUT : (httpMethodType.ToUpper() == "DELETE" ? HTTPMethodType.DELETE : (httpMethodType.ToUpper() == "GET" ? HTTPMethodType.GET : HTTPMethodType.Unknown)))); if (Logs == null) { Logs = new List <Log>(); } if (Logs.Any(a => a.Id == rec.Id)) { return(Logs.Where(a => a.Id == rec.Id).Select(a => a.Id).FirstOrDefault().ToString()); } Logs.Add(rec); return(rec.Id.ToString()); }
private void timer1_Tick(object sender, EventArgs e) { try { if (!Logs.Any()) { return; } // Now lock in case the timer is overlapping ! lock (this) { textBox1._Paint = false; // turn off flag to ignore WM_PAINT messages if (textBox1.Lines.Length > Properties.Settings.Default.MaxNumberOfRealTimeLines) { //textBox1.SelectionStart = 0; //textBox1.SelectionLength = textBox1.GetFirstCharIndexFromLine(Properties.Settings.Default.MaxNumberOfRealTimeLines - 10); //textBox1.SelectedText = string.Empty; // The above makes it beep as well !! textBox1.Clear(); } //read out of the file until the EOF while (Logs.Any()) { int textLength = textBox1.TextLength; textBox1.Select(textLength, 0); LogString log = Logs.Dequeue(); switch (log.LevelUppercase) { case "FATAL": textBox1.SelectionColor = Color.DarkViolet; break; case "ERROR": textBox1.SelectionColor = Color.Red; break; case "WARN": textBox1.SelectionColor = Color.RoyalBlue; break; case "INFO": textBox1.SelectionColor = Color.Black; break; case "DEBUG": textBox1.SelectionColor = Color.DarkGray; break; case "TRACE": textBox1.SelectionColor = Color.DimGray; break; default: // Leave it as is break; } textBox1.AppendText(log.Message + Environment.NewLine); } } } catch { } textBox1._Paint = true;// restore flag so we can paint the control }
private void Emulate() { _cts = new CancellationTokenSource(); if (string.IsNullOrEmpty(_fileName) && _file.Length == 0) { MessageBox.Show("Le chemin vers le fichier log est vide", "Attention", MessageBoxButton.OK, MessageBoxImage.Warning); return; } Logs.Clear(); // ReSharper disable once ComplexConditionExpression var t = new Task(() => { var config = new EmulationConfig { BoxNumber = _boxNumber, IpAddress = _ipAddress, Port = _port, SleepPeriod = _sleepPeriod * 1000, SourceOfImeIs = _sourceOfImeIs }; if (_sourceOfImeIs == SourceOfIMEIs.OneIMEI) { if (string.IsNullOrEmpty(_imei)) { MessageBox.Show("Le champs IMEI est requis", "Attention", MessageBoxButton.OK, MessageBoxImage.Warning); return; } config.IMEIs = new[] { _imei }; } TeltonikaPacketEncoder.UpdateLogDataGird += log => { Application.Current.Dispatcher.Invoke(() => { if (!Logs.Any(x => x.Equals(log))) { Logs.Add(log); } }); }; // extracting and parsing and encoding avl data. var encodedData = (!string.IsNullOrEmpty(_fileName))? TeltonikaPacketEncoder.Encoding(AvlDataParser.ParseAvlData(_fileName)): TeltonikaPacketEncoder.Encoding(AvlDataParser.ParseAvlData(_file)); // launch the emulation var emulator = new Emulator(); emulator.UpdateLogDataGird += log => { Application.Current.Dispatcher.Invoke(() => { if (!Logs.Any(x => x.Equals(log))) { Logs.Add(log); } }); }; emulator.Emulate(config, encodedData, _cts.Token); }); t.Start(); }
private bool OnCanExport() { return(IsDuplicateCheckDirectorySelected && Logs.Any(l => l.IsExportable)); }