private void all_scenarios_with_status_other_than_STATUS_are_VISIBLE(ExecutionStatus status, [VisibleFormat] bool visible)
        {
            var elements = _driver.FindAllScenarios().Where(s => !s.HasClassName(status.ToString().ToLower())).ToArray();

            Assert.That(elements, Is.Not.Empty);
            Assert.That(elements.All(s => s.Displayed == visible));
        }
Ejemplo n.º 2
0
 private static IHtmlNode GetStatus(ExecutionStatus status)
 {
     return(Html.Tag(Html5Tag.Span)
            .Class("status " + GetStatusClass(status))
            .Content(status.ToString())
            .SpaceAfter());
 }
Ejemplo n.º 3
0
        public async Task Then_all_scenarios_with_status_should_be_VISIBLE(ExecutionStatus status, [VisibleFormat] bool visible)
        {
            var elements = Driver.FindAllScenarios().Where(s => s.HasClassName(status.ToString().ToLower())).ToArray();

            Assert.That(elements, Is.Not.Empty);
            Assert.That(elements.All(s => s.Displayed == visible));
        }
        private void all_features_having_all_scenarios_of_status_are_VISIBLE(ExecutionStatus status, [VisibleFormat] bool visible)
        {
            var expected = new[] { "feature", status.ToString().ToLower() };
            var elements = _driver.FindFeatures().Where(f => f.GetClassNames().SequenceEqual(expected)).ToArray();

            Assert.That(elements, Is.Not.Empty);
            Assert.That(elements.All(s => s.Displayed == visible));
        }
Ejemplo n.º 5
0
 private void UpdateHub(long id, ExecutionStatus status)
 {
     var json = new
     {
         ExecutionId = id,
         Status = status.ToString()
     };
     hub.Context.Clients.updateStatus(json);
 }
Ejemplo n.º 6
0
        public static void WriteProgramStatusFile(ExecutionStatus status)
        {
            string statusFile = Path.Combine(App.StartupPath, BuildControlParameters.ProgramStatusFileName);

            if (File.Exists(statusFile))
            {
                File.Delete(statusFile);
            }
            File.WriteAllText(statusFile, status.ToString());
        }
Ejemplo n.º 7
0
        private void UpdateHub(long id, ExecutionStatus status)
        {
            var json = new
            {
                ExecutionId = id,
                Status      = status.ToString()
            };

            hub.Context.Clients.updateStatus(json);
        }
Ejemplo n.º 8
0
 private static string GetStatusClass(ExecutionStatus status)
 {
     return(status.ToString().ToLowerInvariant());
 }
Ejemplo n.º 9
0
 private static TagBuilder GetStatusFilter(ExecutionStatus value)
 {
     return(Html.Checkbox().Name("statusFilter").Attribute("data-filter-value", value.ToString().ToLower()).Checked().OnClick("applyFilter()").SpaceBefore());
 }
 private void the_link_to_details_of_STATUS_scenarios_is_clicked(ExecutionStatus status)
 {
     _driver.FindElementsByTagName("table").First(t => t.HasClassName("summary"))
     .FindElements(By.TagName("td")).First(td => td.FindElements(By.TagName("span")).Any(span => span.HasClassName(status.ToString().ToLower() + "Alert")))
     .FindElements(By.TagName("a")).First().Click();
 }
