コード例 #1
0
 public SendEmailJob(IJobRunner jobRunner, ITPaaSApplicationAuthentication authn, ITpaasEmailProxy emailProxy, ILoggerFactory logger)
 {
     _log        = logger.CreateLogger <SendEmailJob>();
     _jobRunner  = jobRunner;
     _authn      = authn;
     _tpaasEmail = emailProxy;
 }
コード例 #2
0
        public override void SetUp()
        {
            base.SetUp();

            mockJobStore  = Mocks.CreateMock <IJobStore>();
            mockJobRunner = Mocks.CreateMock <IJobRunner>();
            mockLogger    = Mocks.CreateMock <ILogger>();
            mockTrigger   = Mocks.PartialMock <Trigger>();
            scheduler     = new DefaultScheduler(mockJobStore, mockJobRunner);

            dummyJobData    = new JobData();
            dummyJobSpec    = new JobSpec("foo", "bar", "key", mockTrigger);
            dummyJobDetails = new JobDetails(dummyJobSpec, DateTime.UtcNow);

            isWoken = false;

            // Ensure the scheduler is initialized.
            mockJobStore.RegisterScheduler(scheduler.Guid, scheduler.Name);
            Mocks.Replay(mockJobStore);
            scheduler.Initialize();
            Mocks.Verify(mockJobStore);
            Mocks.BackToRecord(mockJobStore);

            mockJobStore.UnregisterScheduler(scheduler.Guid);

            // Create a separate uninitialized scheduler for certain tests.
            uninitializedScheduler = new DefaultScheduler(mockJobStore, mockJobRunner);
        }
コード例 #3
0
 public BackgroundTaskScheduler(IJobRunner jobRunner, int triggerMilliseconds)
 {
     Requires.Range(triggerMilliseconds > 0, "triggerMilliseconds");
     Log.Debug("Ctor called");
     _jobRunner       = jobRunner;
     _triggerTimespan = TimeSpan.FromMilliseconds(triggerMilliseconds);
 }
コード例 #4
0
		public override void SetUp()
		{
			base.SetUp();

			mockJobStore = Mocks.CreateMock<IJobStore>();
			mockJobRunner = Mocks.CreateMock<IJobRunner>();
			mockLogger = Mocks.CreateMock<ILogger>();
			mockTrigger = Mocks.PartialMock<Trigger>();
			scheduler = new DefaultScheduler(mockJobStore, mockJobRunner);

			dummyJobData = new JobData();
			dummyJobSpec = new JobSpec("foo", "bar", "key", mockTrigger);
			dummyJobDetails = new JobDetails(dummyJobSpec, DateTime.UtcNow);

			isWoken = false;

			// Ensure the scheduler is initialized.
			mockJobStore.RegisterScheduler(scheduler.Guid, scheduler.Name);
			Mocks.Replay(mockJobStore);
			scheduler.Initialize();
			Mocks.Verify(mockJobStore);
			Mocks.BackToRecord(mockJobStore);

			mockJobStore.UnregisterScheduler(scheduler.Guid);

			// Create a separate uninitialized scheduler for certain tests.
			uninitializedScheduler = new DefaultScheduler(mockJobStore, mockJobRunner);
		}
コード例 #5
0
        public InMemoryJobWorkerProcessTests()
        {
            jobRunner = Substitute.For <IJobRunner>();
            schedulerConfiguration = new InMemoryJobSchedulerConfiguration();

            sut = new InMemoryJobWorkerProcess(jobRunner, schedulerConfiguration);
        }
コード例 #6
0
 /// <summary>
 /// Constructor with dependency injection
 /// </summary>
 public ExportController(ILoggerFactory loggerFactory, IExportJob exportJob, ITransferProxyFactory transferProxyFactory, IJobRunner jobRunner)
 {
     log                       = loggerFactory.CreateLogger <ExportController>();
     this.exportJob            = exportJob;
     this.transferProxyFactory = transferProxyFactory;
     this.jobRunner            = jobRunner;
 }
コード例 #7
0
 public ConversionWorkflowTestFactory(IProfileChecker profileChecker, ITargetFileNameComposer targetFileNameComposer, IJobRunner jobRunner, IJobDataUpdater jobDataUpdater, AutosaveOutputFileMover outputFileMover)
 {
     _profileChecker         = profileChecker;
     _targetFileNameComposer = targetFileNameComposer;
     _jobRunner       = jobRunner;
     _jobDataUpdater  = jobDataUpdater;
     _outputFileMover = outputFileMover;
 }
