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(); }
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; } } }
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>()); }
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); }
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); } }
public TestContext Act() { _sut.Execute(_context); return(this); }