Ejemplo n.º 11
0
 public string CsvResults()
 {
     return(CsvStringBuilder(programName, interpArgs, arguments, threadsCount.ToString(), avgExecTime.ToString("F3"),
                             variance.ToString("F4"), maxMemUsage.ToString("F"), maxCpuUsage.ToString("P2"),
                             avgCpuUsage.ToString("P2"), execStatus.ToString()));
 }
        // Token: 0x06001A1C RID: 6684 RVA: 0x0005E458 File Offset: 0x0005C658
        protected override GetDlpPolicyTipsResponse InternalExecute()
        {
            PolicyTipRequestLogger policyTipRequestLogger = PolicyTipRequestLogger.CreateInstance(this.CorrelationId);

            policyTipRequestLogger.StartStage(LogStage.ReceiveRequest);
            Item item = null;
            GetDlpPolicyTipsResponse result;

            try
            {
                GetDlpPolicyTipsCommand.SetReceiveRequestLogData(policyTipRequestLogger, this.ItemId, this.NeedToReclassify, this.BodyOrSubjectChanged, this.Recipients, this.EventTrigger, this.CustomizedStringsNeeded, this.ClientSupportsScanResultData, this.ScanResultData);
                if (base.CallContext != null && base.CallContext.AccessingADUser != null && base.CallContext.AccessingADUser.OrganizationId != null)
                {
                    this.OrganizationId = base.CallContext.AccessingADUser.OrganizationId;
                    if (this.ItemId == null || string.IsNullOrEmpty(this.ItemId.GetId()))
                    {
                        GetDlpPolicyTipsResponse invalidStoreItemIdResponse = GetDlpPolicyTipsResponse.InvalidStoreItemIdResponse;
                        this.TransitionToSendResponse(false, true, invalidStoreItemIdResponse, policyTipRequestLogger, true);
                        result = invalidStoreItemIdResponse;
                    }
                    else if (this.ItemId.GetId().Equals(GetDlpPolicyTipsCommand.pingRequestItemId, StringComparison.OrdinalIgnoreCase))
                    {
                        policyTipRequestLogger.AppendData("Ping", "1");
                        GetDlpPolicyTipsResponse responseToPingRequest = GetDlpPolicyTipsResponse.GetResponseToPingRequest();
                        this.TransitionToSendResponse(true, false, responseToPingRequest, policyTipRequestLogger, false);
                        result = responseToPingRequest;
                    }
                    else if (!GetDlpPolicyTipsCommand.AddItemToCurrentPending(this.ItemId.GetId()))
                    {
                        policyTipRequestLogger.AppendData("ItemAlreadyBeingProcessed", "1");
                        GetDlpPolicyTipsResponse itemAlreadyBeingProcessedResponse = GetDlpPolicyTipsResponse.ItemAlreadyBeingProcessedResponse;
                        this.TransitionToSendResponse(true, true, itemAlreadyBeingProcessedResponse, policyTipRequestLogger, false);
                        result = itemAlreadyBeingProcessedResponse;
                    }
                    else
                    {
                        ShortList <string> recipients   = GetDlpPolicyTipsCommand.ValidateAndGetEmailAddressStrings(this.Recipients, policyTipRequestLogger);
                        IdAndSession       idAndSession = null;
                        try
                        {
                            idAndSession = base.IdConverter.ConvertItemIdToIdAndSessionReadOnly(this.ItemId);
                        }
                        catch (InvalidStoreIdException exception)
                        {
                            policyTipRequestLogger.SetException(exception);
                            GetDlpPolicyTipsResponse invalidStoreItemIdResponse2 = GetDlpPolicyTipsResponse.InvalidStoreItemIdResponse;
                            this.TransitionToSendResponse(false, true, invalidStoreItemIdResponse2, policyTipRequestLogger, true);
                            return(invalidStoreItemIdResponse2);
                        }
                        catch (ObjectNotFoundException exception2)
                        {
                            policyTipRequestLogger.SetException(exception2);
                            GetDlpPolicyTipsResponse invalidStoreItemIdResponse3 = GetDlpPolicyTipsResponse.InvalidStoreItemIdResponse;
                            this.TransitionToSendResponse(false, true, invalidStoreItemIdResponse3, policyTipRequestLogger, true);
                            return(invalidStoreItemIdResponse3);
                        }
                        catch (AccessDeniedException exception3)
                        {
                            policyTipRequestLogger.SetException(exception3);
                            GetDlpPolicyTipsResponse accessDeniedStoreItemIdResponse = GetDlpPolicyTipsResponse.AccessDeniedStoreItemIdResponse;
                            this.TransitionToSendResponse(false, true, accessDeniedStoreItemIdResponse, policyTipRequestLogger, true);
                            return(accessDeniedStoreItemIdResponse);
                        }
                        policyTipRequestLogger.EndStageAndTransitionToStage(LogStage.LoadItem);
                        List <DlpPolicyMatchDetail> list = null;
                        bool   flag   = false;
                        string empty  = string.Empty;
                        string empty2 = string.Empty;
                        item = Item.Bind(idAndSession.Session, idAndSession.Id);
                        ScanResultStorageProvider scanResultStorageProvider = null;
                        if (this.ClientSupportsScanResultData)
                        {
                            try
                            {
                                scanResultStorageProvider = new ClientScanResultStorageProvider(this.ScanResultData, item);
                                goto IL_274;
                            }
                            catch (ClientScanResultParseException exception4)
                            {
                                policyTipRequestLogger.SetException(exception4);
                                GetDlpPolicyTipsResponse invalidClientScanResultResponse = GetDlpPolicyTipsResponse.InvalidClientScanResultResponse;
                                this.TransitionToSendResponse(false, true, invalidClientScanResultResponse, policyTipRequestLogger, true);
                                return(invalidClientScanResultResponse);
                            }
                        }
                        item.OpenAsReadWrite();
                        scanResultStorageProvider = new StoreItemScanResultStorageProvider(item);
IL_274:
                        string empty3 = string.Empty;
                        if (!GetDlpPolicyTipsCommand.IsSupportedStoreItemType(item, policyTipRequestLogger, out empty3))
                        {
                            GetDlpPolicyTipsResponse getDlpPolicyTipsResponse = new GetDlpPolicyTipsResponse(EvaluationResult.PermanentError);
                            getDlpPolicyTipsResponse.DiagnosticData = string.Format("{0}:{1}", "UnSupportedStoreItemType", empty3);
                            this.TransitionToSendResponse(false, true, getDlpPolicyTipsResponse, policyTipRequestLogger, true);
                            result = getDlpPolicyTipsResponse;
                        }
                        else
                        {
                            if (item != null)
                            {
                                policyTipRequestLogger.AppendData("Subject", PolicyTipRequestLogger.MarkAsPII(item.GetValueOrDefault <string>(InternalSchema.Subject, string.Empty)));
                            }
                            string fromAddress = GetDlpPolicyTipsCommand.GetFromAddress(idAndSession, item, policyTipRequestLogger);
                            if (string.IsNullOrEmpty(fromAddress))
                            {
                                policyTipRequestLogger.AppendData("NullFrom", "1");
                                GetDlpPolicyTipsResponse getDlpPolicyTipsResponse2 = new GetDlpPolicyTipsResponse(EvaluationResult.PermanentError);
                                getDlpPolicyTipsResponse2.DiagnosticData = "NullFrom";
                                this.TransitionToSendResponse(false, true, getDlpPolicyTipsResponse2, policyTipRequestLogger, true);
                                result = getDlpPolicyTipsResponse2;
                            }
                            else if (!GetDlpPolicyTipsCommand.HasContent(item, scanResultStorageProvider, policyTipRequestLogger))
                            {
                                policyTipRequestLogger.AppendData("NoContent", "1");
                                GetDlpPolicyTipsResponse noContentResponse = GetDlpPolicyTipsResponse.NoContentResponse;
                                this.TransitionToSendResponse(true, true, noContentResponse, policyTipRequestLogger, true);
                                result = noContentResponse;
                            }
                            else
                            {
                                policyTipRequestLogger.EndStageAndTransitionToStage(LogStage.RefreshClassifications);
                                policyTipRequestLogger.AppendData("BeforeRefreshClassifications", DiscoveredDataClassification.ToString(scanResultStorageProvider.GetDlpDetectedClassificationObjects()));
                                if (this.NeedToReclassify)
                                {
                                    scanResultStorageProvider.ResetAllClassifications();
                                }
                                else
                                {
                                    if (this.BodyOrSubjectChanged)
                                    {
                                        scanResultStorageProvider.RefreshBodyClassifications();
                                    }
                                    scanResultStorageProvider.RefreshAttachmentClassifications();
                                }
                                policyTipRequestLogger.AppendData("AfterRefreshClassifications", DiscoveredDataClassification.ToString(scanResultStorageProvider.GetDlpDetectedClassificationObjects()));
                                policyTipRequestLogger.EndStageAndTransitionToStage(LogStage.LoadRules);
                                policyTipRequestLogger.AppendData("OrganizationId", this.OrganizationId.ToString());
                                RuleCollection ruleCollection = GetDlpPolicyTipsCommand.LoadRules(this.OrganizationId);
                                if (ruleCollection == null || ruleCollection.Count == 0)
                                {
                                    policyTipRequestLogger.AppendData("RuleCount", "0");
                                    GetDlpPolicyTipsResponse noRulesResponse = GetDlpPolicyTipsResponse.NoRulesResponse;
                                    this.TransitionToSendResponse(true, true, noRulesResponse, policyTipRequestLogger, true);
                                    result = noRulesResponse;
                                }
                                else
                                {
                                    policyTipRequestLogger.AppendData("RuleCount", ruleCollection.Count.ToString());
                                    policyTipRequestLogger.AppendData("RuleNames", GetDlpPolicyTipsCommand.GetRuleNamesForTracking(ruleCollection));
                                    policyTipRequestLogger.EndStageAndTransitionToStage(LogStage.EvaluateRules);
                                    ExecutionStatus executionStatus = GetDlpPolicyTipsCommand.RunRules(ruleCollection, scanResultStorageProvider, item, fromAddress, recipients, out list, out flag, out empty, out empty2, policyTipRequestLogger);
                                    policyTipRequestLogger.AppendData("ExecutionStatus", executionStatus.ToString());
                                    policyTipRequestLogger.AppendData("MatchResults", (list == null) ? string.Empty : DlpPolicyMatchDetail.ToString(list));
                                    policyTipRequestLogger.AppendData("RuleEvalLatency", empty);
                                    policyTipRequestLogger.AppendData("RuleEvalResult", empty2);
                                    PolicyTipCustomizedStrings policyTipCustomizedStrings = null;
                                    if (this.CustomizedStringsNeeded)
                                    {
                                        policyTipRequestLogger.EndStageAndTransitionToStage(LogStage.LoadCustomStrings);
                                        UserContext userContext = UserContextManager.GetUserContext(base.CallContext.HttpContext, base.CallContext.EffectiveCaller, true);
                                        CultureInfo userCulture = userContext.UserCulture;
                                        policyTipRequestLogger.AppendData("CallersCulture", userCulture.Name);
                                        policyTipCustomizedStrings = ADUtils.GetPolicyTipStrings(this.OrganizationId, userCulture.Name);
                                        policyTipRequestLogger.AppendData("PolicyTipStrings", (policyTipCustomizedStrings == null) ? string.Empty : string.Format("Url:{0}/Notify:{1}/Override:{2}/Block:{3}", new object[]
                                        {
                                            policyTipCustomizedStrings.ComplianceURL ?? string.Empty,
                                            policyTipCustomizedStrings.PolicyTipMessageNotifyString ?? string.Empty,
                                            policyTipCustomizedStrings.PolicyTipMessageOverrideString ?? string.Empty,
                                            policyTipCustomizedStrings.PolicyTipMessageBlockString ?? string.Empty
                                        }));
                                    }
                                    GetDlpPolicyTipsResponse getDlpPolicyTipsResponse3 = new GetDlpPolicyTipsResponse(EvaluationResult.Success);
                                    if (this.ClientSupportsScanResultData)
                                    {
                                        getDlpPolicyTipsResponse3.ScanResultData            = ((ClientScanResultStorageProvider)scanResultStorageProvider).GetScanResultData();
                                        getDlpPolicyTipsResponse3.DetectedClassificationIds = ((ClientScanResultStorageProvider)scanResultStorageProvider).GetDetectedClassificationIds();
                                    }
                                    else
                                    {
                                        item.Save(SaveMode.ResolveConflicts);
                                    }
                                    if (list != null)
                                    {
                                        getDlpPolicyTipsResponse3.Matches = list.ToArray();
                                    }
                                    if (flag)
                                    {
                                        getDlpPolicyTipsResponse3.OptimizationResult = OptimizationResult.NoContentMatch;
                                    }
                                    if (this.CustomizedStringsNeeded)
                                    {
                                        getDlpPolicyTipsResponse3.CustomizedStrings = policyTipCustomizedStrings;
                                    }
                                    this.TransitionToSendResponse(true, false, getDlpPolicyTipsResponse3, policyTipRequestLogger, true);
                                    result = getDlpPolicyTipsResponse3;
                                }
                            }
                        }
                    }
                }
                else
                {
                    GetDlpPolicyTipsResponse nullOrganizationResponse = GetDlpPolicyTipsResponse.NullOrganizationResponse;
                    this.TransitionToSendResponse(false, true, nullOrganizationResponse, policyTipRequestLogger, true);
                    result = nullOrganizationResponse;
                }
            }
            catch (Exception ex)
            {
                policyTipRequestLogger.SetException(ex);
                GetDlpPolicyTipsResponse getDlpPolicyTipsResponse4;
                if (!GetDlpPolicyTipsCommand.CheckIfKnownExceptionAndUpdatePerfCounters(ex))
                {
                    getDlpPolicyTipsResponse4 = new GetDlpPolicyTipsResponse(EvaluationResult.UnexpectedPermanentError);
                    this.TransitionToSendResponse(false, false, getDlpPolicyTipsResponse4, policyTipRequestLogger, true);
                    throw;
                }
                getDlpPolicyTipsResponse4 = new GetDlpPolicyTipsResponse(EvaluationResult.PermanentError);
                this.TransitionToSendResponse(false, false, getDlpPolicyTipsResponse4, policyTipRequestLogger, true);
                List <string> list2 = null;
                List <string> list3 = null;
                string        text  = null;
                PolicyTipProtocolLog.GetExceptionTypeAndDetails(ex, out list2, out list3, out text, false);
                getDlpPolicyTipsResponse4.DiagnosticData = string.Format("OuterExceptionType:{0}/OuterExceptionMessage:{1}/InnerExceptionType:{2}/InnerExceptionMessage:{3}/ExceptionChain:{4}.", new object[]
                {
                    list2[0],
                    list3[0],
                    (list2.Count > 1) ? list2[list2.Count - 1] : string.Empty,
                    (list2.Count > 1) ? list3[list3.Count - 1] : string.Empty,
                    text
                });
                result = getDlpPolicyTipsResponse4;
            }
            finally
            {
                if (item != null)
                {
                    item.Dispose();
                    item = null;
                }
            }
            return(result);
        }
