public static void Main(string[] args)
        {
            // Load Config
            var config = new AppConfig()
            {
                ConnectionString  = "UseDevelopmentStorage=true;",
                TableName         = "table",
                GenericQueueName  = "queue",
                ContainerName     = "container",
                FastQueueName     = "fast",
                ModerateQueueName = "moderate",
                SlowQueueName     = "slow",
                ShardQueueName    = "shard"
            };

            // Construct runtime
            using (var manager = new RoleTaskManager <AppConfig>(new Factory(), new DataGenerationFactory(), new TaskFinderFactory <AppConfig>()))
            {
                // Start runtime
                manager.OnStart(config);

                // Run
                manager.Run();

                // Hang on loaded thread
                while (true)
                {
                    Thread.Sleep(1500);
                }
            }
        }
Exemple #2
0
        public void OnStopNoServices()
        {
            var factory = Substitute.For <ITaskFactory <object> >();
            var manager = new RoleTaskManager <object>(factory);

            manager.OnStop();
        }
Exemple #3
0
        public void Run()
        {
            var tasks = new List <IRunnable>();
            var task  = Substitute.For <IRunnable>();

            task.Start();

            tasks.Add(task);

            var starter = Substitute.For <IStarter>();

            var factory = Substitute.For <ITaskFactory <object> >();

            factory.Tasks(Arg.Any <RoleTaskManager <object> >()).Returns(tasks);

            var manager = new RoleTaskManager <object>(new [] { factory }, starter);

            manager.OnStart();
            manager.Run();

            task.Received().Start();
            factory.Received().Tasks(Arg.Any <RoleTaskManager <object> >());

            starter.Received().Start(Arg.Any <IReadOnlyCollection <IRunnable> >());
        }
Exemple #4
0
        public static void Main()
        {
            var manager = new RoleTaskManager <Configuration>(
                new ITaskFactory <Configuration>[] {
                new Factory()
                , new TaskFinderFactory <Configuration>()
            });

            var config = new Configuration()
            {
                ConnectionString  = "UseDevelopmentStorage=true;",
                TableName         = "table",
                GenericQueueName  = "queue",
                ContainerName     = "container",
                FastQueueName     = "fast",
                ModerateQueueName = "moderate",
                SlowQueueName     = "slow",
                ShardQueueName    = "shard"
            };

            if (manager.OnStart(config))
            {
                manager.Run();

                while (true)
                {
                    Thread.Sleep(10000);
                }
            }
        }
Exemple #5
0
        public static void Main(string[] args)
        {
            // Write out standard out
            Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));

            // Load Config
            var config = new AppConfig
            {
                ConnectionString = args[0],
                CompanyQueueName = "companies",
                AtQueueName      = "always",
                TopicName        = "employees"
            };

            // Start tasks
            using (var manager = new RoleTaskManager <AppConfig>(new TaskFactory()))
            {
                // On Start
                manager.OnStart(config);

                // Run
                manager.Run();

                // Pin loading thread
                while (true)
                {
                    Thread.Sleep(1500);
                }
            }
        }
Exemple #6
0
        public void TasksOnInit()
        {
            var factory = Substitute.For <ITaskFactory <object> >();
            var rtm     = new RoleTaskManager <object>(factory);

            Assert.IsNull(rtm.Tasks);
        }
Exemple #7
0
        public void OnStart()
        {
            var factory = Substitute.For <ITaskFactory <object> >();
            var manager = new RoleTaskManager <object>(factory);
            var result  = manager.OnStart();

            Assert.IsTrue(result);
        }
Exemple #8
0
 public virtual bool OnInit(tagRoleTaskInfo pInfo, RoleTaskManager pManager)
 {
     //初始化任务 的数据
     m_pManger           = pManager;
     pTaskInfo           = pInfo;//客户端在加载的时候 无须判断是否需要进行每日清空
     pConfig             = FishConfig.Instance.m_TaskInfo.m_TaskMap[pTaskInfo.TaskID];
     m_TaskEventIsFinish = (pConfig.TaskEventInfo.FinishValue <= pInfo.TaskValue);
     OnJoinTask();
     return(true);
 }