コード例 #8
0
        public SortingJobRunnerTests()
        {
            var loggerMock = new Mock <ILogger <SortingJobRunner> >();

            sorterMock     = new Mock <ISorter <int> >();
            sortingJobMock = new Mock <SortingJob>(sorterMock.Object, Array.Empty <int>());
            runner         = new SortingJobRunner(loggerMock.Object);
        }
コード例 #9
0
 public AutoSaveWorkflow(IJobDataUpdater jobDataUpdater, IJobRunner jobRunner, IProfileChecker profileChecker, ITargetFileNameComposer targetFileNameComposer, AutosaveOutputFileMover outputFileMover)
 {
     JobDataUpdater          = jobDataUpdater;
     _jobRunner              = jobRunner;
     _profileChecker         = profileChecker;
     _targetFileNameComposer = targetFileNameComposer;
     _outputFileMover        = outputFileMover;
 }
コード例 #10
0
 public ConversionWorkflowTestFactory(IProfileChecker profileChecker, ITargetFileNameComposer targetFileNameComposer, IJobRunner jobRunner, IJobDataUpdater jobDataUpdater, IErrorNotifier errorNotifier)
 {
     _profileChecker         = profileChecker;
     _targetFileNameComposer = targetFileNameComposer;
     _jobRunner      = jobRunner;
     _jobDataUpdater = jobDataUpdater;
     _errorNotifier  = errorNotifier;
 }
コード例 #11
0
        public FractalContext(IJobFactory jobFactory, IJobRunner jobRunner, IScreen screen, int maxDegreeOfParalellelism)
        {
            this.jobFactory = jobFactory;
            this.jobRunner  = jobRunner;
            this.screen     = screen;
            this.maxDegreeOfParalellelism = maxDegreeOfParalellelism;

            this.MaxIterations = 100;
        }
コード例 #12
0
        /// <summary>
        /// Clean up at the end of a set of runs. Stops the job manager, timers, etc.
        /// </summary>
        private void Stop()
        {
            timer.Stop();
            stopwatch.Stop();
            jobRunner.Stop();

            IsRunning  = false;
            jobManager = null;
            jobRunner  = null;
        }
コード例 #13
0
 private JobScheduler(IJobFactory factory, IJobRunner runner)
 {
     _jobs       = new ScheduledJobs();
     _activeJobs = new ActiveJobs();
     _disposed   = false;
     _cts        = null;
     _timer      = null;
     _factory    = factory;
     _runner     = runner;
 }
コード例 #14
0
ファイル: AutoSaveWorkflow.cs プロジェクト: sm2x/PDFCreator
 public AutoSaveWorkflow(IJobDataUpdater jobDataUpdater, IJobRunner jobRunner, IProfileChecker profileChecker,
                         ITargetFileNameComposer targetFileNameComposer, AutosaveOutputFileMover outputFileMover, INotificationService notificationService)
 {
     JobDataUpdater          = jobDataUpdater;
     _jobRunner              = jobRunner;
     _profileChecker         = profileChecker;
     _targetFileNameComposer = targetFileNameComposer;
     _outputFileMover        = outputFileMover;
     _notificationService    = notificationService;
 }
コード例 #15
0
 public ProgressViewModel(IJobRunner jobRunner, IInteractionRequest interactionRequest, IDispatcher dispatcher,
                          ITranslationUpdater translationUpdater, InteractiveOutputFileMover outputFileMover)
     : base(translationUpdater)
 {
     _jobRunner          = jobRunner;
     _interactionRequest = interactionRequest;
     _dispatcher         = dispatcher;
     _outputFileMover    = outputFileMover;
     translationUpdater.RegisterAndSetTranslation(tf => _passwordOverlayTranslation = tf.UpdateOrCreateTranslation(_passwordOverlayTranslation));
 }
