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); }); }
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); }); }
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); }); }