Beispiel #1
0
        public async void Run(Guid runId)
        {
            if (_processingTask != null)
            {
                await CancelExistingRun();
            }

            if (_cancelToken != null)
            {
                _cancelToken.Cancel();
                _cancelToken.Dispose();
            }
            _cancelToken = new CancellationTokenSource();

            _processingTask = Task.Run(async() =>
            {
                _processingStartedOn = DateTime.Now;

                using (var scope = _serviceScopeFactory.CreateScope())
                {
                    var runsRepository = scope.ServiceProvider.GetRequiredService <AppKeyRepository <Run> >();

                    ProcessingRun      = runsRepository.Read <RunReadModel>().SingleOrDefault(r => r.Id == runId);
                    _processingRunData = new RunData(ProcessingRun);

                    if (ProcessingRun == null)
                    {
                        throw new ToolsException($"Cannot find run with id {runId}.");
                    }
                }

                await SaveRunData();

                foreach (var testRun in ProcessingRun.TestRuns)
                {
                    await ProcessTestRun(testRun);
                }

                _processingFinishedOn     = DateTime.Now;
                _processingRunData.Status = RunStatus.Finished;

                await SaveRunData();
                SendRunData(() =>
                {
                    ProcessingRun         = null;
                    _processingRunData    = null;
                    _processingTask       = null;
                    _processingStartedOn  = null;
                    _processingFinishedOn = null;
                });
            });
        }
Beispiel #2
0
        public async Task CancelExistingRun()
        {
            if (ProcessingRun != null)
            {
                if (_processingTask != null)
                {
                    _cancelToken.Cancel();
                    _cancelToken.Dispose();
                    _cancelToken = null;
                }

                _processingRunData.Status = RunStatus.Cancelled;
                await SaveRunData();

                ProcessingRun         = null;
                _processingRunData    = null;
                _processingTask       = null;
                _processingStartedOn  = null;
                _processingFinishedOn = null;
            }
        }