/// <summary> /// Creates a new execution context using the specified settings. /// </summary> /// <param name="settings">Context settings</param> public DefaultTaskExecutionContext(TaskExecutionContextSettings settings) { _queueProvider = ResourceConnectionFactory.CreateResourceConnection <INamedQueueProvider>(settings.ProviderKey); _properties = new Dictionary <string, object>(); foreach (var property in settings.Properties.Values) { var value = Convert.ChangeType(property.Value, property.Type, CultureInfo.InvariantCulture); _properties.Add(property.Name, value); } }
public void TestInit() { AppConfigurationManager.Reset(); TypeResolver.Reset(); ResourceConnectionProviderRegistry.Reset(); ResourceConnectionFactory.Reset(); var settings = new TaskExecutionContextSettings("queue"); s_Context = new DefaultTaskExecutionContext(settings); s_PeekPolicy = new TestPeekPolicy(TimeSpan.FromMilliseconds(10)); }
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); }
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); }