Example #1
0
        public void PollingJobs()
        {
            ITaskProcessorConfiguration configuration = AppConfigConfigurationUnitTests.GetTaskProcessorConfiguration("PollingJobs");

            Assert.AreEqual(3, configuration.PollingJobs.Count());

            IPollingJobConfiguration config = configuration.PollingJobs.First();

            Assert.AreEqual(typeof(FakePollingJob), config.ImplementationType);
            Assert.AreEqual(TimeSpan.FromMinutes(1), config.PollInterval);
            Assert.IsTrue(config.IsMaster);
            Assert.IsFalse(config.IsActive);
            Assert.IsFalse(config.IsConcurrent);

            config = configuration.PollingJobs.Skip(1).First();

            Assert.AreEqual(typeof(FakePollingJob2), config.ImplementationType);
            Assert.AreEqual(TimeSpan.FromMinutes(2), config.PollInterval);
            Assert.IsFalse(config.IsMaster);
            Assert.IsTrue(config.IsActive);
            Assert.IsFalse(config.IsConcurrent);

            config = configuration.PollingJobs.Skip(2).First();

            Assert.AreEqual(typeof(FakePollingJob3), config.ImplementationType);
            Assert.AreEqual(TimeSpan.FromMinutes(3), config.PollInterval);
            Assert.IsFalse(config.IsMaster);
            Assert.IsTrue(config.IsActive);
            Assert.IsTrue(config.IsConcurrent);
        }
Example #2
0
        public void PollingQueues()
        {
            ITaskProcessorConfiguration configuration = AppConfigConfigurationUnitTests.GetTaskProcessorConfiguration("PollingQueues");

            Assert.AreEqual(3, configuration.PollingQueues.Count());

            ITaskProcessorPollingQueueConfiguration config = configuration.PollingQueues.First();

            Assert.AreEqual("A", config.Key);
            Assert.AreEqual(TimeSpan.FromMinutes(1), config.PollInterval);
            Assert.IsTrue(config.IsMaster);
            Assert.IsFalse(config.IsActive);
            Assert.IsFalse(config.IsConcurrent);
            Assert.AreEqual(0, config.MaxWorkers);

            config = configuration.PollingQueues.Skip(1).First();

            Assert.AreEqual("B", config.Key);
            Assert.AreEqual(TimeSpan.FromMinutes(2), config.PollInterval);
            Assert.IsFalse(config.IsMaster);
            Assert.IsTrue(config.IsActive);
            Assert.IsFalse(config.IsConcurrent);
            Assert.AreEqual(5, config.MaxWorkers);

            config = configuration.PollingQueues.Skip(2).First();

            Assert.AreEqual("C", config.Key);
            Assert.AreEqual(TimeSpan.FromMinutes(3), config.PollInterval);
            Assert.IsFalse(config.IsMaster);
            Assert.IsTrue(config.IsActive);
            Assert.IsTrue(config.IsConcurrent);
            Assert.AreEqual(10, config.MaxWorkers);
        }
Example #3
0
        public void NegativeMaxTasks2()
        {
            ITaskProcessorConfiguration configuration = AppConfigConfigurationUnitTests.GetTaskProcessorConfiguration("NegativeMaxTasks2");

            if (configuration.Tasks[typeof(FakeTask)].MaxWorkers > 0)
            {
            }
        }
Example #4
0
        public void NegativeMaxTasks1()
        {
            ITaskProcessorConfiguration configuration = AppConfigConfigurationUnitTests.GetTaskProcessorConfiguration("NegativeMaxTasks1");

            if (configuration.Tasks.MaxWorkers > 0)
            {
            }
        }
Example #5
0
        public void GetPollingJobImplementationTypeNotDescendant2()
        {
            ITaskProcessorConfiguration configuration = AppConfigConfigurationUnitTests.GetTaskProcessorConfiguration("Empty");

            if (configuration.PollingJobs[typeof(ICloneable)] == null)
            {
            }
        }
Example #6
0
        public void GetPollingJobNullImplementationType()
        {
            ITaskProcessorConfiguration configuration = AppConfigConfigurationUnitTests.GetTaskProcessorConfiguration("Empty");

            if (configuration.PollingJobs[null] == null)
            {
            }
        }