Exemple #9
0
        public void OnStartTasksNull()
        {
            var factory = Substitute.For <ITaskFactory <object> >();

            factory.Tasks(Arg.Any <object>()).Returns((IEnumerable <IRunnable>)null);

            var manager = new RoleTaskManager <object>(factory);
            var result  = manager.OnStart();

            Assert.IsTrue(result);
        }
Exemple #10
0
        public void OnStartNoServices()
        {
            var factory = Substitute.For <ITaskFactory <object> >();

            factory.Tasks(Arg.Any <RoleTaskManager <object> >()).Returns((IEnumerable <IRunnable>)null);

            var manager = new RoleTaskManager <object>(factory);

            manager.OnStart();

            factory.Received().Tasks(Arg.Any <RoleTaskManager <object> >());
        }
Exemple #11
0
        // Please set the following connection strings in app.config for this WebJob to run:
        // AzureWebJobsDashboard and AzureWebJobsStorage
        static void Main()
        {
            var manager = new RoleTaskManager<object>(new Factory());
            manager.OnStart();

            var host = new JobHost();
            manager.Run();

            host.RunAndBlock();

            manager.OnStop();
        }
Exemple #12
0
        // Please set the following connection strings in app.config for this WebJob to run:
        // AzureWebJobsDashboard and AzureWebJobsStorage
        static void Main()
        {
            var manager = new RoleTaskManager <object>(new Factory());

            manager.OnStart();

            var host = new JobHost();

            manager.Run();

            host.RunAndBlock();

            manager.OnStop();
        }
Exemple #13
0
        public void MaintainOrder()
        {
            var factory = new TaskOrderFactory();
            var manager = new RoleTaskManager <object>(factory);

            manager.OnStart();

            var tasks = manager.Tasks as ReadOnlyCollection <IRunnable>;
            var init  = tasks[0];

            Assert.IsNotNull(init as InitializeTask);
            var rr = tasks[1];

            Assert.IsNotNull(rr as RecurringRunner);
        }
        public void Tasks()
        {
            var tasks = new List<IRunnable>();
            var task = Substitute.For<IRunnable>();
            task.Start();

            tasks.Add(task);

            var factory = Substitute.For<ITaskFactory<object>>();
            factory.Tasks(Arg.Any<RoleTaskManager<object>>()).Returns(tasks);

            var manager = new RoleTaskManager<object>(factory);
            manager.OnStart();
            manager.Run();

            Assert.AreEqual(tasks, manager.Tasks);
        }
Exemple #15
0
        public void OnStartTwice()
        {
            var tasks = new List <IRunnable>();
            var task  = Substitute.For <IRunnable>();

            tasks.Add(task);
            var factory = Substitute.For <ITaskFactory <object> >();

            factory.Tasks(Arg.Any <object>()).Returns(tasks);

            var manager = new RoleTaskManager <object>(factory);
            var result  = manager.OnStart();

            Assert.IsTrue(result);
            result = manager.OnStart();
            Assert.IsTrue(result);
        }
        public static void Main(string[] args)
        {
            var config = new AppConfig()
            {
                ConnectionString = "",
            };

            using (var manager = new RoleTaskManager <AppConfig>(new TaskFactory()))
            {
                manager.OnStart(config);

                manager.Run();

                while (true)
                {
                    Thread.Sleep(1500);
                }
            }
        }
Exemple #17
0
        public void Tasks()
        {
            var tasks = new List <IRunnable>();
            var task  = Substitute.For <IRunnable>();

            task.Start();

            tasks.Add(task);

            var factory = Substitute.For <ITaskFactory <object> >();

            factory.Tasks(Arg.Any <RoleTaskManager <object> >()).Returns(tasks);

            var manager = new RoleTaskManager <object>(factory);

            manager.OnStart();
            manager.Run();

            Assert.AreEqual(tasks, manager.Tasks);
        }
Exemple #18
0
        public void RunThrows()
        {
            var services = new List <IRunnable>();
            var service  = Substitute.For <IRunnable>();

            service.When(s => s.Start()).Do(x => { throw new Exception(); });

            services.Add(service);

            var factory = Substitute.For <ITaskFactory <object> >();

            factory.Tasks(Arg.Any <RoleTaskManager <object> >()).Returns(services);

            var manager = new RoleTaskManager <object>(factory);

            manager.OnStart();
            manager.Run();

            factory.Received().Tasks(Arg.Any <RoleTaskManager <object> >());
        }
