public async Task <CacheProgramResults> ExecuteAsync(IEnumerable <LabUserData> labUserData, CancellationToken cancellationToken)
        {
            var testInputData = new TestInputData
            {
                ResultsFilePath = ResultsFilePath,
                StorageType     = CacheStorageType,
                LabUserDatas    = labUserData.ToList()
            };

            var    inputDataJson = JsonConvert.SerializeObject(testInputData);
            string inputFilePath = Path.Combine(Path.GetTempPath(), Path.GetTempFileName());

            File.WriteAllText(inputFilePath, inputDataJson);

            var sb = new StringBuilder();

            sb.Append($"--inputPath {inputFilePath.EncloseQuotes()} ");
            string arguments    = sb.ToString();
            var    processUtils = new ProcessUtils();

            try
            {
                var processRunResults = await processUtils.RunProcessAsync(ExecutablePath, arguments, cancellationToken).ConfigureAwait(false);

                return(CacheProgramResults.CreateFromResultsFile(ResultsFilePath, processRunResults));
            }
            catch (ProcessRunException ex)
            {
                return(CacheProgramResults.CreateWithFailedExecution(ex));
            }
        }
        public async Task <CacheProgramResults> ExecuteAsync(string username, string password, CancellationToken cancellationToken)
        {
            var sb = new StringBuilder();

            sb.Append($"--userName {username} ");
            sb.Append($"--userPassword {password} ");
            sb.Append($"--resultsFilePath {ResultsFilePath.EncloseQuotes()} ");
            string arguments = sb.ToString();

            var processUtils = new ProcessUtils();

            try
            {
                var processRunResults = await processUtils.RunProcessAsync(ExecutablePath, arguments, cancellationToken).ConfigureAwait(false);

                return(CacheProgramResults.CreateFromResultsFile(ResultsFilePath, processRunResults));
            }
            catch (ProcessRunException ex)
            {
                return(CacheProgramResults.CreateWithFailedExecution(ex));
            }
        }