public void ParallelAccess() { using (var sessionProvider = new RSessionProvider(TestCoreServices.CreateReal())) { var guids = new[] { new Guid(), new Guid() }; ParallelTools.Invoke(100, i => { var session = sessionProvider.GetOrCreate(guids[i % 2]); session.Dispose(); }); } }
public void ParallelAccess() { using (var sessionProvider = new RSessionProvider(_services)) { var guids = new[] { nameof(ParallelAccess) + 1, nameof(ParallelAccess) + 2 }; ParallelTools.Invoke(100, i => { var session = sessionProvider.GetOrCreate(guids[i % 2]); session.Dispose(); }); } }
public void ParallelAccess() { using (var sessionProvider = new RSessionProvider()) { var guids = new[] { new Guid(), new Guid() }; ParallelTools.Invoke(100, i => { var session = sessionProvider.GetOrCreate(guids[i % 2], _brokerConnector); session.Dispose(); }); } }
public void RHostPipeFuzzTest(int iteration) { ParallelTools.Invoke(1000, i => { var input = GenerateInput(); try { var message = Message.Parse(input); var msgbytes = message.ToBytes(); } catch (InvalidDataException) { } catch (TraceFailException) { } }); }
public async Task Invoke_Concurrent_ChangeAction() { var counts = new int[4]; var action = new DelayedAsyncAction(200); ParallelTools.Invoke(4, i => { action.Invoke(() => Task.FromResult(Interlocked.Increment(ref counts[i]))); }); await Task.Delay(400); counts.Should().ContainSingle(i => i == 1, "DelayedAction should be called only once") .And.OnlyContain(i => i <= 1, "DelayedAction should be called more than once"); }
public async Task InvokeTwice_DuringTimeout_Concurrent() { var count = 0; var action = new DelayedAsyncAction(200, () => Task.FromResult(Interlocked.Increment(ref count))); ParallelTools.Invoke(4, async i => { await Task.Delay(50 * i); action.Invoke(); }); await Task.Delay(500); count.Should().Be(1, "DelayedAction should be called only once"); }
public void TrySetException() { var tcs = new TaskCompletionSourceEx <int>(); var count = 0; ParallelTools.Invoke(8, i => { var isSet = tcs.TrySetException(new Exception()); if (isSet) { Interlocked.Increment(ref count); } }); count.Should().Be(1); }
public async Task ExclusiveInteraction() { var interactionTasks = ParallelTools.Invoke(4, i => _session.BeginInteractionAsync()); IList <Task <IRSessionInteraction> > runningTasks = interactionTasks.ToList(); while (runningTasks.Count > 0) { await Task.WhenAny(runningTasks); IList <Task <IRSessionInteraction> > completedTasks; runningTasks.Split(t => t.Status == TaskStatus.RanToCompletion, out completedTasks, out runningTasks); completedTasks.Should().ContainSingle(); completedTasks.Single().Result.Dispose(); } }
public void TryMarkDisposed_Concurrent() { var results = ParallelTools.Invoke(50, i => _disposeToken.TryMarkDisposed()); results.Should().ContainSingle(r => r); }