Example #1
0
        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());
        }
Example #2
0
 public bool IsLogNumAvalible(int newLogNum)
 {
     if (Logs == null || Logs.Count == 0)
     {
         return(true);
     }
     return(!Logs.Any(x => x.LogNumber == newLogNum));
 }
Example #3
0
 public int NumberOfTimes(int minutesInterval)
 {
     if (Logs == null || !Logs.Any())
     {
         return(0);
     }
     return(Logs.Count(l => l.SearchDate.AddMinutes(minutesInterval) > DateTime.UtcNow));
 }
Example #4
0
 /// <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();
 }
Example #5
0
 /// <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);
        }
Example #8
0
        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"));
        }
Example #9
0
        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);
 }
Example #11
0
        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");
        }
Example #12
0
        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"));
        }
Example #13
0
            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));
            }
Example #14
0
        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());
        }
Example #15
0
        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
        }
Example #16
0
        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();
        }
Example #17
0
 private bool OnCanExport()
 {
     return(IsDuplicateCheckDirectorySelected && Logs.Any(l => l.IsExportable));
 }