Пример #1
0
        /// <summary>
        /// Determines whether the specified execution order falls within the specified phase.
        /// </summary>
        /// <param name="phase">The phase.</param>
        /// <param name="executionOrder">The execution order.</param>
        /// <returns>
        ///   <c>true</c> if the specified execution order falls within the specified phase; otherwise, <c>false</c>.
        /// </returns>
        public static bool Contains(this ResourceExecutionPhase phase, int executionOrder)
        {
            int phaseMin = (int)phase;
            int phaseMax = phaseMin + 999;

            return(executionOrder >= phaseMin && executionOrder < phaseMax);
        }
        protected void RunEngine(ResourceExecutionPhase phase)
        {
            var engine = GetEngine(phase);

            if (!IsHalted)
            {
                if (!engine.Activities.Any())
                {
                    TraceFactory.Logger.Debug("Activity queue empty. This phase will not execute.");
                }
                else
                {
                    try
                    {
                        if (engine.GetType() == typeof(ScheduleBasedEngine))
                        {
                            ((ScheduleBasedEngine)engine).Run(_statusLogger);
                        }
                        else
                        {
                            engine.Run();
                        }
                    }
                    catch (Exception ex)
                    {
                        TraceFactory.Logger.Debug(ex.Message);

                        if (ex is WorkerHaltedException)
                        {
                            IsHalted = true;
                        }
                    }
                }
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="OfficeWorkerActivityController"/> class.
 /// </summary>
 public OfficeWorkerActivityController(string clientControllerHostName)
 {
     _clientControllerHostName = clientControllerHostName;
     IsHalted     = false;
     CurrentPhase = ResourceExecutionPhase.Main;
     Engines      = new Dictionary <ResourceExecutionPhase, EngineBase>();
 }
Пример #4
0
        private void activity_TabControl_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (SelectedExecutionPhase)
            {
            case ResourceExecutionPhase.Main:
                _selectedPhase            = ResourceExecutionPhase.Main;
                activity_ToolStrip.Parent = main_TabPage;
                activity_GridView.Parent  = main_TabPage;

                RefreshGrid();
                break;

            case ResourceExecutionPhase.Setup:
                _selectedPhase            = ResourceExecutionPhase.Setup;
                activity_ToolStrip.Parent = setup_TabPage;
                activity_GridView.Parent  = setup_TabPage;
                RefreshGrid();
                break;

            case ResourceExecutionPhase.Teardown:
                _selectedPhase            = ResourceExecutionPhase.Teardown;
                activity_ToolStrip.Parent = teardown_TabPage;
                activity_GridView.Parent  = teardown_TabPage;
                RefreshGrid();
                break;
            }
        }
        /// <summary>
        /// Get the Engine
        /// </summary>
        /// <param name="phase"></param>
        /// <returns></returns>
        protected override EngineBase GetEngine(ResourceExecutionPhase phase)
        {
            EngineBase engine = null;

            if (!Engines.TryGetValue(phase, out engine))
            {
                var detail = GetFilteredWorkerDetail(phase);
                engine = ObjectFactory.Create <EngineBase>(detail.ExecutionMode, detail);
                engine.ActivityStateChanged += OnActivityStateChanged;
                Engines.Add(phase, engine);
            }

            return(engine);
        }
        protected virtual EngineBase GetEngine(ResourceExecutionPhase phase)
        {
            EngineBase engine = null;

            if (!Engines.TryGetValue(phase, out engine))
            {
                var details = GetFilteredWorkerDetail(phase);
                if (phase != ResourceExecutionPhase.Main)
                {
                    details.ExecutionMode = ExecutionMode.Iteration;
                    details.RepeatCount   = 1;
                }
                TraceFactory.Logger.Debug("Creating engine for {0} Phase".FormatWith(phase));
                engine = ObjectFactory.Create <EngineBase>(details.ExecutionMode, details);
                engine.ActivityStateChanged += OnActivityStateChanged;
                Engines.Add(phase, engine);
            }

            return(engine);
        }
Пример #7
0
        /// <summary>
        /// Initializes this instance with the specified object.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <exception cref="ControlTypeMismatchException">
        /// Thrown when an object of incorrect type is passed to this instance.
        ///   </exception>
        public override void Initialize(object entity)
        {
            _adminWorker = entity as AdminWorker;
            if (_adminWorker == null)
            {
                throw new ControlTypeMismatchException(entity, typeof(AdminWorker));
            }

            // Load the configurations into the helper class
            foreach (var item in _adminWorker.VirtualResourceMetadataSet)
            {
                WorkerExecutionPlan plan = null;
                if (item.ExecutionPlan == null)
                {
                    plan = new WorkerExecutionPlan();
                }
                else
                {
                    plan = LegacySerializer.DeserializeDataContract <WorkerExecutionPlan>(item.ExecutionPlan);
                }

                _mainConfigurations.Add(new WorkerActivityConfiguration(item, plan));
            }

            // Load the activities into the binding list
            activity_TabControl.SelectTab(main_TabPage);
            _selectedPhase = ResourceExecutionPhase.Main;
            activity_GridView.BestFitColumns();

            // Set up data bindings
            name_TextBox.DataBindings.Add("Text", _adminWorker, "Name");
            description_TextBox.DataBindings.Add("Text", _adminWorker, "Description");

            platform_ComboBox.SetPlatform(_adminWorker.Platform, VirtualResourceType.AdminWorker);
            testcaseid_numericUpDown.Value = _adminWorker.TestCaseId;
            ConfigureEnableAllButton();
            CreateActivityDropDownMenu();

            RefreshGrid();
        }
        protected OfficeWorkerDetail GetFilteredWorkerDetail(ResourceExecutionPhase phase)
        {
            TraceFactory.Logger.Debug("Phase: {0}".FormatWith(phase));

            // Create a copy of the manifest and trim out activities that are not part of this phase
            var manifest     = SystemManifest.Deserialize(GlobalDataStore.Manifest.Serialize());
            var workerDetail = manifest.Resources.GetWorker <OfficeWorkerDetail>(GlobalDataStore.ResourceInstanceId);

            int count = workerDetail.MetadataDetails.Count();

            TraceFactory.Logger.Debug("Initial activity count {0}".FormatWith(count));

            var toRemove = workerDetail.MetadataDetails.Where(n => n.Plan.Phase != phase).ToList();

            foreach (var detail in toRemove)
            {
                workerDetail.MetadataDetails.Remove(detail);
            }

            count = workerDetail.MetadataDetails.Count();
            TraceFactory.Logger.Debug("Final activity count {0}".FormatWith(count));

            return(workerDetail);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="phase"></param>
 public VirtualResourceEventBusRunArgs(ResourceExecutionPhase phase)
 {
     Phase = phase;
 }