public Adapter[] GetAdapters(int id)
        {
            var configuration = PTMKernelService.GetConfiguration(id);

            var            ptfAdapters    = configuration.Adapters;
            var            pluginAdapters = configuration.TestSuite.GetPluginAdapters();
            List <Adapter> result         = new List <Adapter>();

            foreach (var pluginAdapter in pluginAdapters)
            {
                var item = ptfAdapters.Where(i => i.Name == pluginAdapter.Name).FirstOrDefault();
                if (item != null)
                {
                    item.DisplayName = pluginAdapter.DisplayName;
                    if (string.IsNullOrEmpty(item.AdapterType))
                    {
                        item.AdapterType = pluginAdapter.AdapterType;
                    }
                    if (string.IsNullOrEmpty(item.ScriptDirectory))
                    {
                        item.ScriptDirectory = pluginAdapter.ScriptDirectory;
                    }
                    item.SupportedKinds = pluginAdapter.SupportedKinds;
                    if (string.IsNullOrEmpty(item.ShellScriptDirectory))
                    {
                        item.ShellScriptDirectory = pluginAdapter.ShellScriptDirectory;
                    }
                    result.Add(item);
                }
            }

            return(result.ToArray());
        }
Пример #2
0
        public IActionResult SaveProfile(int id, [FromBody] ProfileExportRequest request = null)
        {
            ProfileExportRequest profileRequest = null;

            if (request != null && request.SelectedTestCases != null)
            {
                var testRun = PTMKernelService.GetTestRun(id);
                profileRequest = new ProfileExportRequest()
                {
                    FileName          = PTMKernelService.EnsureProfileName(null),
                    TestSuiteId       = testRun.Configuration.TestSuite.Id,
                    ConfigurationId   = testRun.Configuration.Id,
                    TestResultId      = id,
                    SelectedTestCases = request.SelectedTestCases
                };
            }

            string profileLocation = profileRequest == null?PTMKernelService.SaveProfileSettingsByTestResult(id) : PTMKernelService.SaveProfileSettings(profileRequest);

            var profileStream = new FileStream(profileLocation, FileMode.Open, FileAccess.Read, FileShare.Read);

            return(new FileStreamResult(profileStream, System.Net.Mime.MediaTypeNames.Text.Xml)
            {
                FileDownloadName = Path.GetFileName(profileLocation)
            });
        }
Пример #3
0
        public IActionResult ApplyAutoDetectionResult(int configurationId)
        {
            // Apply Detection Result.
            PTMKernelService.ApplyDetectionResult(configurationId);

            return(Ok());
        }
Пример #4
0
        public TestResultItem Get(int id)
        {
            var testRun = PTMKernelService.GetTestRun(id);

            var status = testRun.GetRunningStatus();

            var result = new TestResultItem
            {
                Overview = new TestResultOverview
                {
                    Id = id,
                    ConfigurationId = testRun.Configuration.Id,
                    Status          = testRun.State,
                    Total           = status.Count(),
                    NotRun          = status.Where(i => i.Value.State == TestCaseState.NotRun).Count(),
                    Running         = status.Where(i => i.Value.State == TestCaseState.Running).Count(),
                    Passed          = status.Where(i => i.Value.State == TestCaseState.Passed).Count(),
                    Failed          = status.Where(i => i.Value.State == TestCaseState.Failed).Count(),
                    Inconclusive    = status.Where(i => i.Value.State == TestCaseState.Inconclusive).Count(),
                },
                Results = status.Values.ToArray(),
            };

            return(result);
        }
        public string[] GetTests(int id)
        {
            var configuration = PTMKernelService.GetConfiguration(id);

            var result = configuration.GetApplicableTestCases().ToArray();

            return(result);
        }
Пример #6
0
        public IActionResult Abort(int id)
        {
            var testRun = PTMKernelService.GetTestRun(id);

            testRun.Abort();

            return(Ok());
        }
Пример #7
0
        public TestCaseResult GetTestCaseResult(int id, string testCaseName)
        {
            var testRun = PTMKernelService.GetTestRun(id);

            var result = testRun.GetTestCaseResult(testCaseName);

            return(result);
        }
        public IActionResult SetAdapters(int id, Adapter[] adapters)
        {
            var configuration = PTMKernelService.GetConfiguration(id);

            configuration.Adapters = adapters;

            return(Ok());
        }
        public IActionResult SetRules(int id, RuleGroup[] rules)
        {
            // Generate profile.xml
            var configuration = PTMKernelService.GetConfiguration(id);

            configuration.Rules = RuleGroup.ToKernalRuleGroups(rules);
            return(Ok());
        }
Пример #10
0
        public IActionResult GetDetectionSummary(int configurationId)
        {
            var response = PTMKernelService.GetDetectionSummary(configurationId);

            return(Ok(new
            {
                ResultItemMapList = response
            }));
        }
