Esempio n. 1
0
        static void Main(string[] args)
        {
            ChannelServices.RegisterChannel(new TcpChannel(), false);
            GridJobController controller = (GridJobController)Activator.GetObject(typeof(GridJobController), "tcp://localhost:3000/Grid");

            if (controller == null)
            {
                Console.WriteLine("could not locate server");
                return;
            }


            JobExecutor exe = new JobExecutor();

            for (int i = 0; i < 100; i++)
            {
                var job = controller.GetJob();
                if (job == null)
                {
                    break;
                }
                Console.WriteLine($"Берем работу: " + i);
                //System.Threading.Thread.Sleep(500);
                controller.SetResult(job, exe.Execute(job));
            }

            Console.WriteLine("END");
            Console.ReadKey();
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            ChannelServices.RegisterChannel(new TcpChannel(), false);
            GridJobController controller = (GridJobController)Activator.GetObject(typeof(GridJobController), "tcp://localhost:3000/Grid");

            if (controller == null)
            {
                Console.WriteLine("could not locate server");
                return;
            }

            bool q = false;

            while (!q)
            {
                try
                {
                    JobExecutor exe     = new JobExecutor();
                    var         start   = DateTime.Now;
                    var         hasJobs = false;

                    for (int i = 0; i < 100; i++)
                    {
                        var job = controller.GetJob();
                        if (job == null)
                        {
                            break;
                        }

                        hasJobs = true;
                        //Console.WriteLine($"Берем работу: " + i);
                        var res = exe.Execute(job);


                        controller.SetResult(res);
                    }
                    var end = DateTime.Now;
                    if (hasJobs)
                    {
                        Console.WriteLine((end - start).TotalMilliseconds + " ms.");
                    }
                    System.Threading.Thread.Sleep(500);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }

                if (Console.KeyAvailable && Console.ReadKey().Key == ConsoleKey.Q)
                {
                    break;
                }
            }
        }
Esempio n. 3
0
        public async Task Should_not_throw_on_lock_exceptions()
        {
            //arrange
            var lockManager = new Mock <ISingletonLockManager>();

            lockManager.Setup(x => x.TryLockAsync(typeof(DummySchedule).FullName, TimeSpan.FromSeconds(60), It.IsAny <CancellationToken>()))
            .Throws <Exception>();
            var processor = new Mock <IProcessSchedule <DummySchedule> >();
            var di        = new Mock <IDependencyInjection>();

            di.Setup(x => x.GetScope()).Returns(di.Object);
            di.Setup(x => x.GetInstance <IProcessSchedule <DummySchedule> >()).Returns(processor.Object);
            var executor = new JobExecutor <DummySchedule>(Mock.Of <ILog>(), lockManager.Object, di.Object);
            //act & assert
            await executor.Execute(Mock.Of <IJobExecutionContext>());
        }
Esempio n. 4
0
        public async Task Should_not_execute_processor_when_no_lock()
        {
            //arrange
            var lockManager = new Mock <ISingletonLockManager>();

            lockManager.Setup(x => x.TryLockAsync(typeof(DummySchedule).FullName, TimeSpan.FromSeconds(60), It.IsAny <CancellationToken>()))
            .ReturnsAsync((ISingletonLockHandle)null);
            var processor = new Mock <IProcessSchedule <DummySchedule> >();
            var di        = new Mock <IDependencyInjection>();

            di.Setup(x => x.GetScope()).Returns(di.Object);
            di.Setup(x => x.GetInstance <IProcessSchedule <DummySchedule> >()).Returns(processor.Object);
            var executor = new JobExecutor <DummySchedule>(Mock.Of <ILog>(), lockManager.Object, di.Object);
            //act
            await executor.Execute(Mock.Of <IJobExecutionContext>());

            //assert
            processor.Verify(x => x.ProcessAsync(It.IsAny <CancellationToken>()), Times.Never);
        }
Esempio n. 5
0
        public void RunUntil(Func <bool> predicate, TimeSpan timeout)
        {
            var cancellationTokenSource = new CancellationTokenSource(timeout);

            while (!cancellationTokenSource.Token.IsCancellationRequested)
            {
                if (predicate())
                {
                    break;
                }

                // TODO: Don't busy wait.
                IJob job;
                if (_jobQueue.Pop(out job))
                {
                    _jobExecutor.Execute(job);
                }
            }

            if (cancellationTokenSource.Token.IsCancellationRequested)
            {
                throw CreateTimeoutException(timeout);
            }
        }
Esempio n. 6
0
 public TestContext Act()
 {
     _sut.Execute(_context);
     return(this);
 }