Exemple #19
0
        public void OnStop()
        {
            var tasks = new List <IRunnable>();
            var task  = Substitute.For <IRunnable>();

            task.Stop();

            tasks.Add(task);

            var factory = Substitute.For <ITaskFactory <object> >();

            factory.Tasks(Arg.Any <RoleTaskManager <object> >()).Returns(tasks);

            var manager = new RoleTaskManager <object>(factory);

            manager.OnStart();
            manager.OnStop();

            task.Received().Stop();
            factory.Received().Tasks(Arg.Any <RoleTaskManager <object> >());
        }
Exemple #20
0
        public void DisposeThrows()
        {
            var tasks = new List <IRunnable>();
            var task  = Substitute.For <IRunnable>();

            task.When(s => s.Dispose()).Do(x => { throw new Exception(); });

            tasks.Add(task);

            var factory = Substitute.For <ITaskFactory <object> >();

            factory.Tasks(Arg.Any <RoleTaskManager <object> >()).Returns(tasks);

            using (var manager = new RoleTaskManager <object>(factory))
            {
                manager.OnStart();
            }

            task.Received().Dispose();
            factory.Received().Tasks(Arg.Any <RoleTaskManager <object> >());
        }
Exemple #21
0
        public static void Main()
        {
            var manager = new RoleTaskManager<Configuration>(new Factory());
            var config = new Configuration()
            {
                ConnectionString = "UseDevelopmentStorage=true;",
                TableName = "table",
                QueueName = "queue",
                ContainerName = "container",
            };

            if (manager.OnStart(config))
            {
                manager.Run();

                while (true)
                {
                    Thread.Sleep(10000);
                }
            }
        }
Exemple #22
0
        public void Factories()
        {
            var tasks = new List <IRunnable>();
            var task  = Substitute.For <IRunnable>();

            tasks.Add(task);

            var factory1 = Substitute.For <ITaskFactory <object> >();

            factory1.Tasks(Arg.Any <RoleTaskManager <object> >()).Returns(tasks);
            var factory2 = Substitute.For <ITaskFactory <object> >();

            factory2.Tasks(Arg.Any <RoleTaskManager <object> >()).Returns(tasks);

            var manager = new RoleTaskManager <object>(new[] { factory1, factory2 });

            manager.OnStart();
            manager.Run();

            Assert.AreEqual(2, manager.Tasks.Count);
        }
Exemple #23
0
        /// <summary>
        /// Scale Up by one unit
        /// </summary>
        /// <param name="factory">Factory</param>
        /// <param name="configuration">Configuration</param>
        /// <param name="taskName">Task Name</param>
        public virtual void ScaleUp(ITaskFactory <T> factory, T configuration, string taskName)
        {
            if (null == factory)
            {
                throw new ArgumentNullException("factory");
            }
            if (string.IsNullOrWhiteSpace(taskName))
            {
                throw new ArgumentException("taskName");
            }

            Trace.TraceInformation("Scaling up: '{0}'.", taskName);

            var unit = new RoleTaskManager <T>(factory);

            var success = unit.OnStart();

            if (success)
            {
                unit.Run();

                if (units.TryAdd(unit))
                {
                    Trace.TraceInformation("Scaled up: '{0}'.", taskName);
                }
                else
                {
                    unit.Dispose();

                    Trace.TraceWarning("Failed to add scale unit: '{0}'.", taskName);
                }
            }
            else
            {
                unit.Dispose();

                Trace.TraceWarning("Failed to start scale unit: '{0}'.", taskName);
            }
        }
