public void CloseWhileQueueRuns() { var queue = new ScaleoutTaskQueue(new TraceSource("Queue"), "0", new ScaleoutConfiguration() { RetryOnError = true }); queue.Open(); queue.Enqueue(_ => Task.Delay(50), null); queue.Enqueue(_ => Task.Delay(100), null); queue.Enqueue(_ => Task.Delay(150), null); queue.Close(); }
public void ErrorOnSendBuffers() { int x = 0; var queue = new ScaleoutTaskQueue(new TraceSource("Queue"), "0", new ScaleoutConfiguration() { RetryOnError = true }); queue.Open(); queue.Enqueue(_ => { throw new InvalidOperationException(); }, null); queue.Enqueue(_ => { x++; return TaskAsyncHelper.Empty; }, null); queue.Enqueue(_ => { x++; return TaskAsyncHelper.Empty; }, null); Assert.Equal(0, x); }
public void InitialToBufferingToOpenToSend() { int x = 0; var queue = new ScaleoutTaskQueue(new TraceSource("Queue"), "0", new ScaleoutConfiguration() { RetryOnError = true }); queue.SetError(new Exception()); queue.Open(); queue.Enqueue(_ => { x++; return TaskAsyncHelper.Empty; }, null).Wait(); Assert.Equal(1, x); }
public void ErrorOnSendThrowsNextTime() { var queue = new ScaleoutTaskQueue(new TraceSource("Queue"), "0", new ScaleoutConfiguration()); queue.Open(); queue.Enqueue(_ => { throw new InvalidOperationException(); }, null); Assert.Throws<InvalidOperationException>(() => queue.Enqueue(_ => TaskAsyncHelper.Empty, null)); }
public void SendsBeforeBufferingShouldBeCaptured() { int x = 0; var queue = new ScaleoutTaskQueue(new TraceSource("Queue"), "0", new ScaleoutConfiguration() { RetryOnError = true }); queue.Enqueue(_ => { x++; return TaskAsyncHelper.Empty; }, null); queue.SetError(new Exception()); Task task = queue.Enqueue(_ => { x++; return TaskAsyncHelper.Empty; }, null); queue.Open(); task.Wait(); Assert.Equal(2, x); }
public void SendAfterCloseThenOpenRemainsClosed() { var queue = new ScaleoutTaskQueue(new TraceSource("Queue"), "0", new ScaleoutConfiguration() { RetryOnError = true }); queue.Open(); queue.Enqueue(_ => Task.Delay(50), null); queue.Close(); queue.Open(); Assert.Throws<InvalidOperationException>(() => queue.Enqueue(_ => TaskAsyncHelper.Empty, null)); }
public void OpenAfterErrorRunsQueue() { int x = 0; var queue = new ScaleoutTaskQueue(new TraceSource("Queue"), "0", new ScaleoutConfiguration() { RetryOnError = true }); queue.Open(); queue.Enqueue(_ => { throw new InvalidOperationException(); }, null); queue.Enqueue(_ => { x++; return TaskAsyncHelper.Empty; }, null); var task = queue.Enqueue(_ => { x++; return TaskAsyncHelper.Empty; }, null); queue.Open(); task.Wait(); Assert.Equal(2, x); }