/// <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>(); }
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); }
/// <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; }