public void Ctor_CreatesInstance() { var options = new EFCoreStorageOptions { DistributedLockTimeout = new TimeSpan(1, 0, 0), QueuePollInterval = new TimeSpan(0, 1, 0), JobExpirationCheckInterval = new TimeSpan(2, 0, 0), CountersAggregationInterval = new TimeSpan(0, 2, 0), }; var instance = new EFCoreStorage(OptionsActionStub, options); Assert.NotNull(Assert.IsType <DbContextOptions <HangfireContext> >( instance.GetFieldValue("_contextOptions"))); Assert.Same(options, Assert.IsType <EFCoreStorageOptions>( instance.GetFieldValue("_options"))); Assert.NotNull(instance.DefaultQueueProvider); Assert.Same(instance, instance.DefaultQueueProvider.GetFieldValue("_storage")); Assert.NotNull(instance.QueueProviders); Assert.Empty(instance.QueueProviders); Assert.Equal(options.DistributedLockTimeout, instance.DistributedLockTimeout); Assert.Equal(options.QueuePollInterval, instance.QueuePollInterval); Assert.Equal(options.JobExpirationCheckInterval, instance.JobExpirationCheckInterval); Assert.Equal(options.CountersAggregationInterval, instance.CountersAggregationInterval); }
public static void Ctor_Throws_WhenStorageParameterIsNull() { EFCoreStorage storage = null; Assert.Throws <ArgumentNullException>(nameof(storage), () => new EFCoreJobQueue(storage)); }
public static void Ctor_Throws_WhenStorageParameterIsNull() { EFCoreStorage storage = null; var queuedJob = new HangfireQueuedJob(); Assert.Throws <ArgumentNullException>(nameof(storage), () => new EFCoreFetchedJob(storage, queuedJob)); }
public static void GetQueueProvider_Throws_WhenQueueParameterIsNull() { var storage = new EFCoreStorage(OptionsActionStub, new EFCoreStorageOptions()); string queue = null; Assert.Throws <ArgumentNullException>(nameof(queue), () => storage.GetQueueProvider(queue)); }
public void Execute_DoWorkCorrectly() { UseContextSavingChanges(context => { for (int i = 0; i < 10; i++) { context.Add(new HangfireCounter { Key = "counter1", Value = 1 }); } for (int i = 0; i < 20; i++) { context.Add(new HangfireCounter { Key = "counter2", Value = -1 }); } for (int i = 0; i < 5; i++) { context.Add(new HangfireCounter { Key = "counter3", Value = 20 }); } context.Add(new HangfireCounter { Key = "counter3", Value = -1 }); }); var storage = new EFCoreStorage(OptionsAction, new EFCoreStorageOptions { CountersAggregationInterval = new TimeSpan(1), }); var instance = new CountersAggregator(storage); var source = new CancellationTokenSource(); instance.Execute(source.Token); UseContext(context => { var result = context.Set <HangfireCounter>().ToArray(); Assert.Equal(3, result.Length); Assert.Equal(10, result.Single(x => x.Key == "counter1").Value); Assert.Equal(-20, result.Single(x => x.Key == "counter2").Value); Assert.Equal(99, result.Single(x => x.Key == "counter3").Value); }); }
public ExpirationManager(EFCoreStorage storage) { if (storage is null) { throw new ArgumentNullException(nameof(storage)); } _storage = storage; }
public EFCoreJobQueueProvider(EFCoreStorage storage) { if (storage is null) { throw new ArgumentNullException(nameof(storage)); } _storage = storage; }
public static void GetQueueProvider_ReturnsDefaultProvider_WhenProviderIsNotRegistered() { var storage = new EFCoreStorage(OptionsActionStub, new EFCoreStorageOptions()); var queue = "queue"; var result = storage.GetQueueProvider(queue); Assert.NotNull(result); Assert.Same(storage.DefaultQueueProvider, result); }
public static void GetComponents_ReturnsAllNeededComponents() { var storage = new EFCoreStorage(OptionsActionStub, new EFCoreStorageOptions()); var result = storage.GetComponents(); var componentTypes = result.Select(x => x.GetType()).ToArray(); Assert.Contains(typeof(ExpirationManager), componentTypes); Assert.Contains(typeof(CountersAggregator), componentTypes); }
public void GetMonitoringApi_ReturnsCorrectResult() { var options = new EFCoreStorageOptions(); var instance = new EFCoreStorage(OptionsAction, options); var result = instance.GetMonitoringApi(); Assert.NotNull(result); var api = Assert.IsType <EFCoreStorageMonitoringApi>(result); Assert.Same(instance, Assert.IsType <EFCoreStorage>(result.GetFieldValue("_storage"))); }
public void Execute_Throws_WhenCancellationTokenRequested() { var storage = new EFCoreStorage(OptionsAction, new EFCoreStorageOptions { CountersAggregationInterval = new TimeSpan(1), }); storage.RegisterDatabaseInitializer(context => context.Database.EnsureCreated()); var instance = new CountersAggregator(storage); var source = new CancellationTokenSource(0); Assert.Throws <OperationCanceledException>( () => instance.Execute(source.Token)); }
public void GetConnection_ReturnsCorrectResult() { var options = new EFCoreStorageOptions(); var instance = new EFCoreStorage(OptionsAction, options); var result = instance.GetConnection(); Assert.NotNull(result); var connection = Assert.IsType <EFCoreStorageConnection>(result); Assert.Same(instance, Assert.IsType <EFCoreStorage>( connection.GetFieldValue("_storage"))); }
public static void GetQueueProvider_ReturnsRegisteredProvider() { var storage = new EFCoreStorage(OptionsActionStub, new EFCoreStorageOptions()); var dictionary = storage.QueueProviders; var provider = new Mock <IPersistentJobQueueProvider>().Object; var queue = "queue"; dictionary[queue] = provider; var result = storage.GetQueueProvider(queue); Assert.NotNull(result); Assert.Same(provider, result); }