예제 #1
0
        public void Notify(ProcedureEvents @event)
        {
            _notified.Add(@event, DateTime.UtcNow);

            using (var accessor = _memoryMappedFile.CreateViewAccessor(0, _size, MemoryMappedFileAccess.Write))
                accessor.Write <ProcedureEvents>(0, ref @event);
        }
 public ProcedureEvent this[ProcedureEvents @event]
 {
     get
     {
         return(this.Where((e) => e.Event == @event).FirstOrDefault());
     }
 }
예제 #3
0
        private void UpdateProgress(ProcedureEvents @event)
        {
            try
            {
                if (_coldCacheExecution)
                {
                    #region Cold execution

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepValidateStatement)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;

                        SetInProgress(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepClearCache)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;

                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetInProgress(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepLoadCubeScript)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;

                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetInProgress(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepStartAnalyzerTask)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;
                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetCompleted(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);

                        pictureBoxArrowDownTop.Visible = true;

                        panelExecutionBandColdCache.Visible = true;
                        panelExecutionTaskColdCache.Visible = true;
                        SetInProgress(labelName_Cold_RunTraces, labelResult_Cold_RunTraces);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepExecuteStatement)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;
                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetCompleted(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);

                        pictureBoxArrowDownTop.Visible = true;

                        panelExecutionBandColdCache.Visible = true;
                        panelExecutionTaskColdCache.Visible = true;
                        SetCompleted(labelName_Cold_RunTraces, labelResult_Cold_RunTraces);
                        SetInProgress(labelName_Cold_ExecuteMDX, labelResult_Cold_ExecuteMDX);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepPendingOutcome)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;
                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetCompleted(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);

                        pictureBoxArrowDownTop.Visible = true;

                        panelExecutionBandColdCache.Visible = true;
                        panelExecutionTaskColdCache.Visible = true;
                        SetCompleted(labelName_Cold_RunTraces, labelResult_Cold_RunTraces);
                        SetInProgress(labelName_Cold_ExecuteMDX, labelResult_Cold_ExecuteMDX);  // this task run always with the next one (CollectData)
                        SetInProgress(labelName_Cold_CollectData, labelResult_Cold_CollectData);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepCalculateResult)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;
                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetCompleted(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);

                        pictureBoxArrowDownTop.Visible = true;

                        panelExecutionBandColdCache.Visible = true;
                        panelExecutionTaskColdCache.Visible = true;
                        SetCompleted(labelName_Cold_RunTraces, labelResult_Cold_RunTraces);
                        SetCompleted(labelName_Cold_ExecuteMDX, labelResult_Cold_ExecuteMDX);
                        SetCompleted(labelName_Cold_CollectData, labelResult_Cold_CollectData);
                        SetInProgress(labelName_Cold_CalculateMetrics, labelResult_Cold_CalculateMetrics);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepSendResult)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;
                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetCompleted(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);

                        pictureBoxArrowDownTop.Visible = true;

                        panelExecutionBandColdCache.Visible = true;
                        panelExecutionTaskColdCache.Visible = true;
                        SetCompleted(labelName_Cold_RunTraces, labelResult_Cold_RunTraces);
                        SetCompleted(labelName_Cold_ExecuteMDX, labelResult_Cold_ExecuteMDX);
                        SetCompleted(labelName_Cold_CollectData, labelResult_Cold_CollectData);
                        SetCompleted(labelName_Cold_CalculateMetrics, labelResult_Cold_CalculateMetrics);
                        pictureBoxArrowDownCenter1.Visible = true;

                        panelExecutionBandPostCold.Visible = true;
                        panelExecutionTaskPostCold.Visible = true;

                        SetInProgress(labelName_PostCold_RetrieveData, labelResult_PostCold_RetrieveData);

                        return;

                        #endregion
                    }

                    #endregion
                }
                else
                {
                    #region Warm execution

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepStartAnalyzerTask)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;
                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetCompleted(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);

                        pictureBoxArrowDownTop.Visible = true;

                        panelExecutionBandColdCache.Visible = true;
                        panelExecutionTaskColdCache.Visible = true;
                        pictureBoxArrowDownCenter1.Visible  = true;
                        SetCompleted(labelName_Cold_RunTraces, labelResult_Cold_RunTraces);
                        SetCompleted(labelName_Cold_ExecuteMDX, labelResult_Cold_ExecuteMDX);
                        SetCompleted(labelName_Cold_CollectData, labelResult_Cold_CollectData);
                        SetCompleted(labelName_Cold_CalculateMetrics, labelResult_Cold_CalculateMetrics);

                        panelExecutionBandPostCold.Visible = true;
                        panelExecutionTaskPostCold.Visible = true;

                        SetCompleted(labelName_PostCold_RetrieveData, labelResult_PostCold_RetrieveData);

                        pictureBoxArrowDownCenter2.Visible = true;

                        panelExecutionBandWarmCache.Visible = true;
                        panelExecutionTaskWarmCache.Visible = true;
                        SetInProgress(labelName_Warm_RunTraces, labelResult_Warm_RunTraces);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepExecuteStatement)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;
                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetCompleted(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);

                        pictureBoxArrowDownTop.Visible = true;

                        panelExecutionBandColdCache.Visible = true;
                        panelExecutionTaskColdCache.Visible = true;
                        pictureBoxArrowDownCenter1.Visible  = true;
                        SetCompleted(labelName_Cold_RunTraces, labelResult_Cold_RunTraces);
                        SetCompleted(labelName_Cold_ExecuteMDX, labelResult_Cold_ExecuteMDX);
                        SetCompleted(labelName_Cold_CollectData, labelResult_Cold_CollectData);
                        SetCompleted(labelName_Cold_CalculateMetrics, labelResult_Cold_CalculateMetrics);

                        panelExecutionBandPostCold.Visible = true;
                        panelExecutionTaskPostCold.Visible = true;

                        SetCompleted(labelName_PostCold_RetrieveData, labelResult_PostCold_RetrieveData);

                        pictureBoxArrowDownCenter2.Visible = true;

                        panelExecutionBandWarmCache.Visible = true;
                        panelExecutionTaskWarmCache.Visible = true;

                        SetCompleted(labelName_Warm_RunTraces, labelResult_Warm_RunTraces);
                        SetInProgress(labelName_Warm_ExecuteMDX, labelResult_Warm_ExecuteMDX);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepPendingOutcome)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;
                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetCompleted(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);

                        pictureBoxArrowDownTop.Visible = true;

                        panelExecutionBandColdCache.Visible = true;
                        panelExecutionTaskColdCache.Visible = true;
                        pictureBoxArrowDownCenter1.Visible  = true;
                        SetCompleted(labelName_Cold_RunTraces, labelResult_Cold_RunTraces);
                        SetCompleted(labelName_Cold_ExecuteMDX, labelResult_Cold_ExecuteMDX);
                        SetCompleted(labelName_Cold_CollectData, labelResult_Cold_CollectData);
                        SetCompleted(labelName_Cold_CalculateMetrics, labelResult_Cold_CalculateMetrics);

                        panelExecutionBandPostCold.Visible = true;
                        panelExecutionTaskPostCold.Visible = true;

                        SetCompleted(labelName_PostCold_RetrieveData, labelResult_PostCold_RetrieveData);

                        pictureBoxArrowDownCenter2.Visible = true;

                        panelExecutionBandWarmCache.Visible = true;
                        panelExecutionTaskWarmCache.Visible = true;

                        SetCompleted(labelName_Warm_RunTraces, labelResult_Warm_RunTraces);
                        SetInProgress(labelName_Warm_ExecuteMDX, labelResult_Warm_ExecuteMDX); // this task run always with the next one (CollectData)
                        SetInProgress(labelName_Warm_CollectData, labelResult_Warm_CollectData);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepCalculateResult)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;
                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetCompleted(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);

                        pictureBoxArrowDownTop.Visible = true;

                        panelExecutionBandColdCache.Visible = true;
                        panelExecutionTaskColdCache.Visible = true;
                        pictureBoxArrowDownCenter1.Visible  = true;
                        SetCompleted(labelName_Cold_RunTraces, labelResult_Cold_RunTraces);
                        SetCompleted(labelName_Cold_ExecuteMDX, labelResult_Cold_ExecuteMDX);
                        SetCompleted(labelName_Cold_CollectData, labelResult_Cold_CollectData);
                        SetCompleted(labelName_Cold_CalculateMetrics, labelResult_Cold_CalculateMetrics);

                        panelExecutionBandPostCold.Visible = true;
                        panelExecutionTaskPostCold.Visible = true;

                        SetCompleted(labelName_PostCold_RetrieveData, labelResult_PostCold_RetrieveData);

                        pictureBoxArrowDownCenter2.Visible = true;

                        panelExecutionBandWarmCache.Visible = true;
                        panelExecutionTaskWarmCache.Visible = true;

                        SetCompleted(labelName_Warm_RunTraces, labelResult_Warm_RunTraces);
                        SetCompleted(labelName_Warm_ExecuteMDX, labelResult_Warm_ExecuteMDX);
                        SetCompleted(labelName_Warm_CollectData, labelResult_Warm_CollectData);
                        SetInProgress(labelName_Warm_CalculateMetrics, labelResult_Warm_CalculateMetrics);
                        return;

                        #endregion
                    }

                    if (@event == ProcedureEvents.ProcedureAnalyzeStepSendResult)
                    {
                        #region step
                        panelExecutionBandPre.Visible = true;
                        panelExecutionTaskPre.Visible = true;
                        SetCompleted(labelName_Pre_VerifyMDX, labelResult_Pre_VerifyMDX);
                        SetCompleted(labelName_Pre_ClearCache, labelResult_Pre_ClearCache);
                        SetCompleted(labelName_Pre_LoadCubeMDXScript, labelResult_Pre_LoadCubeMDXScript);

                        pictureBoxArrowDownTop.Visible = true;

                        panelExecutionBandColdCache.Visible = true;
                        panelExecutionTaskColdCache.Visible = true;
                        pictureBoxArrowDownCenter1.Visible  = true;
                        SetCompleted(labelName_Cold_RunTraces, labelResult_Cold_RunTraces);
                        SetCompleted(labelName_Cold_ExecuteMDX, labelResult_Cold_ExecuteMDX);
                        SetCompleted(labelName_Cold_CollectData, labelResult_Cold_CollectData);
                        SetCompleted(labelName_Cold_CalculateMetrics, labelResult_Cold_CalculateMetrics);

                        panelExecutionBandPostCold.Visible = true;
                        panelExecutionTaskPostCold.Visible = true;

                        SetCompleted(labelName_PostCold_RetrieveData, labelResult_PostCold_RetrieveData);

                        pictureBoxArrowDownCenter2.Visible = true;

                        panelExecutionBandWarmCache.Visible = true;
                        panelExecutionTaskWarmCache.Visible = true;

                        SetCompleted(labelName_Warm_RunTraces, labelResult_Warm_RunTraces);
                        SetCompleted(labelName_Warm_ExecuteMDX, labelResult_Warm_ExecuteMDX);
                        SetCompleted(labelName_Warm_CollectData, labelResult_Warm_CollectData);
                        SetCompleted(labelName_Warm_CalculateMetrics, labelResult_Warm_CalculateMetrics);

                        pictureBoxArrowDownBottom.Visible = true;

                        panelExecutionBandPostWarm.Visible = true;
                        panelExecutionTaskPostWarm.Visible = true;
                        SetInProgress(labelName_PostWarm_RetrieveData, labelResult_PostWarm_RetrieveData);
                        return;

                        #endregion
                    }

                    #endregion
                }
            }
            finally
            {
                tableLayoutPanelMain.Refresh();
            }
        }