public SendEmailJob(IJobRunner jobRunner, ITPaaSApplicationAuthentication authn, ITpaasEmailProxy emailProxy, ILoggerFactory logger) { _log = logger.CreateLogger <SendEmailJob>(); _jobRunner = jobRunner; _authn = authn; _tpaasEmail = emailProxy; }
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); }
public BackgroundTaskScheduler(IJobRunner jobRunner, int triggerMilliseconds) { Requires.Range(triggerMilliseconds > 0, "triggerMilliseconds"); Log.Debug("Ctor called"); _jobRunner = jobRunner; _triggerTimespan = TimeSpan.FromMilliseconds(triggerMilliseconds); }
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); }
public InMemoryJobWorkerProcessTests() { jobRunner = Substitute.For <IJobRunner>(); schedulerConfiguration = new InMemoryJobSchedulerConfiguration(); sut = new InMemoryJobWorkerProcess(jobRunner, schedulerConfiguration); }
/// <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; }
public ConversionWorkflowTestFactory(IProfileChecker profileChecker, ITargetFileNameComposer targetFileNameComposer, IJobRunner jobRunner, IJobDataUpdater jobDataUpdater, AutosaveOutputFileMover outputFileMover) { _profileChecker = profileChecker; _targetFileNameComposer = targetFileNameComposer; _jobRunner = jobRunner; _jobDataUpdater = jobDataUpdater; _outputFileMover = outputFileMover; }
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); }
public AutoSaveWorkflow(IJobDataUpdater jobDataUpdater, IJobRunner jobRunner, IProfileChecker profileChecker, ITargetFileNameComposer targetFileNameComposer, AutosaveOutputFileMover outputFileMover) { JobDataUpdater = jobDataUpdater; _jobRunner = jobRunner; _profileChecker = profileChecker; _targetFileNameComposer = targetFileNameComposer; _outputFileMover = outputFileMover; }
public ConversionWorkflowTestFactory(IProfileChecker profileChecker, ITargetFileNameComposer targetFileNameComposer, IJobRunner jobRunner, IJobDataUpdater jobDataUpdater, IErrorNotifier errorNotifier) { _profileChecker = profileChecker; _targetFileNameComposer = targetFileNameComposer; _jobRunner = jobRunner; _jobDataUpdater = jobDataUpdater; _errorNotifier = errorNotifier; }
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; }
/// <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; }
private JobScheduler(IJobFactory factory, IJobRunner runner) { _jobs = new ScheduledJobs(); _activeJobs = new ActiveJobs(); _disposed = false; _cts = null; _timer = null; _factory = factory; _runner = runner; }
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; }
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)); }
/// <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; }
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; }
public InstantJobScheduler( ILog log, IJsonSerializer jsonSerializer, IJobRunner jobRunner, IJobDefinitionService jobDefinitionService) { _log = log; _jsonSerializer = jsonSerializer; _jobRunner = jobRunner; _jobDefinitionService = jobDefinitionService; }
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); } }
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; }
/// <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 ..."); }
/// <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); } } } }
/// <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(); }
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; }
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")); }
/// <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; }
/// <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; }
/// <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(); }
/// <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(); } }
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 }
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); }
public TestHelper(IJobRunner jobRunner) { _jobRunner = jobRunner; _ghostscriptDiscovery = new PaketGhostscriptDiscovery(); }