Ejemplo n.º 13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="guidParent"></param>
        /// <param name="channell"></param>
        /// <param name="totalCycles"></param>
        private void ProcessChannell(Guid guidParent, int channell, int totalCycles, ref StringBuilder sb)
        {
            int counter = 0;

            //If necessary, use this constructor's overload to pass parameters in the WebServices header
            System.ServiceModel.EndpointAddress remoteAddress = new System.ServiceModel.EndpointAddress(_url);

            //creating an HTTP connection per channel
            //This is done so that the F5 understands a connection to smaller groups of request.
            //It is from distinct connections that F5 performs load distribution on balanced nodes.
            using (RequestProcessorClient itfc = new RequestProcessorClient(new System.ServiceModel.BasicHttpBinding(), remoteAddress))
            {
                //Setting the requisition timeout
                itfc.Endpoint.Binding.SendTimeout = new TimeSpan(0, 0, 0, _timeout);

                //Do not exceed request timeout
                while (_endTimeExecution > DateTime.Now)
                {
                    if (totalCycles > counter)
                    {
                        Guid guidChild = Guid.NewGuid();

                        ExecutionStatus response = ExecutionStatus.NotExecuted;

                        string timeRequestHMSM = string.Empty;

                        try
                        {
                            //Informing PerfCounter of request
                            IncrementCounter(WSAction.Request, channell);

                            Stopwatch timeRequest = new Stopwatch();

                            string mensagemLog = string.Empty;

                            _requestExecutedTotal++;

                            timeRequest.Start();

                            //Running the request against the server
                            response = itfc.ExecuteStep(guidChild, _interfaceName, _stepName);

                            TimeSpan tsspan = timeRequest.Elapsed;

                            _responseReturnTotal++;

                            timeRequestHMSM = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", tsspan.Hours, tsspan.Minutes, tsspan.Seconds, tsspan.Milliseconds / 10);

                            //Informing PerfCounter of the request response
                            IncrementCounter(WSAction.Response, channell);

                            #region Msg Log Error and Audit
                            mensagemLog = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13}",
                                                        guidParent.ToString(),
                                                        response.ToString(),
                                                        guidChild.ToString(),
                                                        _interfaceName,
                                                        string.Format("{0}-{1}", _stepName, channell),
                                                        timeRequestHMSM,
                                                        DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
                                                        _workerThreads,
                                                        _portThreads,
                                                        _channelNumber,
                                                        _queueOrCycleSize,
                                                        totalCycles,
                                                        _runbookServerName,
                                                        string.Empty
                                                        );
                            #endregion Msg Log Erro and Audit

                            //If the request is not successful, error logging
                            if (response != ExecutionStatus.Success)
                            {
                                sb.AppendLine(mensagemLog);
                            }

                            //If auditing is turned on, write same success log
                            if (_auditLog && response == ExecutionStatus.Success)
                            {
                                sb.AppendLine(mensagemLog);
                            }
                        }
                        catch (TimeoutException te)
                        {
                            //Contains at least 1 error the requisition batch
                            ///TODO
                            ///Calculate when it is total error
                            _processStatus = ProcessStatusMultiChannel.PartialError;

                            #region Log exception

                            string exception = string.Format("Timeout exception\n\n", te.Message);

                            string msgerr = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13}",
                                                          guidParent.ToString(),
                                                          response.ToString(),
                                                          guidChild.ToString(),
                                                          _interfaceName,
                                                          string.Format("{0}-{1}", _stepName, channell),
                                                          timeRequestHMSM,
                                                          DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
                                                          _workerThreads,
                                                          _portThreads,
                                                          _channelNumber,
                                                          _queueOrCycleSize,
                                                          totalCycles,
                                                          _runbookServerName,
                                                          exception
                                                          );
                            #endregion Log exception

                            sb.AppendLine(msgerr);
                        }
                        catch (AggregateException ae)
                        {
                            //Contains at least 1 error the requisition batch
                            ///TODO
                            ///Calculate when it is total error
                            _processStatus = ProcessStatusMultiChannel.PartialError;

                            #region Log exception

                            string exception = string.Format("Parallel.ForEach exception\n\n", ae.Message);

                            string msgerr = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13}",
                                                          guidParent.ToString(),
                                                          response.ToString(),
                                                          guidChild.ToString(),
                                                          _interfaceName,
                                                          string.Format("{0}-{1}", _stepName, channell),
                                                          timeRequestHMSM,
                                                          DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
                                                          _workerThreads,
                                                          _portThreads,
                                                          _channelNumber,
                                                          _queueOrCycleSize,
                                                          totalCycles,
                                                          _runbookServerName,
                                                          exception
                                                          );
                            #endregion Log exception

                            sb.AppendLine(msgerr);
                        }
                        catch (WebException wexc)
                        {
                            //Contains at least 1 error the requisition batch
                            ///TODO
                            ///Calculate when it is total error
                            _processStatus = ProcessStatusMultiChannel.PartialError;

                            #region Log exception
                            string exception = string.Format("HTTPCode:{0} \n\n Description:{1} \n\n EMessage:{2}",
                                                             ((HttpWebResponse)wexc.Response).StatusCode.ToString(),
                                                             ((HttpWebResponse)wexc.Response).StatusDescription.ToString(),
                                                             wexc.Message
                                                             );

                            string msgerr = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13}",
                                                          guidParent.ToString(),
                                                          response.ToString(),
                                                          guidChild.ToString(),
                                                          _interfaceName,
                                                          string.Format("{0}-{1}", _stepName, channell),
                                                          timeRequestHMSM,
                                                          DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
                                                          _workerThreads,
                                                          _portThreads,
                                                          _channelNumber,
                                                          _queueOrCycleSize,
                                                          totalCycles,
                                                          _runbookServerName,
                                                          exception
                                                          );
                            #endregion Log exception

                            sb.AppendLine(msgerr);
                        }
                        catch (Exception exc)
                        {
                            //Contains at least 1 error the requisition batch
                            ///TODO
                            ///Calculate when it is total error
                            _processStatus = ProcessStatusMultiChannel.PartialError;

                            #region Log exception

                            string msgerr = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13}",
                                                          guidParent.ToString(),
                                                          response.ToString(),
                                                          guidChild.ToString(),
                                                          _interfaceName,
                                                          string.Format("{0}-{1}", _stepName, channell),
                                                          timeRequestHMSM,
                                                          DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
                                                          _workerThreads,
                                                          _portThreads,
                                                          _channelNumber,
                                                          _queueOrCycleSize,
                                                          totalCycles,
                                                          _runbookServerName,
                                                          exc.Message
                                                          );
                            #endregion Log exception

                            sb.AppendLine(msgerr);
                        }
                    }
                    else
                    {
                        return;
                    }

                    counter++;
                }
            }
        }
