/// <summary> /// Parse the specified configuration settings /// </summary> /// <param name="element">Element holding configuration settings</param> protected override void ParseFromXml(XElement element) { element.ProcessOptionalElement(DEFAULT_CONTEXT, item => { DefaultContext = new TaskExecutionContextSettings(item); }); element.ProcessContainerItems(TASK_PROCESSORS, TaskProcessorSettings.ROOT, item => _taskProcessors.Add(new TaskProcessorSettings(item))); }
/// <summary> /// Parse the specified configuration settings /// </summary> /// <param name="element">Element holding configuration settings</param> protected override void ParseFromXml(XElement element) { Name = element.NonWhiteSpaceStringAttribute(NAME); ProcessorType = element.NonWhiteSpaceStringAttribute(PROCESSOR_TYPE); TaskType = element.TypeAttribute(TASK_TYPE); ArgumentType = element.OptionalTypeAttribute(ARGUMENT_TYPE); ResultType = element.OptionalTypeAttribute(RESULT_TYPE); PeekPolicyType = element.OptionalTypeAttribute(PEEK_POLICY); InstanceCount = element.OptionalIntAttribute(INSTANCE_COUNT, 1); element.ProcessOptionalElement(EXECUTION_CONTEXT, item => Context = new TaskExecutionContextSettings(item)); element.ProcessOptionalElement(PROPERTIES, item => _propertysSettings.ReadFromXml(item)); }
/// <summary> /// Creates a new instance of this class form the specified parameters. /// </summary> /// <param name="name">Task processor name</param> /// <param name="processorType">Processor type</param> /// <param name="taskType">Task type</param> /// <param name="instanceCount">Number of instances</param> /// <param name="context">Task execution copntext</param> /// <param name="properties">Collection of properties</param> public TaskProcessorSettings(string name, string processorType, Type taskType, int instanceCount, TaskExecutionContextSettings context, PropertySettingsCollection properties = null) { Name = name; ProcessorType = processorType; TaskType = taskType; InstanceCount = instanceCount; Context = context; if (properties != null) { _propertysSettings = properties; } }
/// <summary> /// Creates a new instance of this class form the specified parameters. /// </summary> /// <param name="name">Task processor name</param> /// <param name="processorType">Processor type</param> /// <param name="taskType">Task type</param> /// <param name="instanceCount">Number of instances</param> /// <param name="context">Task execution copntext</param> /// <param name="properties">Collection of properties</param> public TaskProcessorSettings(string name, string processorType, Type taskType, int instanceCount, TaskExecutionContextSettings context, PropertySettingsCollection properties = null) { Name = name; ProcessorType = processorType; TaskType = taskType; InstanceCount = instanceCount; Context = context; if (properties != null) { _propertysSettings = properties; } }
public void ReadAnWriteWorksAsExpected() { // --- Arrange const string PROVIDER_KEY = "queue"; var properties = new TypedPropertySettingsCollection( new List<TypedPropertySettings> { new TypedPropertySettings("prop1", "23", typeof (int)), new TypedPropertySettings("prop2", "24", typeof (int)), new TypedPropertySettings(new TypedPropertySettings("prop3", "23", typeof (string)).WriteToXml("temp")), }); var settings = new TaskExecutionContextSettings(PROVIDER_KEY, properties); // --- Act var element = settings.WriteToXml("temp"); var config = new TaskExecutionContextSettings(element); // --- Assert config.ProviderKey.ShouldEqual(PROVIDER_KEY); config.Properties.ShouldHaveCountOf(3); }
/// <summary> /// Creates a new instance with the specified settings /// </summary> /// <param name="context">Default execution context</param> /// <param name="processors">Task processor settings</param> public BackgroundTaskHostSettings(TaskExecutionContextSettings context, IEnumerable<TaskProcessorSettings> processors) { DefaultContext = context; _taskProcessors = new List<TaskProcessorSettings>(processors); }
/// <summary> /// Parse the specified configuration settings /// </summary> /// <param name="element">Element holding configuration settings</param> protected override void ParseFromXml(XElement element) { element.ProcessOptionalElement(DEFAULT_CONTEXT, item => { DefaultContext = new TaskExecutionContextSettings(item); }); element.ProcessContainerItems(TASK_PROCESSORS, TaskProcessorSettings.ROOT, item => _taskProcessors.Add(new TaskProcessorSettings(item))); }
public void ReadAndWriteWorksAsExpected() { // --- Arrange const string PROVIDER_KEY = "queue"; var defaultProps = new TypedPropertySettingsCollection( new List<TypedPropertySettings> { new TypedPropertySettings("prop1", "23", typeof (int)), new TypedPropertySettings("prop2", "24", typeof (int)), new TypedPropertySettings("prop3", "23", typeof (string)), }); var defaultContext = new TaskExecutionContextSettings(PROVIDER_KEY, defaultProps); var props = new TypedPropertySettingsCollection( new List<TypedPropertySettings> { new TypedPropertySettings("prop1", "99", typeof (int)), new TypedPropertySettings("prop2", "100", typeof (int)), new TypedPropertySettings("prop3", "101", typeof (string)), }); var optionalContext = new TaskExecutionContextSettings(PROVIDER_KEY, props); var taskProps = new PropertySettingsCollection( new List<PropertySettings> { new PropertySettings("prop1", "1000"), new PropertySettings("prop2", "1001"), }); var proc1 = new TaskProcessorSettings("Proc1", TaskProcessorSettings.SCHEDULED_TYPE, typeof(TaskBase), 3, optionalContext, taskProps); var proc2 = new TaskProcessorSettings("Proc2", TaskProcessorSettings.QUEUED_TYPE, typeof(TaskBase), 2, null, taskProps); var proc3 = new TaskProcessorSettings("Proc3", TaskProcessorSettings.DOUBLE_QUEUED, typeof(TaskBase), 1, null); var host = new BackgroundTaskHostSettings(defaultContext, new List<TaskProcessorSettings> { proc1, proc2, proc3 }); // --- Act var element = host.WriteToXml("BackgroundTaskHost"); Console.WriteLine(element); var config = new BackgroundTaskHostSettings(element); // --- Assert config.DefaultContext.ShouldNotBeNull(); config.DefaultContext.ProviderKey.ShouldEqual(PROVIDER_KEY); config.DefaultContext.Properties.ShouldHaveCountOf(3); config.DefaultContext.Properties["prop1"].Type.ShouldEqual(typeof(int)); config.DefaultContext.Properties["prop1"].Value.ShouldEqual("23"); config.DefaultContext.Properties["prop2"].Type.ShouldEqual(typeof(int)); config.DefaultContext.Properties["prop2"].Value.ShouldEqual("24"); config.DefaultContext.Properties["prop3"].Type.ShouldEqual(typeof(string)); config.DefaultContext.Properties["prop3"].Value.ShouldEqual("23"); var taskProcessors = config.GetTaskProcessors(); taskProcessors.ShouldHaveCountOf(3); taskProcessors[0].Name.ShouldEqual("Proc1"); taskProcessors[0].ProcessorType.ShouldEqual(TaskProcessorSettings.SCHEDULED_TYPE); taskProcessors[0].TaskType.ShouldEqual(typeof(TaskBase)); taskProcessors[0].InstanceCount.ShouldEqual(3); taskProcessors[0].Context.ShouldNotBeNull(); taskProcessors[0].Context.Properties.ShouldHaveCountOf(3); taskProcessors[0].Context.Properties["prop1"].Type.ShouldEqual(typeof(int)); taskProcessors[0].Context.Properties["prop1"].Value.ShouldEqual("99"); taskProcessors[0].Context.Properties["prop2"].Type.ShouldEqual(typeof(int)); taskProcessors[0].Context.Properties["prop2"].Value.ShouldEqual("100"); taskProcessors[0].Context.Properties["prop3"].Type.ShouldEqual(typeof(string)); taskProcessors[0].Context.Properties["prop3"].Value.ShouldEqual("101"); taskProcessors[0].Properties.ShouldHaveCountOf(2); taskProcessors[0].Properties["prop1"].Value.ShouldEqual("1000"); taskProcessors[0].Properties["prop2"].Value.ShouldEqual("1001"); taskProcessors[1].Name.ShouldEqual("Proc2"); taskProcessors[1].ProcessorType.ShouldEqual(TaskProcessorSettings.QUEUED_TYPE); taskProcessors[1].TaskType.ShouldEqual(typeof(TaskBase)); taskProcessors[1].InstanceCount.ShouldEqual(2); taskProcessors[1].Context.ShouldBeNull(); taskProcessors[1].Properties.ShouldHaveCountOf(2); taskProcessors[1].Properties["prop1"].Value.ShouldEqual("1000"); taskProcessors[1].Properties["prop2"].Value.ShouldEqual("1001"); taskProcessors[2].Name.ShouldEqual("Proc3"); taskProcessors[2].ProcessorType.ShouldEqual(TaskProcessorSettings.DOUBLE_QUEUED); taskProcessors[2].TaskType.ShouldEqual(typeof(TaskBase)); taskProcessors[2].InstanceCount.ShouldEqual(1); taskProcessors[2].Context.ShouldBeNull(); taskProcessors[2].Properties.ShouldHaveCountOf(0); }
/// <summary> /// Creates a new instance with the specified settings /// </summary> /// <param name="context">Default execution context</param> /// <param name="processors">Task processor settings</param> public BackgroundTaskHostSettings(TaskExecutionContextSettings context, IEnumerable <TaskProcessorSettings> processors) { DefaultContext = context; _taskProcessors = new List <TaskProcessorSettings>(processors); }
/// <summary> /// Parse the specified configuration settings /// </summary> /// <param name="element">Element holding configuration settings</param> protected override void ParseFromXml(XElement element) { Name = element.NonWhiteSpaceStringAttribute(NAME); ProcessorType = element.NonWhiteSpaceStringAttribute(PROCESSOR_TYPE); TaskType = element.TypeAttribute(TASK_TYPE); ArgumentType = element.OptionalTypeAttribute(ARGUMENT_TYPE); ResultType = element.OptionalTypeAttribute(RESULT_TYPE); PeekPolicyType = element.OptionalTypeAttribute(PEEK_POLICY); InstanceCount = element.OptionalIntAttribute(INSTANCE_COUNT, 1); element.ProcessOptionalElement(EXECUTION_CONTEXT, item => Context = new TaskExecutionContextSettings(item)); element.ProcessOptionalElement(PROPERTIES, item => _propertysSettings.ReadFromXml(item)); }