public void Start() { if (Interlocked.CompareExchange(ref _isBusy, 1, 0) != 0) return; Task.Run(() => Start(_context), _cancellationToken) .ContinueWith(task => { Result = task.IsFaulted || task.IsCanceled ? new LoadGeneratorResult() : task.Result; Interlocked.Exchange(ref _isBusy, 0); }, _cancellationToken); }
private LoadGeneratorResult Start(LoadTestContext context) { var result = new LoadGeneratorResult(starTime: DateTime.UtcNow); var testRunResults = new List<TestRunResult>(); var test = (ITest)Activator.CreateInstance(_testType); test.Initialize(); _loadTest.IncrementTotalThreads(); context.StartEvent.WaitOne(); while (!context.QuitEvent.WaitOne(0)) { var testRunResult = new TestRunResult { StartTime = DateTime.UtcNow }; try { testRunResult.TestResult = test.Execute(); } catch { testRunResult.TestResult = TestResult.Failure; } finally { testRunResult.EndTime = DateTime.UtcNow; _loadTest.IncrementTotalIterations(); if (testRunResult.TestResult.Failed) //todo: ? { _loadTest.IncrementTotalErrors(); } } testRunResults.Add(testRunResult); } result.TestRuns = testRunResults; result.EndTime = DateTime.UtcNow; return result; }
private LoadGeneratorResult Start(LoadTestContext context) { var result = new LoadGeneratorResult(starTime: DateTime.UtcNow); var testRunResults = new List <TestRunResult>(); var test = (ITest)Activator.CreateInstance(_testType); test.Initialize(); _loadTest.IncrementTotalThreads(); context.StartEvent.WaitOne(); while (!context.QuitEvent.WaitOne(0)) { var testRunResult = new TestRunResult { StartTime = DateTime.UtcNow }; try { testRunResult.TestResult = test.Execute(); } catch { testRunResult.TestResult = TestResult.Failure; } finally { testRunResult.EndTime = DateTime.UtcNow; _loadTest.IncrementTotalIterations(); if (testRunResult.TestResult.Failed) //todo: ? { _loadTest.IncrementTotalErrors(); } } testRunResults.Add(testRunResult); } result.TestRuns = testRunResults; result.EndTime = DateTime.UtcNow; return(result); }
public void Start() { if (Interlocked.CompareExchange(ref _isBusy, 1, 0) != 0) { return; } Task.Run(() => Start(_context), _cancellationToken) .ContinueWith(task => { Result = task.IsFaulted || task.IsCanceled ? new LoadGeneratorResult() : task.Result; Interlocked.Exchange(ref _isBusy, 0); }, _cancellationToken); }