public void Execute_Processes_ListTable()
        {
            var connection = ConnectionUtils.CreateConnection();

            connection.StateDataList.Insert(new LiteList
            {
                Id       = ObjectId.NewObjectId(),
                Key      = "key",
                ExpireAt = DateTime.Now.AddMonths(-1)
            });
            var manager = CreateManager();

            manager.Execute(_token);
            var count = connection
                        .StateDataList
                        .Count();

            Assert.Equal(0, count);
        }
        public void Ctor_WaitForLock_OnlySingleLockCanBeAcquired()
        {
            var  connection         = ConnectionUtils.CreateConnection();
            var  numThreads         = 10;
            long concurrencyCounter = 0;
            var  manualResetEvent   = new ManualResetEventSlim();
            var  success            = new bool[numThreads];

            // Spawn multiple threads to race each other.
            var threads = Enumerable.Range(0, numThreads).Select(i => new Thread(() =>
            {
                // Wait for the start signal.
                manualResetEvent.Wait();

                // Attempt to acquire the distributed lock.
                using (new SQLiteDistributedLock("resource1", TimeSpan.FromSeconds(10), connection, new SQLiteStorageOptions()))
                {
                    // Find out if any other threads managed to acquire the lock.
                    var oldConcurrencyCounter = Interlocked.CompareExchange(ref concurrencyCounter, 1, 0);

                    // The old concurrency counter should be 0 as only one thread should be allowed to acquire the lock.
                    success[i] = oldConcurrencyCounter == 0;

                    Interlocked.MemoryBarrier();

                    // Hold the lock for some time.
                    Thread.Sleep(100);

                    Interlocked.Decrement(ref concurrencyCounter);
                }
            })).ToList();

            threads.ForEach(t => t.Start());

            manualResetEvent.Set();

            threads.ForEach(t => Assert.True(t.Join(TimeSpan.FromSeconds(120)), "Thread is hanging unexpected"));

            // All the threads should report success.
            Interlocked.MemoryBarrier();
            Assert.DoesNotContain(false, success);
        }
        public void Execute_Processes_HashTable()
        {
            var connection = ConnectionUtils.CreateConnection();

            connection.Database.Insert(new Hash()
            {
                Key      = "key",
                Field    = "field",
                Value    = "",
                ExpireAt = DateTime.UtcNow.AddMonths(-1)
            });
            var manager = CreateManager();

            manager.Execute(_token);
            var count = connection
                        .HashRepository
                        .Count();

            Assert.Equal(0, count);
        }
Example #4
0
        public void Execute_Processes_HashTable()
        {
            var connection = ConnectionUtils.CreateConnection();

            connection.StateDataHash.Insert(new LiteHash
            {
                Id       = ObjectId.NewObjectId(),
                Key      = "key",
                Field    = "field",
                Value    = "",
                ExpireAt = DateTime.UtcNow.AddMonths(-1)
            });
            var manager = CreateManager();

            manager.Execute(_token);
            var count = connection
                        .StateDataHash
                        .Count();

            Assert.Equal(0, count);
        }
Example #5
0
        public void Execute_Processes_AggregatedCounterTable()
        {
            using (var connection = ConnectionUtils.CreateConnection())
            {
                // Arrange
                connection.AggregatedCounter.InsertOne(new AggregatedCounterDto
                {
                    Key      = "key",
                    Value    = 1,
                    ExpireAt = DateTime.UtcNow.AddMonths(-1)
                });

                var manager = CreateManager();

                // Act
                manager.Execute(_token);

                // Assert
                Assert.Equal(0, connection.Counter.Find(new BsonDocument()).Count());
            }
        }
