示例#1
0
        public IHttpActionResult GetTests(string appName)
        {
            ApplicationNameTestListModel appTestListModel = new ApplicationNameTestListModel();
            var tests = (IEnumerable <ApplicationNameTestList>)appTestListModel.ApplicationNameTestLists;

            tests = tests.Where(x => x.ApplicationName == appName).ToList();

            return(Ok(tests));
        }
示例#2
0
        public IHttpActionResult GetApps()
        {
            ApplicationNameTestListModel appTestListModel = new ApplicationNameTestListModel();
            var applications = (IEnumerable <ApplicationNameTestList>)appTestListModel.ApplicationNameTestLists;

            applications = applications.DistinctBy(x => x.ApplicationName).ToList();

            return(Ok(applications));
        }
示例#3
0
 public IHttpActionResult GetTestKey(string appName, string testName)
 {
     try
     {
         ApplicationNameTestListModel appTestListModel = new ApplicationNameTestListModel();
         var test = appTestListModel.ApplicationNameTestLists;
         return(Ok(test.FirstOrDefault(x => x.ApplicationName == appName && x.TestName == testName).TestListKey));
     }
     catch
     {
         return(BadRequest("Test name not found"));
     }
 }
示例#4
0
        public HttpStatusCode AddToQueue([FromBody] string data)
        {
            try
            {
                JsonSerializer  serializer       = new JsonSerializer();
                JsonReader      reader           = new JsonTextReader(new StringReader(data));
                QueuedTestExtra myQueueWithExtra = serializer.Deserialize <QueuedTestExtra>(reader);

                ApplicationNameTestListModel applicationNameTestListModel = new ApplicationNameTestListModel();
                var allTestsForApp = applicationNameTestListModel.ApplicationNameTestLists.Where(
                    x => x.ApplicationName == myQueueWithExtra.ApplicationName).ToList();

                QueuedTestsModel myModel = new QueuedTestsModel();
                QueuedTest       myQyQueuedTest;

                if (myQueueWithExtra.RunAllApi)
                {
                    var allApiTests = allTestsForApp.Where(x => x.TestName.Contains("API")).ToList();
                    foreach (var item in allApiTests)
                    {
                        myQyQueuedTest = new QueuedTest
                        {
                            Id              = myQueueWithExtra.Id,
                            QueuedDateTime  = myQueueWithExtra.QueuedDateTime,
                            ApplicationName = myQueueWithExtra.ApplicationName,
                            ConsoleLog      = myQueueWithExtra.ConsoleLog,
                            Environment     = myQueueWithExtra.Environment,
                            StackTrace      = myQueueWithExtra.StackTrace,
                            TestName        = item.TestName,
                            UserName        = myQueueWithExtra.UserName,
                            Utilization     = myQueueWithExtra.Utilization
                        };
                        myModel.QueuedTests.Add(myQyQueuedTest);
                    }
                }
                if (myQueueWithExtra.RunAllGui)
                {
                    var allGuiTests = allTestsForApp.Where(x => !x.TestName.Contains("API")).ToList();
                    foreach (var item in allGuiTests)
                    {
                        myQyQueuedTest = new QueuedTest
                        {
                            Id              = myQueueWithExtra.Id,
                            QueuedDateTime  = myQueueWithExtra.QueuedDateTime,
                            ApplicationName = myQueueWithExtra.ApplicationName,
                            ConsoleLog      = myQueueWithExtra.ConsoleLog,
                            Environment     = myQueueWithExtra.Environment,
                            StackTrace      = myQueueWithExtra.StackTrace,
                            TestName        = item.TestName,
                            UserName        = myQueueWithExtra.UserName,
                            Utilization     = myQueueWithExtra.Utilization
                        };
                        myModel.QueuedTests.Add(myQyQueuedTest);
                    }
                }
                if (myQueueWithExtra.RunAllApi == false && myQueueWithExtra.RunAllGui == false)
                {
                    myQyQueuedTest = new QueuedTest
                    {
                        Id              = myQueueWithExtra.Id,
                        QueuedDateTime  = myQueueWithExtra.QueuedDateTime,
                        ApplicationName = myQueueWithExtra.ApplicationName,
                        ConsoleLog      = myQueueWithExtra.ConsoleLog,
                        Environment     = myQueueWithExtra.Environment,
                        StackTrace      = myQueueWithExtra.StackTrace,
                        TestName        = myQueueWithExtra.TestName,
                        UserName        = myQueueWithExtra.UserName,
                        Utilization     = myQueueWithExtra.Utilization
                    };
                    myModel.QueuedTests.Add(myQyQueuedTest);
                }

                myModel.SaveChanges();

                return(HttpStatusCode.OK);
            }
            catch (Exception ex)
            {
                return(HttpStatusCode.BadRequest);
            }
        }
