Пример #1
0
 /// <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)));
 }
Пример #2
0
 /// <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));
 }
Пример #3
0
 /// <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;
     }
 }
Пример #4
0
 /// <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);
        }
Пример #9
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);
 }
Пример #10
0
 /// <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));
 }