Example #6
0
        public void Execute_Processes_ListTable()
        {
            using (var connection = ConnectionUtils.CreateConnection())
            {
                // Arrange
                connection.List.InsertOne(new ListDto
                {
                    Id       = ObjectId.GenerateNewId(),
                    Key      = "key",
                    ExpireAt = connection.GetServerTimeUtc().AddMonths(-1)
                });

                var manager = CreateManager();

                // Act
                manager.Execute(_token);

                // Assert
                var count = connection.List.Count(new BsonDocument());
                Assert.Equal(0, count);
            }
        }
        public void Execute_Processes_CounterTable()
        {
            using (var connection = ConnectionUtils.CreateConnection())
            {
                // Arrange
                AsyncHelper.RunSync(() => connection.Counter.InsertOneAsync(new CounterDto
                {
                    Id       = ObjectId.GenerateNewId(),
                    Key      = "key",
                    Value    = 1,
                    ExpireAt = connection.GetServerTimeUtc().AddMonths(-1)
                }));

                var manager = CreateManager();

                // Act
                manager.Execute(_token);

                // Assert
                var count = AsyncHelper.RunSync(() => connection.Counter.CountAsync(new BsonDocument()));
                Assert.Equal(0, count);
            }
        }
        public void Execute_Processes_CounterTable()
        {
            using (var connection = ConnectionUtils.CreateConnection())
            {
                // Arrange
                connection.JobGraph.InsertOne(new CounterDto
                {
                    Id       = ObjectId.GenerateNewId(),
                    Key      = "key",
                    Value    = 1L,
                    ExpireAt = DateTime.UtcNow.AddMonths(-1)
                });

                var manager = CreateManager();

                // Act
                manager.Execute(_token);

                // Assert
                var count = connection.JobGraph.OfType <CounterDto>().Count(new BsonDocument());
                Assert.Equal(0, count);
            }
        }
        public void Execute_Processes_HashTable()
        {
            using (var connection = ConnectionUtils.CreateConnection())
            {
                // Arrange
                connection.Hash.Insert(new HashDto
                {
                    Id       = ObjectId.GenerateNewId(),
                    Key      = "key",
                    Field    = "field",
                    Value    = "",
                    ExpireAt = connection.GetServerTimeUtc().AddMonths(-1)
                });

                var manager = CreateManager();

                // Act
                manager.Execute(_token);

                // Assert
                var count = connection.Hash.Count();
                Assert.Equal(0, count);
            }
        }
Example #10
0
        public void Execute_Processes_JobTable()
        {
            using (var connection = ConnectionUtils.CreateConnection())
            {
                // Arrange
                connection.Job.InsertOne(new JobDto
                {
                    Id             = 1,
                    InvocationData = "",
                    Arguments      = "",
                    CreatedAt      = connection.GetServerTimeUtc(),
                    ExpireAt       = connection.GetServerTimeUtc().AddMonths(-1),
                });

                var manager = CreateManager();

                // Act
                manager.Execute(_token);

                // Assert
                var count = connection.Job.Count(new BsonDocument());
                Assert.Equal(0, count);
            }
        }
        public void Execute_Processes_JobTable()
        {
            using (var connection = ConnectionUtils.CreateConnection())
            {
                // Arrange
                connection.JobGraph.InsertOne(new JobDto
                {
                    Id             = ObjectId.GenerateNewId(),
                    InvocationData = "",
                    Arguments      = "",
                    CreatedAt      = DateTime.UtcNow,
                    ExpireAt       = DateTime.UtcNow.AddMonths(-1),
                });

                var manager = CreateManager();

                // Act
                manager.Execute(_token);

                // Assert
                var count = connection.JobGraph.OfType <JobDto>().Count(new BsonDocument());
                Assert.Equal(0, count);
            }
        }
 private IDbConnection CreateConnection()
 {
     return(ConnectionUtils.CreateConnection());
 }
 public OracleJobQueueTests()
 {
     _connection = ConnectionUtils.CreateConnection();
     _storage    = new OracleStorage(_connection);
 }
Example #14
0
        private static void UseConnection(Action <HangfireDbContext> action)
        {
            var connection = ConnectionUtils.CreateConnection();

            action(connection);
        }
Example #15
0
 public MySqlJobQueueTests()
 {
     _connection = ConnectionUtils.CreateConnection();
     _storage    = new MySqlStorage(_connection);
 }
Example #16
0
 public MySqlJobQueueTests()
 {
     _connection = ConnectionUtils.CreateConnection();
     _storage    = new ElasticStorage.ElasticStorage(_connection, _storageOptions);
 }
        public void Ctor_ThrowsAnException_IfMongoStorageOptionsIsNull()
        {
            var exception = Assert.Throws <ArgumentNullException>(() => new MongoWriteOnlyTransaction(ConnectionUtils.CreateConnection(), _queueProviders, null));

            Assert.Equal("storageOptions", exception.ParamName);
        }
        private void UseConnection(Action <HangfireDbContext> action)
        {
            HangfireDbContext connection = ConnectionUtils.CreateConnection();

            action(connection);
        }
        public void Ctor_ThrowsAnException_IfProvidersCollectionIsNull()
        {
            var exception = Assert.Throws <ArgumentNullException>(() => new SQLiteWriteOnlyTransaction(ConnectionUtils.CreateConnection(), null));

            Assert.Equal("queueProviders", exception.ParamName);
        }