コード例 #16
0
ファイル: RunCommand.cs プロジェクト: matteo801838/ApsimX
        /// <summary>
        /// Clean up at the end of a set of runs. Stops the job manager, timers, etc.
        /// </summary>
        private void Stop()
        {
            this.explorerPresenter.MainPresenter.RemoveStopHandler(OnStopSimulation);
            timer.Stop();
            stopwatch.Stop();
            jobRunner.Stop();

            IsRunning  = false;
            jobManager = null;
            jobRunner  = null;
        }
コード例 #17
0
ファイル: Shell.cs プロジェクト: asbarkouky85/CodeShellCore
        protected void StartJobs()
        {
            var jobs = RootInjector.GetService <JobConfig>().Jobs;

            foreach (var job in jobs)
            {
                IJobRunner runner = RootInjector.GetService <IJobRunner>();
                runner.Job = job;
                runner.Timer.Start();
            }
        }
 public InstantJobScheduler(
     ILogger <InstantJobScheduler> logger,
     IJsonSerializer jsonSerializer,
     IJobRunner jobRunner,
     IJobDefinitionService jobDefinitionService)
 {
     _logger               = logger;
     _jsonSerializer       = jsonSerializer;
     _jobRunner            = jobRunner;
     _jobDefinitionService = jobDefinitionService;
 }
コード例 #19
0
 public InstantJobScheduler(
     ILog log,
     IJsonSerializer jsonSerializer,
     IJobRunner jobRunner,
     IJobDefinitionService jobDefinitionService)
 {
     _log = log;
     _jsonSerializer = jsonSerializer;
     _jobRunner = jobRunner;
     _jobDefinitionService = jobDefinitionService;
 }
コード例 #20
0
        public static IJobScheduler Create(IJobFactory factory = null, IJobRunner runner = null)
        {
            lock (_locker)
            {
                if (_scheduler == null)
                {
                    _scheduler = new JobScheduler(factory ?? new JobFactory(), runner ?? new JobRunner());
                }

                return(_scheduler);
            }
        }
コード例 #21
0
 public MachinePassesExport(IProjectProxy projectyProxy, IFilterServiceProxy filterProxy,
                            IJobRunner jobRunner, ITPaaSApplicationAuthentication authn,
                            ILoggerFactory logger, IServiceResolution serviceResolution, IExportEmailGenerator emailGenerator)
 {
     log                    = logger.CreateLogger <MachinePassesExport>();
     projects               = projectyProxy;
     filters                = filterProxy;
     this.jobRunner         = jobRunner;
     this.authn             = authn;
     this.serviceResolution = serviceResolution;
     exportEmailGenerator   = emailGenerator;
 }
