public async Task <TResultArtefact> ExecuteRTSRun(TArtefact oldArtefact, TArtefact newArtefact, CancellationToken token)
        {
            loggingHelper.InitLogFile();

            var oldModel = artefactAdapter.Parse(oldArtefact);
            var newModel = artefactAdapter.Parse(newArtefact);

            modelBasedController.TestResultAvailable += TestResultAvailable;
            modelBasedController.TestsPrioritized    += TestsPrioritized;
            modelBasedController.ImpactedTest        += ImpactedTest;

            modelBasedController.FilterFunction = FilterFunction;

            var processingResult = await modelBasedController.ExecuteRTSRun(oldModel, newModel, token);

            modelBasedController.TestResultAvailable -= TestResultAvailable;
            modelBasedController.TestsPrioritized    -= TestsPrioritized;
            modelBasedController.ImpactedTest        -= ImpactedTest;

            return(resultArtefactAdapter.Unparse(processingResult));
        }
        public async Task <TResultArtefact> ExecuteRTSRun(TDeltaArtefact deltaArtefact, CancellationToken token)
        {
            loggingHelper.InitLogFile();

            var parsedDelta = deltaArtefactAdapter.Parse(deltaArtefact);

            token.ThrowIfCancellationRequested();

            modelBasedController.TestResultAvailable += TestResultAvailable;
            modelBasedController.TestsPrioritized    += TestsPrioritized;
            modelBasedController.ImpactedTest        += ImpactedTest;

            modelBasedController.FilterFunction = FilterFunction;

            var processingResult = await modelBasedController.ExecuteRTSRun(parsedDelta, token);

            modelBasedController.TestResultAvailable -= TestResultAvailable;
            modelBasedController.TestsPrioritized    -= TestsPrioritized;
            modelBasedController.ImpactedTest        -= ImpactedTest;

            return(resultArtefactAdapter.Unparse(processingResult));
        }