Example #7
0
        public void GetTaskJobNullTaskType()
        {
            ITaskProcessorConfiguration configuration = AppConfigConfigurationUnitTests.GetTaskProcessorConfiguration("Empty");

            if (configuration.Tasks[null] == null)
            {
            }
        }
        public ConfigurationWindow(ITaskProcessorConfiguration configuration)
        {
            this.InitializeComponent();

            this.configuration = configuration;

            this.DataContext = this;
        }
        /// <summary>
        /// Serializes a task processor configuration to a dictionary to be stored in Redis.
        /// </summary>
        /// <param name="configuration">The configuration to serialize.</param>
        /// <param name="result">The dictionary where to add the serialized key/value pairs.</param>
        /// <param name="prefix">The prefix to add before each dictionary key.</param>
        internal static void Serialize(ITaskProcessorConfiguration configuration, IDictionary <string, string> result, string prefix)
        {
            if (!string.IsNullOrEmpty(prefix) && !prefix.EndsWith(".", StringComparison.Ordinal))
            {
                prefix = prefix + ".";
            }

            RedisTaskProcessorConfigurationRepository.Serialize(configuration.Tasks, result, prefix + "Tasks");
            RedisTaskProcessorConfigurationRepository.Serialize(configuration.PollingQueues, result, prefix + "PollingQueues");
            RedisTaskProcessorConfigurationRepository.Serialize(configuration.PollingJobs, result, prefix + "PollingJobs");
        }
Example #10
0
        public void NoMaxTasks()
        {
            ITaskProcessorConfiguration configuration = AppConfigConfigurationUnitTests.GetTaskProcessorConfiguration("NoMaxTasks");

            Assert.IsNull(configuration.Tasks.MaxWorkers);

            ITaskJobConfiguration jobConfig = configuration.Tasks[typeof(IFakeTask)];

            Assert.IsNotNull(jobConfig);

            Assert.AreEqual(typeof(IFakeTask), jobConfig.TaskType);

            Assert.IsNull(jobConfig.MaxWorkers);
        }
        /// <summary>
        /// Merges a <see cref="ITaskProcessorConfiguration"/> instance with another.
        /// </summary>
        /// <param name="source">The <see cref="ITaskProcessorConfiguration"/> instance to update.</param>
        /// <param name="other">The <see cref="ITaskProcessorConfiguration"/> to merge with.</param>
        /// <exception cref="ArgumentNullException">Parameter <paramref name="source"/> or <paramref name="other"/> is null.</exception>
        public static void MergeWith(this ITaskProcessorConfiguration source, ITaskProcessorConfiguration other)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            if (other == null)
            {
                throw new ArgumentNullException("other");
            }

            source.Tasks.MergeWith(other.Tasks);
            source.PollingJobs.MergeWith(other.PollingJobs);
            source.PollingQueues.MergeWith(other.PollingQueues);
        }
Example #12
0
        public void UndefinedTask()
        {
            ITaskProcessorConfiguration configuration = AppConfigConfigurationUnitTests.GetTaskProcessorConfiguration("Empty");

            Assert.IsNull(configuration.Tasks[typeof(IFakeTask)]);
        }
        /// <summary>
        /// Deserializes a task processor configuration from a Redis dictionary.
        /// </summary>
        /// <param name="values">The dictionary stored in Redis.</param>
        /// <param name="result">The instance where to deserialize the data.</param>
        /// <param name="prefix">The prefix that has been added before each dictionary key during serialization.</param>
        internal static void Deserialize(IReadOnlyDictionary <string, string> values, ITaskProcessorConfiguration result, string prefix)
        {
            if (!string.IsNullOrEmpty(prefix) && !prefix.EndsWith(".", StringComparison.Ordinal))
            {
                prefix = prefix + ".";
            }

            RedisTaskProcessorConfigurationRepository.Deserialize(values, result.Tasks, prefix + "Tasks");
            RedisTaskProcessorConfigurationRepository.Deserialize(values, result.PollingQueues, prefix + "PollingQueues");
            RedisTaskProcessorConfigurationRepository.Deserialize(values, result.PollingJobs, prefix + "PollingJobs");
        }