コード例 #22
0
        /// <summary>
        /// Async wrapper for Commerce Worker Role
        /// </summary>
        /// <returns>
        /// A Task to be waited on
        /// </returns>
        private async Task RunAsync()
        {
            Log.Verbose("Running Commerce Worker role.");

            Log.Verbose("Checking if we can start processing jobs ...");
            while (!ProcessJobs)
            {
                // is it fine ? too fast or slow?
                // we will finetune this after few tries on prod.
                Thread.Sleep(CommerceWorkerConfig.Instance.ProcessingLoopPollingInterval);
            }

            Log.Verbose("Entering processing loop.");

            do
            {
                try
                {
                    Thread.Sleep(CommerceWorkerConfig.Instance.ProcessingLoopPollingInterval);
                    ScheduledJobDetails jobDetails = await Scheduler.GetJobToProcessAsync();

                    if (jobDetails != null)
                    {
                        IJobRunner runner = JobRunnerFactory.Runner(
                            jobDetails, Scheduler, CommerceWorkerConfig.Instance, Log);
                        Log.Information("Running {0} job.", jobDetails.JobType);

                        Tuple <IScheduler, ScheduledJobDetails> timerState = new Tuple <IScheduler, ScheduledJobDetails>(Scheduler, jobDetails);
                        using (Timer tmr = new Timer(ExtendTimeout, timerState, WhenToExtendTimeout, WhenToExtendTimeout))
                        {
                            await runner.RunJobAsync(jobDetails);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Critical("An unknown error occurred during processing.", ex);
                }
            }while (ProcessJobs);

            Log.Information("Processing loop has exited.");

            // We are no longer processing jobs new now...just waiting to be killed when processing ends.
            while (!ExitRole)
            {
#if !IntDebug && !IntRelease
                Log.Information("Wating for role to exit ...");
#endif
                Thread.Sleep(TimeSpan.FromSeconds(1));
            }

            Log.Information("Role is shutting down ...");
        }
コード例 #23
0
 /// <summary>Create a command runner one hasn't already been created.</summary>
 private void Start()
 {
     if (commandRunner == null)
     {
         lock (lockObject)
         {
             if (commandRunner == null)
             {
                 commandRunner = new JobRunnerSync();
                 commandRunner.Run(this);
                 ReadExistingDatabase(Connection);
             }
         }
     }
 }
コード例 #24
0
		/// <summary>
		/// Creates a scheduler with a default name.
		/// </summary>
		/// <param name="jobStore">The job store</param>
		/// <param name="jobRunner">The job runner</param>
		/// <exception cref="ArgumentNullException">Thrown if <paramref name="jobStore"/> or
		/// <paramref name="jobRunner"/> is null</exception>
		public DefaultScheduler(IJobStore jobStore, IJobRunner jobRunner)
		{
			if (jobStore == null)
				throw new ArgumentNullException("jobStore");
			if (jobRunner == null)
				throw new ArgumentNullException("jobRunner");

			this.jobStore = jobStore;
			this.jobRunner = jobRunner;

			logger = NullLogger.Instance;
			errorRecoveryDelayInSeconds = DefaultErrorRecoveryDelayInSeconds;

			guid = Guid.NewGuid();
			name = GetDefaultName();
		}
コード例 #25
0
 public LogsController(
     IRoleRepository roleRepository,
     ILogRepository logRepository,
     IErrorRepository errorRepository,
     IIdentityGateway identityGateway,
     IJobRunner jobRunner,
     IUserRepository userRepository,
     INotificationRepository notificationRepository
     ) : base(identityGateway)
 {
     _logRepository          = logRepository;
     _errorRepository        = errorRepository;
     _jobRunner              = jobRunner;
     _userRepository         = userRepository;
     _roleRepository         = roleRepository;
     _notificationRepository = notificationRepository;
 }
コード例 #26
0
        protected override void OnStartup(StartupEventArgs e)
        {
            _raven = new RavenClient("https://[email protected]/1257005");
            Dispatcher.UnhandledException += Dispatcher_UnhandledException;

            var accent = Settings.Get(SettingsKeys.ProgramAccent, "Orange");

            Messager   = new Messager();
            TabManager = new TabManager(this, Resolve <IModuleLoader>());
            JobRunner  = new JobRunner(this);

            var trayIcon = new Implementation.Tray.TrayIcon(this);

            ThemeManager.ChangeAppStyle(Current,
                                        ThemeManager.GetAccent(accent),
                                        ThemeManager.GetAppTheme("BaseLight"));
        }
コード例 #27
0
        /// <summary>Constructor</summary>
        /// <param name="model">The model the user has selected to run</param>
        /// <param name="presenter">The explorer presenter.</param>
        /// <param name="multiProcess">Use the multi-process runner?</param>
        /// <param name="storage">A storage writer where all data should be stored</param>
        public RunCommand(IModel model, ExplorerPresenter presenter, bool multiProcess, IStorageWriter storage)
        {
            this.jobName           = model.Name;
            this.explorerPresenter = presenter;

            jobManager = Runner.ForSimulations(explorerPresenter.ApsimXFile, model, false);

            if (multiProcess)
            {
                jobRunner = new JobRunnerMultiProcess(storage);
            }
            else
            {
                jobRunner = new JobRunnerAsync();
            }
            jobRunner.JobCompleted     += OnJobCompleded;
            jobRunner.AllJobsCompleted += OnAllJobsCompleted;
        }
コード例 #28
0
        /// <summary>Constructor</summary>
        /// <param name="model">The model the user has selected to run</param>
        /// <param name="presenter">The explorer presenter.</param>
        /// <param name="multiProcess">Use the multi-process runner?</param>
        /// <param name="storage">A storage writer where all data should be stored</param>
        public RunCommand(IModel model, ExplorerPresenter presenter, bool multiProcess)
        {
            this.jobName           = model.Name;
            this.explorerPresenter = presenter;
            this.explorerPresenter.MainPresenter.AddStopHandler(OnStopSimulation);
            jobManager = Runner.ForSimulations(explorerPresenter.ApsimXFile, model, true);

            if (multiProcess)
            {
                jobRunner = new JobRunnerMultiProcess(false);
            }
            else
            {
                jobRunner = new JobRunnerAsync();
            }
            jobRunner.JobCompleted     += OnJobCompleded;
            jobRunner.AllJobsCompleted += OnAllJobsCompleted;
        }
コード例 #29
0
        /// <summary>
        /// Creates a scheduler with a default name.
        /// </summary>
        /// <param name="jobStore">The job store</param>
        /// <param name="jobRunner">The job runner</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="jobStore"/> or
        /// <paramref name="jobRunner"/> is null</exception>
        public DefaultScheduler(IJobStore jobStore, IJobRunner jobRunner)
        {
            if (jobStore == null)
            {
                throw new ArgumentNullException("jobStore");
            }
            if (jobRunner == null)
            {
                throw new ArgumentNullException("jobRunner");
            }

            this.jobStore  = jobStore;
            this.jobRunner = jobRunner;

            logger = NullLogger.Instance;
            errorRecoveryDelayInSeconds = DefaultErrorRecoveryDelayInSeconds;

            guid = Guid.NewGuid();
            name = GetDefaultName();
        }
コード例 #30
0
        /// <summary>Stop all writing to database.</summary>
        public void Stop()
        {
            if (commandRunner != null)
            {
                WaitForIdle();

                WriteSimulationIDs();
                WriteCheckpointIDs();
                WriteAllUnits();

                WaitForIdle();

                commandRunner.Stop();
                commandRunner = null;
                commands.Clear();
                simulationIDs.Clear();
                checkpointIDs.Clear();
                simulationNamesThatHaveBeenCleanedUp.Clear();
                units.Clear();
            }
        }
コード例 #31
0
ファイル: JobRequestConsumer.cs プロジェクト: doowzs/DotOJ
        public override void Start(IConnection connection)
        {
            base.Start(connection);
            var consumer = new AsyncEventingBasicConsumer(Channel);

            consumer.Received += async(ch, ea) =>
            {
                using var scope = _factory.CreateScope();
                var serialized = Encoding.UTF8.GetString(ea.Body.ToArray());
                var message    = JsonConvert.DeserializeObject <JobRequestMessage>(serialized);

                IJobRunner runner = null;
                switch (message.JobType)
                {
                case JobType.JudgeSubmission:
                    runner = new SubmissionRunner(scope.ServiceProvider);
                    break;

                case JobType.CheckPlagiarism:
                    runner = new PlagiarismChecker(scope.ServiceProvider);
                    break;

                default:
                    Logger.LogError($"Unknown job type JobType={message.JobType}");
                    break;
                }
                if (runner is not null)
                {
                    var completeVersion = await runner.HandleJobRequest(message);

                    if (completeVersion > 0)
                    {
                        await _producer.SendAsync(message.JobType, message.TargetId, completeVersion);
                    }
                }
                Channel.BasicAck(ea.DeliveryTag, false);
            };
            Channel.BasicQos(0, 1, false);
            Channel.BasicConsume(Queue, false, consumer); // disable auto ack for work scheduling
        }
コード例 #32
0
        public void SetUp()
        {
            _jobInfo = new JobInfo
            {
                Metadata = new Metadata
                {
                    Title = "Test"
                }
            };
            _profile = new ConversionProfile();
            _job     = new Job(_jobInfo, _profile, new JobTranslations(), new Accounts());
            _job.OutputFiles.Add("X:\\test.pdf");
            _profileChecker = Substitute.For <IProfileChecker>();
            _profileChecker.CheckJob(Arg.Any <Job>()).Returns(_validActionResult);

            _query               = Substitute.For <ITargetFileNameComposer>();
            _jobRunner           = Substitute.For <IJobRunner>();
            _jobDataUpdater      = Substitute.For <IJobDataUpdater>();
            _notificationService = Substitute.For <INotificationService>();

            _workflow = new AutoSaveWorkflow(_jobDataUpdater, _jobRunner, _profileChecker, _query, null, _notificationService);
        }
コード例 #33
0
 public TestHelper(IJobRunner jobRunner)
 {
     _jobRunner            = jobRunner;
     _ghostscriptDiscovery = new PaketGhostscriptDiscovery();
 }