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);
    }
示例#2
0
    public static void Ctor_Throws_WhenStorageParameterIsNull()
    {
        EFCoreStorage storage = null;

        Assert.Throws <ArgumentNullException>(nameof(storage),
                                              () => new EFCoreJobQueue(storage));
    }
示例#3
0
    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));
    }
示例#5
0
    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")));
    }
示例#11
0
    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);
    }