Ejemplo n.º 14
0
        private static async Task SendRequest(string urlToCheck, RequestType requestType, int localAttempts)
        {
            try
            {
                if (requestType == RequestType.Ping)
                {
                    await SendPing(urlToCheck);
                }
                else
                {
                    await SendWebRequest(urlToCheck);
                }

                localAttempts = NumberOfAttempts;

                WriterHelper.WriteInfo(LineConstants.InfoGlobalAttempts, ColumnConstants.InfoGlobalAttempts, localAttempts.ToString());
                WriterHelper.WriteInfo(LineConstants.InfoCurrentException, ColumnConstants.InfoCurrentException, "-");

                if (globalStatus == ExecutionStatus.AlarmFired)
                {
                    globalStatus = ExecutionStatus.SendRequest;
                    WriterHelper.WriteInfo(LineConstants.InfoGlobalStatus, ColumnConstants.InfoGlobalStatus, globalStatus.ToString());

                    PlayVictory();
                }

                if (globalStatus == ExecutionStatus.Warning)
                {
                    globalStatus = ExecutionStatus.SendRequest;
                    WriterHelper.WriteInfo(LineConstants.InfoGlobalStatus, ColumnConstants.InfoGlobalStatus, globalStatus.ToString());

                    PlaySound(Sentinel.Sounds.Startup);
                }
            }
            catch (Exception e)
            {
                WriterHelper.WriteInfo(LineConstants.InfoCurrentException, ColumnConstants.InfoCurrentException, e.Message);

                if (globalStatus != ExecutionStatus.AlarmFired)
                {
                    globalStatus = ExecutionStatus.Warning;
                    WriterHelper.WriteInfo(LineConstants.InfoGlobalStatus, ColumnConstants.InfoGlobalStatus, globalStatus.ToString());

                    localAttempts--;
                    WriterHelper.WriteInfo(LineConstants.InfoGlobalAttempts, ColumnConstants.InfoGlobalAttempts, localAttempts.ToString());
                }

                if (localAttempts <= 0)
                {
                    globalStatus = globalStatus != ExecutionStatus.AlarmFired ? ExecutionStatus.AttempsExcedeed : globalStatus;
                    WriterHelper.WriteInfo(LineConstants.InfoGlobalStatus, ColumnConstants.InfoGlobalStatus, globalStatus.ToString());
                }
            }
            finally
            {
                switch (globalStatus)
                {
                case ExecutionStatus.SendRequest:
                case ExecutionStatus.AlarmFired:
                    Thread.Sleep(5000);

                    await SendRequest(urlToCheck, requestType, localAttempts);

                    break;

                case ExecutionStatus.Warning:

                    PlayAlarm(localAttempts);

                    Thread.Sleep(5000);

                    await SendRequest(urlToCheck, requestType, localAttempts);

                    break;

                case ExecutionStatus.AttempsExcedeed:
                    globalStatus = ExecutionStatus.AlarmFired;

                    WriterHelper.WriteInfo(LineConstants.InfoGlobalStatus, ColumnConstants.InfoGlobalStatus, globalStatus.ToString());

                    PlayAlarm(localAttempts);

                    Thread.Sleep(5000);
                    await SendRequest(urlToCheck, requestType, localAttempts);

                    break;
                }
            }
        }