Exemple #24
0
        public static void Main(string[] args)
        {
            Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
            foreach (var arg in args)
            {
                Trace.TraceInformation("arg: {0}", arg);
            }

            // Load Config
            var config = new AppConfig
            {
                ConnectionString  = args[0],
                TableName         = "table",
                GenericQueueName  = "queue",
                ContainerName     = "container",
                FastQueueName     = "fast",
                ModerateQueueName = "moderate",
                SlowQueueName     = "slow",
                ShardQueueName    = "shard"
            };

            // Construct runtime
            using (var manager = new RoleTaskManager <AppConfig>(new Factory(), new DataGenerationFactory(), new TaskFinderFactory <AppConfig>()))
            {
                // Start runtime
                manager.OnStart(config);

                // Run
                manager.Run();

                // Hang on loaded thread
                while (true)
                {
                    Thread.Sleep(1500);
                }
            }
        }
 public void RunNoServices()
 {
     var factory = Substitute.For<ITaskFactory<object>>();
     var manager = new RoleTaskManager<object>(factory);
     manager.Run();
 }
        public void RunThrows()
        {
            var services = new List<IRunnable>();
            var service = Substitute.For<IRunnable>();
            service.When(s => s.Start()).Do(x => { throw new Exception(); });

            services.Add(service);

            var factory = Substitute.For<ITaskFactory<object>>();
            factory.Tasks(Arg.Any<RoleTaskManager<object>>()).Returns(services);

            var manager = new RoleTaskManager<object>(factory);
            manager.OnStart();
            manager.Run();

            service.Received().Start();
            factory.Received().Tasks(Arg.Any<RoleTaskManager<object>>());
        }
 public void TasksOnInit()
 {
     var factory = Substitute.For<ITaskFactory<object>>();
     var rtm = new RoleTaskManager<object>(factory);
     Assert.IsNull(rtm.Tasks);
 }
        public void DisposeThrows()
        {
            var tasks = new List<IRunnable>();
            var task = Substitute.For<IRunnable>();
            task.When(s => s.Dispose()).Do(x => { throw new Exception(); });

            tasks.Add(task);

            var factory = Substitute.For<ITaskFactory<object>>();
            factory.Tasks(Arg.Any<RoleTaskManager<object>>()).Returns(tasks);

            using (var manager = new RoleTaskManager<object>(factory))
            {
                manager.OnStart();
            }

            task.Received().Dispose();
            factory.Received().Tasks(Arg.Any<RoleTaskManager<object>>());
        }
        public void Dispose()
        {
            var tasks = new List<IRunnable>();
            var task = Substitute.For<IRunnable>();
            task.Start();

            tasks.Add(task);

            var factory = Substitute.For<ITaskFactory<object>>();
            factory.Tasks(Arg.Any<RoleTaskManager<object>>()).Returns(tasks);

            using (var manager = new RoleTaskManager<object>(factory))
            {
                manager.OnStart();
                manager.Run();
            }

            task.Received().Start();
            task.Received().Dispose();
            factory.Received().Tasks(Arg.Any<RoleTaskManager<object>>());
        }
        public void OnStartNoServices()
        {
            var factory = Substitute.For<ITaskFactory<object>>();
            factory.Tasks(Arg.Any<RoleTaskManager<object>>()).Returns((IEnumerable<IRunnable>)null);

            var manager = new RoleTaskManager<object>(factory);
            manager.OnStart();

            factory.Received().Tasks(Arg.Any<RoleTaskManager<object>>());
        }
        public void OnStartTwice()
        {
            var tasks = new List<IRunnable>();
            var task = Substitute.For<IRunnable>();
            tasks.Add(task);
            var factory = Substitute.For<ITaskFactory<object>>();
            factory.Tasks(Arg.Any<object>()).Returns(tasks);

            var manager = new RoleTaskManager<object>(factory);
            var result = manager.OnStart();
            Assert.IsTrue(result);
            result = manager.OnStart();
            Assert.IsTrue(result);
        }
        public void OnStartTasksNull()
        {
            var factory = Substitute.For<ITaskFactory<object>>();
            factory.Tasks(Arg.Any<object>()).Returns((IEnumerable<IRunnable>)null);

            var manager = new RoleTaskManager<object>(factory);
            var result = manager.OnStart();
            Assert.IsTrue(result);
        }
 public void OnStart()
 {
     var factory = Substitute.For<ITaskFactory<object>>();
     var manager = new RoleTaskManager<object>(factory);
     var result = manager.OnStart();
     Assert.IsTrue(result);
 }