public void TestInit() { _timers = new List <TestTimer>(); _timeProvider = new TestTimeProvider(); using (var db = new TestDbContext()) { //db.Database.EnsureDeleted(); //db.Database.EnsureCreated(); db.Database.ExecuteSqlRaw("delete from massive_jobs.message_queue"); db.Database.ExecuteSqlRaw("delete from massive_jobs.single_consumer_lock"); } JobsBuilder.Configure() .WithSettings("tests.", s => { s.PublishBatchSize = 300; s.ImmediateWorkersBatchSize = 1000; s.MaxDegreeOfParallelismPerWorker = 2; s.ImmediateWorkersCount = 2; s.ScheduledWorkersCount = 2; s.PeriodicWorkersCount = 2; }) .RegisterInstance <ITimeProvider>(_timeProvider) .RegisterScoped <ITimer>(f => { var timer = new TestTimer(); _timers.Add(timer); return(timer); }) .WithSqlServerBroker <TestDbContext>() .RegisterScoped <TestDbContext, TestDbContext>() .Build(); }
public JobsSorter(IStringValidator stringValidator, JobsBuilder jobsBuilder, JobsValidator jobsValidator, ISortAlgorithm sortAlgorithm) { _stringValidator = stringValidator; _jobsBuilder = jobsBuilder; _jobsValidator = jobsValidator; _sortAlgorithm = sortAlgorithm; }
private static void Main() { // initialize Serilog Log.Logger = new LoggerConfiguration() .MinimumLevel.Warning() .WriteTo.Console() .CreateLogger(); // initialize MassiveJobs JobsBuilder.Configure() .WithSerilog() .WithSettings("examples.") .WithRabbitMqBroker() .Build(); Console.WriteLine("Testing periodic jobs. Press Enter to quit!"); PeriodicJob.PublishPeriodic("test_periodic", "0/2 * * ? * *"); Console.ReadLine(); JobsBuilder.DisposeJobs(); }
public static JobsBuilder WithSqlServerBroker <TDbContext>(this JobsBuilder builder) where TDbContext : DbContext { builder.RegisterScoped <IMessagePublisher, SqlServerMessagePublisher <TDbContext> >(); builder.RegisterSingleton <IMessageConsumer, SqlServerMessageConsumer <TDbContext> >(); builder.RegisterSingleton <ISqlDialect, SqlDialects.SqlServerDialect>(); return(builder); }
public static JobsBuilder WithInMemoryBroker(this JobsBuilder jobs, InMemoryMessages messages = null) { jobs.RegisterInstance(messages ?? new InMemoryMessages()); jobs.RegisterSingleton <IMessagePublisher, InMemoryMessagePublisher>(); jobs.RegisterSingleton <IMessageConsumer, InMemoryMessageConsumer>(); return(jobs); }
public void AddJob_ThrowArgumentException_CronExpressionIsInvalid(String cronExpression) { var serviceCollection = new ServiceCollection(); var jobsBuilder = new JobsBuilder(serviceCollection); Assert.ThrowsAny <Exception>(() => jobsBuilder.AddJob <EmptyJob1>(cronExpression)); Assert.ThrowsAny <Exception>(() => jobsBuilder.AddJob(cronExpression, () => new EmptyJob1())); Assert.ThrowsAny <Exception>(() => jobsBuilder.AddJob(cronExpression, sp => new EmptyJob1())); }
public IEnumerable <Job> GetJobs(JobsContext jobsContext) { var registeredTests = Assembly.Load(settings.SearchInAssemblyName).GetTypes().Where(x => x != typeof(ITestCase) && x != typeof(ITestCase) && typeof(ITestCase).IsAssignableFrom(x) && !x.IsAbstract); var jobsBuilder = new JobsBuilder <Type, TestCaseJob>( x => ReflectionHelper.GectConstructorParamTypes(x).Select(t => t.ParameterType), (t, d) => new TestCaseJob(t, (TestJobsContext)jobsContext, d.ToArray())); return(jobsBuilder.GetJobs(registeredTests)); }
public static JobsBuilder WithRabbitMqBroker(this JobsBuilder builder, Action <RabbitMqSettings> configureAction = null) { var rabbitMqSettings = new RabbitMqSettings(); configureAction?.Invoke(rabbitMqSettings); builder.RegisterInstance(rabbitMqSettings); builder.RegisterSingleton <IMessagePublisher, RabbitMqMessagePublisher>(); builder.RegisterSingleton <IMessageConsumer, RabbitMqMessageConsumer>(); return(builder); }
public void GetJobListTest_EmptyString() { // arrange var jobString = ""; var expected = new List <Job>(); var jobsBuilder = new JobsBuilder(); // act var actual = jobsBuilder.GetJobList(jobString.ToUpper()); // assert CollectionAssert.AreEqual(expected, actual); }
public void AddJob_CronExpressionIsValid(String cronExpression) { var serviceCollection = new ServiceCollection(); var jobsBuilder = new JobsBuilder(serviceCollection); jobsBuilder.AddJob <EmptyJob1>(cronExpression); jobsBuilder.AddJob(cronExpression, () => new EmptyJob1()); jobsBuilder.AddJob(cronExpression, sp => new EmptyJob1()); var serviceProvider = serviceCollection.BuildServiceProvider(); var options = serviceProvider.GetRequiredService <IOptions <JobsContext> >(); Assert.Equal(3, options.Value.JobItems.Count); }
public static JobsSorter CreateJobsSorter() { if (instance == null) { var stringValidator = new StringValidatorForCharJobs(); var jobsBuilder = new JobsBuilder(); var jobsValidator = new JobsValidator(); var sortAlgorithm = new TopologicalSortAlgorithm(); instance = new JobsSorter(stringValidator, jobsBuilder, jobsValidator, sortAlgorithm); } return(instance); }
public void GetJobListTest_SimpleJob() { // arrange var jobString = "a"; var expected = new List <Job> { jobA }; var jobsBuilder = new JobsBuilder(); // act var actual = jobsBuilder.GetJobList(jobString.ToUpper()); // assert CollectionAssert.AreEqual(expected, actual, new JobsComparerByNameThenByFirstDifferentDependency()); }
public void AddJob_SameJobMultipleTimes() { var serviceCollection = new ServiceCollection(); var jobsBuilder = new JobsBuilder(serviceCollection); jobsBuilder .AddJob <EmptyJob1>("30 0 * * *") .AddJob <EmptyJob1>("30 1 * * *") .AddJob <EmptyJob1>("30 2 * * *"); var serviceProvider = serviceCollection.BuildServiceProvider(); var options = serviceProvider.GetRequiredService <IOptions <JobsContext> >(); var localDateTimeOffset = new DateTimeOffset(DateTime.Today); var jobStorageItems = options.Value.GetJobsToRun(localDateTimeOffset, localDateTimeOffset.AddHours(2)); Assert.NotEmpty(options.Value.JobItems); Assert.Equal(2, jobStorageItems.Length); }
public void TestInit() { _counter = new Counter(); _messages = new InMemoryMessages(); _timers = new List <TestTimer>(); _timeProvider = new TestTimeProvider(); JobsBuilder.Configure() .RegisterInstance(_settings) .RegisterInstance(_counter) .RegisterInstance <ITimeProvider>(_timeProvider) .RegisterScoped <ITimer>(f => { var timer = new TestTimer(); _timers.Add(timer); return(timer); }) .WithInMemoryBroker(_messages) .Build(); }
public void TestInit() { _performCount = 0; JobsBuilder.Configure() .WithSettings("tests.", s => { s.PublishBatchSize = 300; s.ImmediateWorkersBatchSize = 1000; s.MaxDegreeOfParallelismPerWorker = 2; s.ImmediateWorkersCount = 2; s.ScheduledWorkersCount = 2; s.PeriodicWorkersCount = 2; }) .RegisterInstance <IJobTypeProvider>(new TypeProvider()) .RegisterInstance <IJobSerializer>(new SimpleBinarySerializer()) .WithRabbitMqBroker(s => { s.VirtualHost = "massivejobs.tests"; s.PrefetchCount = 1000; }) .Build(); }
public static JobsBuilder WithLog4Net(this JobsBuilder builder) { builder.RegisterSingleton <IJobLoggerFactory, LoggerWrapperFactory>(); return(builder); }
public void TestCleanup() { JobsBuilder.DisposeJobs(); }