Пример #11
0
        public int Run(RunRequest request)
        {
            if (PTMKernelService.IsTestSuiteRunning())
            {
                throw new NotSupportedException("PTMService does not support parallel run right now, please wait for the current running job to be completed and then try again.");
            }

            var result = PTMKernelService.CreateTestRun(request.ConfigurationId, request.SelectedTestCases);

            return(result);
        }
        public TestSuite[] GetTestSuites()
        {
            var result = PTMKernelService.QueryTestSuites().Select(item => new TestSuite
            {
                Id          = item.Id,
                Name        = item.Name,
                Version     = item.Version,
                Description = item.Description,
                Removed     = item.Removed
            }).ToArray();

            return(result);
        }
        public IActionResult GetTestSuiteDocs(int testSuiteId)
        {
            var           testSuite           = PTMKernelService.GetTestSuite(testSuiteId);
            string        sourceUserGudiePath = Path.Combine(testSuite.StorageRoot.AbsolutePath, TestSuiteConsts.PluginFolderName, TestSuiteConsts.UserGuideFolderName);
            DirectoryInfo dir = new DirectoryInfo(sourceUserGudiePath);

            if (!dir.Exists)
            {
                return(NotFound("Missing user guide in package."));
            }

            return(Ok());
        }
Пример #14
0
        public IActionResult GetDetectionSteps(int configurationId)
        {
            var detectResult = PTMKernelService.GetDetectionOutcome(configurationId);

            return(Ok(new
            {
                Result = new
                {
                    Status = detectResult.Status,
                    Exception = detectResult.Exception == null ? string.Empty : detectResult.Exception.ToString(),
                },
                DetectionSteps = PTMKernelService.GetDetectedSteps(configurationId)
            }));
        }
        public IActionResult SetProperties(int id, PropertySetItemGroup[] properties)
        {
            PTMKernelService.SetConfigurationProperties(id, properties.Select(group => new PropertyGroup
            {
                Name  = group.Name,
                Items = group.Items.Select(item => new Property
                {
                    Key   = item.Key,
                    Value = item.Value,
                }),
            }));

            return(Ok());
        }
        public Configuration[] GetConfigurations(int?testSuiteId)
        {
            var configurations = PTMKernelService.QueryConfigurations(testSuiteId);

            var result = configurations.Select(configuration => new Configuration
            {
                Id           = configuration.Id,
                Name         = configuration.Name,
                TestSuiteId  = configuration.TestSuite.Id,
                Description  = configuration.Description,
                IsConfigured = configuration.IsConfigured,
            });

            return(result.ToArray());
        }
