Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -163,31 +163,31 @@ private static BufferBlock<int> ConstructBufferNewWithNMessages(int messagesCoun
{
var block = new BufferBlock<int>();
block.PostRange(0, messagesCount);
SpinWait.SpinUntil(() => block.Count == messagesCount); // spin until messages available
Assert.True(SpinWait.SpinUntil(() => block.Count == messagesCount, DataflowTestHelpers.SpinTimeoutMs)); // spin until messages available
return block;
}

private static TransformBlock<int, string> ConstructTransformWithNMessages(int messagesCount)
{
var block = new TransformBlock<int, string>(i => i.ToString());
block.PostRange(0, messagesCount);
SpinWait.SpinUntil(() => block.OutputCount == messagesCount);
Assert.True(SpinWait.SpinUntil(() => block.OutputCount == messagesCount, DataflowTestHelpers.SpinTimeoutMs));
return block;
}

private static TransformManyBlock<int, int> ConstructTransformManyWithNMessages(int messagesCount)
{
var block = new TransformManyBlock<int, int>(i => new int[] { i });
block.PostRange(0, messagesCount);
SpinWait.SpinUntil(() => block.OutputCount == messagesCount); // spin until messages available
Assert.True(SpinWait.SpinUntil(() => block.OutputCount == messagesCount, DataflowTestHelpers.SpinTimeoutMs)); // spin until messages available
return block;
}

private static BatchBlock<int> ConstructBatchNewWithNMessages(int messagesCount)
{
var block = new BatchBlock<int>(1);
block.PostRange(0, messagesCount);
SpinWait.SpinUntil(() => block.OutputCount == messagesCount); // spin until messages available
Assert.True(SpinWait.SpinUntil(() => block.OutputCount == messagesCount, DataflowTestHelpers.SpinTimeoutMs)); // spin until messages available
return block;
}

Expand All @@ -199,7 +199,7 @@ private static BatchedJoinBlock<int, int> ConstructBatchedJoin2NewWithNMessages(
block.Target1.Post(i);
block.Target2.Post(i);
}
SpinWait.SpinUntil(() => block.OutputCount == messagesCount); // spin until messages available
Assert.True(SpinWait.SpinUntil(() => block.OutputCount == messagesCount, DataflowTestHelpers.SpinTimeoutMs)); // spin until messages available
return block;
}

Expand All @@ -223,7 +223,7 @@ private static JoinBlock<int, int> ConstructJoinNewWithNMessages(int messagesCou
var block = new JoinBlock<int, int>();
block.Target1.PostRange(0, messagesCount);
block.Target2.PostRange(0, messagesCount);
SpinWait.SpinUntil(() => block.OutputCount == messagesCount); // spin until messages available
Assert.True(SpinWait.SpinUntil(() => block.OutputCount == messagesCount, DataflowTestHelpers.SpinTimeoutMs)); // spin until messages available
return block;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ internal static partial class DataflowTestHelpers
internal static bool[] BooleanValues = { true, false };
internal static Func<int, IEnumerable<int>> ToEnumerable = item => Enumerable.Repeat(item, 1);

/// <summary>Timeout in milliseconds for spin-wait operations in tests, to avoid indefinite hangs under stress.</summary>
internal const int SpinTimeoutMs = 30_000;

internal static ITargetBlock<int> PostRange(this ITargetBlock<int> target, int lowerBoundInclusive, int upperBoundExclusive)
{
return PostRange(target, lowerBoundInclusive, upperBoundExclusive, i => i);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ public async Task TestCount()
Assert.Equal(expected: 0, actual: tb.OutputCount);

tb.PostRange(1, 11);
await Task.Run(() => SpinWait.SpinUntil(() => tb.OutputCount == 10));
Assert.True(await Task.Run(() => SpinWait.SpinUntil(() => tb.OutputCount == 10, DataflowTestHelpers.SpinTimeoutMs)));
for (int i = 10; i > 0; i--)
{
int item;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ public async Task TestCountAsyncEnumerable()
Assert.Equal(expected: 0, actual: tb.OutputCount);

tb.PostRange(1, 11);
await Task.Run(() => SpinWait.SpinUntil(() => tb.OutputCount == 10));
Assert.True(await Task.Run(() => SpinWait.SpinUntil(() => tb.OutputCount == 10, DataflowTestHelpers.SpinTimeoutMs)));
for (int i = 10; i > 0; i--)
{
Assert.True(tb.TryReceive(out int item));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ public async Task TestCount()
Assert.Equal(expected: 0, actual: tb.OutputCount);

tb.PostRange(1, 11);
await Task.Run(() => SpinWait.SpinUntil(() => tb.OutputCount == 10));
Assert.True(await Task.Run(() => SpinWait.SpinUntil(() => tb.OutputCount == 10, DataflowTestHelpers.SpinTimeoutMs)));
for (int i = 10; i > 0; i--)
{
int item;
Expand Down
Loading