Наследование: Raven.Database.Tasks.DatabaseTask
Пример #1
0
        public void CanAddAndRemoveMultipleTasks_InSingleTx()
        {
            db.TransactionalStorage.Batch(actions =>
            {
                for (int i = 0; i < 3; i++)
                {
                    var task = new RemoveFromIndexTask(100);
                    task.AddKey("tasks/" + i);
                    actions.Tasks.AddTask(task, SystemTime.UtcNow);
                }
            });

            db.TransactionalStorage.Batch(actions =>
            {
                var foundWork = new Reference<bool>();
                var task = actions.Tasks.GetMergedTask<RemoveFromIndexTask>(
                    x => MaxTaskIdStatus.Updated,
                    x => { },
                    foundWork);
                Assert.NotNull(task);
                Assert.False(foundWork.Value);

                foundWork = new Reference<bool>();
                task = actions.Tasks.GetMergedTask<RemoveFromIndexTask>(
                    x => MaxTaskIdStatus.Updated,
                    x => { },
                    foundWork);
                Assert.Null(task);
                Assert.False(foundWork.Value);
            });

            db.TransactionalStorage.Batch(actions =>
            {
                var isIndexStale = actions.Staleness.IsIndexStale(100, null, null);
                Assert.False(isIndexStale);
            });
        }
Пример #2
0
        public void DontRemoveTasksWhenReachingMaxTaskId()
        {
            db.TransactionalStorage.Batch(actions =>
            {
                for (int i = 0; i < 3; i++)
                {
                    var task = new RemoveFromIndexTask(100);
                    task.AddKey("tasks/" + i);
                    actions.Tasks.AddTask(task, SystemTime.UtcNow);
                }
            });

            db.TransactionalStorage.Batch(actions =>
            {
                var foundWork = new Reference<bool>();
                var task = actions.Tasks.GetMergedTask<RemoveFromIndexTask>(
                        x => MaxTaskIdStatus.ReachedMaxTaskId,
                        x => { },
                        foundWork);
                Assert.Null(task);
                Assert.True(foundWork.Value);

                for (int i = 0; i < 3; i++)
                {
                    foundWork = new Reference<bool>();
                    task = actions.Tasks.GetMergedTask<RemoveFromIndexTask>(
                    x => MaxTaskIdStatus.MergeDisabled,
                    x => { },
                    foundWork);
                    Assert.NotNull(task);
                    Assert.False(foundWork.Value);
                }

                task = actions.Tasks.GetMergedTask<RemoveFromIndexTask>(
                    x => MaxTaskIdStatus.MergeDisabled,
                    x => { },
                    foundWork);
                Assert.Null(task);
                Assert.False(foundWork.Value);
            });

            db.TransactionalStorage.Batch(actions =>
            {
                var isIndexStale = actions.Staleness.IsIndexStale(100, null, null);
                Assert.False(isIndexStale);
            });
        }
Пример #3
0
        public void CanUpdateMaxTaskId()
        {
            db.TransactionalStorage.Batch(actions =>
            {
                for (int i = 0; i < 3; i++)
                {
                    var task = new RemoveFromIndexTask(100);
                    task.AddKey("tasks/" + i);
                    actions.Tasks.AddTask(task, SystemTime.UtcNow);
                }
            });

            db.TransactionalStorage.Batch(actions =>
            {
                IComparable maxTaskId = null;
                var foundWork = new Reference<bool>();
                var task = actions.Tasks.GetMergedTask<RemoveFromIndexTask>(
                    x => MaxTaskIdStatus.Updated,
                    x => maxTaskId = x,
                    foundWork);
                Assert.NotNull(task);
                Assert.NotNull(maxTaskId);
                Assert.False(foundWork.Value);

                maxTaskId = null;
                foundWork = new Reference<bool>();
                task = actions.Tasks.GetMergedTask<RemoveFromIndexTask>(
                    x => MaxTaskIdStatus.Updated,
                    x => maxTaskId = x,
                    foundWork);
                Assert.Null(task);
                Assert.Null(maxTaskId);
                Assert.False(foundWork.Value);
            });
        }