示例#5
0
        public HttpStatusCode GenerateEmail(string appName, int daysBack, string environment)
        {
            try
            {
                DateTime today = DateTime.Today;


                ApplicationNameTestListModel applicationNameTestList = new ApplicationNameTestListModel();
                var testList = applicationNameTestList.ApplicationNameTestLists.Where(x => x.ApplicationName == appName);

                vUniqueExecutedTestsModel uniqueExecutedTestsModel = new vUniqueExecutedTestsModel();
                var executedTests = uniqueExecutedTestsModel.vUniqueExecutedTests.Where(x => x.ApplicationName == appName && x.Environment.ToUpper() == environment);

                if (daysBack > 0)
                {
                    today         = today.AddDays(0 - daysBack);
                    executedTests = executedTests.Where(x => x.StartDateTime >= today);
                }

                #region Set the Email From, To Section and SMTP

                MailMessage mail     = new MailMessage();
                MailAddress fromMail = new MailAddress("*****@*****.**");
                mail.From = fromMail;

                // TODO: Update to get selected user groups from email distribution.
                mail.To.Add("*****@*****.**");
                mail.To.Add("*****@*****.**");

                SmtpClient client = new SmtpClient();
                client.Port                  = 25;
                client.DeliveryMethod        = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.Host                  = "Exchcasprd01v.us.nelnet.biz";

                #endregion Set the Email From, To Section and SMTP

                #region Format the Email Body

                mail.IsBodyHtml = true;
                mail.Body       = "<div style='font-family:Calibri;'>";

                #region Style

                mail.Body += "<style>" +
                             "table, th, td {" +
                             "border: 1px solid black;" +
                             "border-collapse: collapse;" +
                             "}" +
                             "th, td {" +
                             "padding: 2px;" +
                             "text-align: left;" +
                             "}" +
                             "table#t01 tr:nth-child(even) {" +
                             "background-color: #eee;" +
                             "}" +
                             "table#t01 tr:nth-child(odd) {" +
                             "background-color: #fff;" +
                             "}" +
                             "table#t01 th {" +
                             "background-color: #4d6fa5;" +
                             "color: white;" +
                             "}" +
                             "</style>";

                #endregion Style

                mail.Body += $"<h2>{appName} - {environment}</h2>";
                mail.Body += "<table id=\"t01\">" +
                             "<tr>" +
                             "<th>Type</th>" +
                             "<th># of passes </th> " +
                             "<th># of failures</th>" +
                             "<th># of not run</th>" +
                             "<th># of total tests</th>" +
                             "</tr>" +
                             "<tr>" +
                             "<td>Number of UI tests</td>" +
                             $"<td>{executedTests.Except(executedTests.Where(x => x.TestName.Contains("API"))).Count(x => x.TestRunStatus.ToUpper() == "PASS")}</td>" +
                             $"<td>{executedTests.Except(executedTests.Where(x => x.TestName.Contains("API"))).Count(x => x.TestRunStatus.ToUpper() == "FAIL")}</td>" +
                             $"<td>{testList.Except(testList.Where(x => x.TestName.Contains("API"))).Count() - (executedTests.Except(executedTests.Where(x => x.TestName.Contains("API"))).Count(x => x.TestRunStatus.ToUpper() == "PASS") + executedTests.Except(executedTests.Where(x => x.TestName.Contains("API"))).Count(x => x.TestRunStatus.ToUpper() == "FAIL"))}</td>" +
                             $"<td>{testList.Except(testList.Where(x => x.TestName.Contains("API"))).Count()}</td> " +
                             "</tr> " +
                             "<tr> " +
                             "<td>Number of API tests</td> " +
                             $"<td>{executedTests.Where(x => x.TestName.Contains("API")).Count(x => x.TestRunStatus.ToUpper() == "PASS")}</td> " +
                             $"<td>{executedTests.Where(x => x.TestName.Contains("API")).Count(x => x.TestRunStatus.ToUpper() == "FAIL")}</td> " +
                             $"<td>{testList.Count(x => x.TestName.Contains("API")) - (executedTests.Where(x => x.TestName.Contains("API")).Count(x => x.TestRunStatus.ToUpper() == "PASS") + executedTests.Where(x => x.TestName.Contains("API")).Count(x => x.TestRunStatus.ToUpper() == "FAIL"))}</td> " +
                             $"<td>{testList.Count(x => x.TestName.Contains("API"))}</td> " +
                             "</tr> " +
                             "</table>";

                mail.Body += "------</br>";
                mail.Body += "<p>To see the full results please <a href=\"http://autodash.nelnet.net\">click here.</a>";
                mail.Body += "</div>";

                #endregion Format the Email Body

                mail.Subject = $"Automated Report for {appName} against {environment}";
                client.Send(mail);

                return(HttpStatusCode.OK);
            }
            catch
            {
                return(HttpStatusCode.BadRequest);
            }
        }