Пример #17
0
        public IActionResult StartAutoDetection(List <Property> properties, int configurationId)
        {
            PTMKernelService.Reset(configurationId);
            var setPrerequisite = PTMKernelService.SetPrerequisites(properties, configurationId);

            if (setPrerequisite)
            {
                PTMKernelService.StartDetection(configurationId, (o) => { });

                return(Ok());
            }
            else
            {
                return(BadRequest("There's errors when set prerequisites"));
            }
        }
        public TestSuiteRules GetRules(int id)
        {
            var configuration = PTMKernelService.GetConfiguration(id);
            var groups        = RuleGroup.FromKernalRuleGroups(configuration.Rules);
            var selectedRules = configuration.SelectedRules;

            groups = RuleGroup.UpdateByMappingTable(groups, configuration.TargetFilterIndex, configuration.FeatureMappingTable, selectedRules);
            groups = RuleGroup.UpdateByMappingTable(groups, configuration.MappingFilterIndex, configuration.ReverseMappingTable, selectedRules);

            return(new TestSuiteRules()
            {
                AllRules = groups,
                SelectedRules = RuleGroup.FromKernalRuleGroups(selectedRules),
                TargetFilterIndex = configuration.TargetFilterIndex,
                MappingFilterIndex = configuration.MappingFilterIndex
            });
        }
        public IActionResult GetTestSuiteDocs(int testSuiteId, string fileName)
        {
            var    testSuite           = PTMKernelService.GetTestSuite(testSuiteId);
            string sourceUserGudiePath = Path.Combine(testSuite.StorageRoot.AbsolutePath, TestSuiteConsts.PluginFolderName, TestSuiteConsts.UserGuideFolderName);

            var file      = Path.Combine(sourceUserGudiePath, fileName);
            var fileInfo  = new FileInfo(file);
            var extension = fileInfo.Extension;

            string GetMIMEType(string fileExtension)
            {
                return(fileExtension switch
                {
                    ".html" => "text/html",
                    ".png" => "image/png"
                });
            }
Пример #20
0
        public IActionResult GetTestRunReport(int id, [FromBody] ReportRequest request)
        {
            var reportPath   = PTMKernelService.GetTestRunReport(id, request.Format, request.TestCases);
            var reportStream = new FileStream(reportPath, FileMode.Open, FileAccess.Read, FileShare.Read);

            return(new FileStreamResult(reportStream, GetMIMEType(request.Format))
            {
                FileDownloadName = Path.GetFileName(reportPath)
            });

            string GetMIMEType(ReportFormat format) => format switch
            {
                ReportFormat.Plain => "text/plain",
                ReportFormat.Json => "text/plain",
                ReportFormat.XUnit => "application/xml",
                _ => throw new InvalidOperationException($"\"{format}\" is not a valid report format.")
            };
        }
        public PropertyGetItemGroup[] GetProperties(int id)
        {
            var properties = PTMKernelService.GetConfigurationProperties(id);

            var result = properties.Select(group => new PropertyGetItemGroup
            {
                Name  = group.Name,
                Items = group.Items.Select(property => new PropertyGetItem
                {
                    Key         = property.Key,
                    Name        = property.Name,
                    Description = property.Description,
                    Choices     = property.Choices?.ToArray(),
                    Value       = property.Value,
                }).ToArray(),
            }).ToArray();

            return(result);
        }
        public int Install([FromForm] InstallRequest request)
        {
            if (string.IsNullOrEmpty(request.TestSuiteName))
            {
                throw new ArgumentNullException(nameof(request.TestSuiteName));
            }

            if (request.Package == null)
            {
                throw new ArgumentNullException(nameof(request.Package));
            }

            string packageName = request.Package.FileName;

            var packageStream = request.Package.OpenReadStream();

            int id = PTMKernelService.InstallTestSuite(request.TestSuiteName, packageName, packageStream, request.Description);

            return(id);
        }
        public IActionResult Update(int id, [FromForm] InstallRequest request)
        {
            if (string.IsNullOrEmpty(request.TestSuiteName))
            {
                throw new ArgumentNullException(nameof(request.TestSuiteName));
            }

            if (request.Package == null)
            {
                throw new ArgumentNullException(nameof(request.Package));
            }

            var packageName = request.Package.FileName;

            var packageStream = request.Package.OpenReadStream();

            PTMKernelService.UpdateTestSuite(id, request.TestSuiteName, packageName, packageStream, request.Description);

            return(Ok());
        }
Пример #24
0
        public ListResponse List(int pageSize, int pageNumber, string query = "", bool showAll = false)
        {
            if (pageSize <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(pageSize));
            }

            if (pageNumber < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(pageNumber));
            }

            Func <TestResult, bool> queryFunc = query switch
            {
                null or "" => (TestResult result) =>
                {
                    if (showAll)
                    {
                        return(true);
                    }
                    else
                    {
                        var configuration = PTMKernelService.GetConfiguration(result.TestSuiteConfigurationId);
                        var testSuite     = PTMKernelService.GetTestSuite(configuration.TestSuite.Id);
                        return(true && !testSuite.Removed);
                    }
                },
                _ => (TestResult result) =>
                {
                    var containingQuery = false;
                    var configuration   = PTMKernelService.GetConfiguration(result.TestSuiteConfigurationId);
                    if (configuration.Name.ToLower().Contains(query.ToLower()))
                    {
                        containingQuery = true;
                    }

                    var testSuite = PTMKernelService.GetTestSuite(configuration.TestSuite.Id);
                    if (testSuite.Name.ToLower().Contains(query.ToLower()))
                    {
                        containingQuery = true;
                    }

                    if (showAll)
                    {
                        return(containingQuery);
                    }
                    else
                    {
                        return(containingQuery && !testSuite.Removed);
                    }
                }
            };

            var items = PTMKernelService.QueryTestRuns(pageSize, pageNumber, queryFunc, out int totalPage).Select(testRun => new TestResultOverview
            {
                Id = testRun.Id,
                ConfigurationId = testRun.Configuration.Id,
                Status          = testRun.State,
                Total           = testRun.Total,
                NotRun          = testRun.NotRun,
                Running         = 0,
                Passed          = testRun.Passed,
                Failed          = testRun.Failed,
                Inconclusive    = testRun.Inconclusive,
            }).ToArray();

            var result = new ListResponse
            {
                PageCount   = totalPage,
                TestResults = items,
            };

            return(result);
        }
        public int CreateConfiguration(Configuration request)
        {
            int result = PTMKernelService.CreateConfiguration(request.Name, request.TestSuiteId, request.Description);

            return(result);
        }
        public IActionResult Remove(int id)
        {
            PTMKernelService.RemoveTestSuite(id);

            return(Ok());
        }
Пример #27
0
        public PrerequisiteView GetPrerequisites(int configurationId)
        {
            var response = PTMKernelService.GetPrerequisites(configurationId);

            return(response);
        }
Пример #28
0
        public IActionResult InitializeDetector(int configurationId)
        {
            PTMKernelService.CreateAutoDetector(configurationId);

            return(Ok());
        }
Пример #29
0
        public IActionResult GetDetectionLog(int configurationId)
        {
            var response = PTMKernelService.GetDetectionLog(configurationId);

            return(Ok(response));
        }
Пример #30
0
        public IActionResult StopAutoDetection(int configurationId)
        {
            PTMKernelService.StopDetection(configurationId, () => { });

            return(Ok());
        }