public static void Main()
        {
            var webJobsDashboard = CloudConfigurationManager.GetSetting("AzureWebJobsDashboard");
            var webJobsStorage = CloudConfigurationManager.GetSetting("AzureWebJobsStorage");
            var storageAcc = CloudConfigurationManager.GetSetting("StorageAccount");

            if (string.IsNullOrWhiteSpace(webJobsStorage) || string.IsNullOrWhiteSpace(storageAcc) || string.IsNullOrWhiteSpace(webJobsDashboard))
            {
                Console.WriteLine("Please add the Azure Storage account credentials ['StorageAccount' & 'AzureWebJobsStorage' & 'AzureWebJobsDashboard'] in App.config");
                Console.Read();
                return;
            }
            else
            {
                var config = new TaskConfiguration()
                {
                    ConnectionString = storageAcc,
                    StorageElements = new StorageElements(),
                };

                var factory = new ImageTaskFactory();
                foreach (var task in factory.Initialize(config))
                {
                    task.Start();
                }

                var host = new JobHost();
                host.RunAndBlock();
            }
        }
        public void Constructor()
        {
            var config = new TaskConfiguration()
            {
                Versions = new Versions(),
                StorageElements = new StorageElements(),
            };

            new ImageDequeueSetup(config);
        }
        public void Get()
        {
            var config = new TaskConfiguration()
            {
                Versions = new Versions(),
                StorageElements = new StorageElements(),
                ConnectionString = connectionString,
            };

            var setup = new ImageDequeueSetup(config);
            var p = setup.Processor();

            Assert.IsNotNull(p as Processor);
        }
        public void TasksNull()
        {
            var elements = Substitute.For<IStorageElements>();
            elements.Container.Returns(Guid.NewGuid().ToString());
            elements.Table.Returns(Guid.NewGuid().ToString());
            elements.Queue.Returns(Guid.NewGuid().ToString());
            var config = new TaskConfiguration
            {
                StorageElements = elements,
                Versions = Substitute.For<IVersions>(),
                ConnectionString = connectionString,
            };

            var factory = new ImageTaskFactory();
            var tasks = factory.Tasks(config);

            Assert.IsNotNull(tasks);
        }
        public void HasStorageQueueAutoScaler()
        {
            var elements = Substitute.For<IStorageElements>();
            elements.Container.Returns(Guid.NewGuid().ToString());
            elements.Table.Returns(Guid.NewGuid().ToString());
            elements.Queue.Returns(Guid.NewGuid().ToString());
            var config = new TaskConfiguration
            {
                StorageElements = elements,
                Versions = Substitute.For<IVersions>(),
                ConnectionString = connectionString,
            };

            var factory = new ImageTaskFactory();
            var tasks = factory.Tasks(config);

            Assert.IsNotNull(tasks);
            var task = (from t in tasks
                        where t.GetType() == typeof(StorageQueueAutoScaler<ImageQueued>)
                        select t).FirstOrDefault();

            Assert.IsNotNull(task);
        }
        public void InitializeStorageTask()
        {
            var elements = Substitute.For<IStorageElements>();
            elements.Container.Returns(Guid.NewGuid().ToString());
            elements.Table.Returns(Guid.NewGuid().ToString());
            elements.Queue.Returns(Guid.NewGuid().ToString());
            var config = new TaskConfiguration
            {
                StorageElements = elements,
                Versions = Substitute.For<IVersions>(),
                ConnectionString = connectionString,
            };

            var factory = new ImageTaskFactory();
            var tasks = factory.Tasks(config);

            Assert.IsNotNull(tasks);
            var inits = from t in tasks
                        where t.GetType() == typeof(InitializeStorageTask)
                        select t;

            Assert.IsNotNull(inits);
            Assert.AreEqual(4, inits.Count());
        }