MesError() public static method

Запись в лог с типом ошибка, запись времени опциональна
public static MesError ( string text, bool addTimeStamp = true ) : void
text string Текст, который будет записан в лог
addTimeStamp bool Добавить дату и время к записи, true - добавить, false - не добавлять
return void
Example #1
0
 /// <summary>
 /// Метод выполняет последовательно действия, переданные в него коллекцией.
 /// В зависимости от значения cbDebugMode, метод завершает текущее действие и переходит к следующему при появлении исключения,
 /// либо останавливается на исключении.
 /// </summary>
 /// <param name="TestCases">Список действий (методов) для последовательного выполнения. Методы не должны возвращать значение</param>
 public static void Execute(List <Action> TestCases)
 {
     foreach (Action TestCase in TestCases)
     {
         try
         {
             TestCase.Invoke();
         }
         catch (OpenQA.Selenium.UnhandledAlertException)
         {
             Log.MesQuestion("неожиданное модальное окно. <a href=\"" + ScreenCapture.Printscreen() + "\">скриншот</a>");
             BitrixFramework.Wait(5);
             BitrixFramework.BrowserAlert(false);
             Log.NodeClose();
         }
         catch (WebException e)
         {
             Log.MesError("Словили Вэб-эксепшен =( Видимо отвалился вебдрайвер.\r\n" + e.Message + "\r\n" + e.StackTrace +
                          "\r\nStatus Code : " + ((HttpWebResponse)e.Response).StatusCode +
                          "\r\nStatus Description : " + ((HttpWebResponse)e.Response).StatusDescription);
             Log.NodeClose();
         }
         catch (OpenQA.Selenium.WebDriverException e)
         {
             Log.MesError("Словили Вэб-эксепшен =( \r\n" + e.Message + "\r\n" + e.StackTrace);
             BitrixFramework.Refresh();
             Log.NodeClose();
         }
         catch (Exception Ex)
         {
             Log.MesError(Ex.Message + "\r\n" + Ex.StackTrace);
             Log.NodeClose();
         }
     }
 }
Example #2
0
        /// <summary>
        /// Перезапуск виндовой службы
        /// </summary>
        /// <param name="serviceName">Имя службы</param>
        /// <param name="timeoutMilliseconds">Таймаут</param>
        public static void RestartService(string serviceName, int timeoutMilliseconds = 30000)
        {
            ServiceController service = new ServiceController(serviceName);

            try
            {
                TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
                if (service.Status != ServiceControllerStatus.Stopped)
                {
                    Log.MesNormal("Служба " + serviceName + " запущена. Останавливаем.");
                    service.Stop();
                    service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
                    Log.MesPass("Служба " + serviceName + " остановлена.");
                }

                Log.MesNormal("Запускаем службу " + serviceName);
                service.Start();
                service.WaitForStatus(ServiceControllerStatus.Running, timeout);
                Log.MesPass("Служба " + serviceName + " запущена.");
            }
            catch (Exception ex)
            {
                Log.MesError("Ошибка перезапуска службы " + serviceName + "\r\n" + ex.Message + "\r\n" + ex.StackTrace);
            }
        }
Example #3
0
 /// <summary>
 /// Метод осуществляет валидацию условия Condidtion, возвращая bool результат, а также опционально пишет сообщения в лог
 /// </summary>
 /// <param name="Condition"> Условие для проверки</param>
 /// <param name="MessagePass"> Сообщение при выполнении условия (опционально)</param>
 /// <param name="MessageFail"> Сообщение при невыполнении условия (опционально)</param>
 /// <param name="MessageQuestion"> Сообщение с типом вопрос (опционально)</param>
 /// <returns> true усли условие выполнено, иначе - false</returns>
 public static bool Validate(bool Condition, string MessagePass = "", string MessageFail = "", string MessageQuestion = "")
 {
     try
     {
         if (Condition)
         {
             if (MessagePass != "")
             {
                 Log.MesPass(MessagePass);
             }
             return(true);
         }
         else
         {
             if (MessageFail != "")
             {
                 Log.MesError(MessageFail);
             }
             if (MessageQuestion != "")
             {
                 Log.MesQuestion(MessageQuestion);
             }
             return(false);
         }
     }
     catch (Exception ex)
     {
         Log.MesError("При проверке условия возникла ошибка:" + ex.Message);
         throw;
     }
 }
Example #4
0
        /// <summary>
        /// Метод пишет текст в лог, в форму и в файл log.log. Запись времени опциональна
        /// </summary>
        /// <param name="mType">Тип Сообщения</param>
        /// <param name="text">Текст, который будет записан в лог</param>
        /// <param name="addTimeStamp">Добавить дату и время к записи, true - добавить, false - не добавлять</param>
        private static void Add(setMessageType mType, string text, bool addTimeStamp = true)
        {
            string textToWrite =
                addTimeStamp == true?
                String.Format("[{0}]   {1} \r\n", DateTime.Now.ToString("HH:mm:ss"), text) :
                    String.Format("                                      {0}\r\n ", text);

            string textToHTML = textToWrite;

            System.Drawing.Color Color = System.Drawing.Color.Black;
            switch (mType)
            {
            case setMessageType.normal:
                Color      = System.Drawing.Color.Black;
                textToHTML = "<font size=\"2\" face=\"Verdana\">" + textToWrite + "</font>";
                break;

            case setMessageType.error:
                Color        = System.Drawing.Color.Red;
                textToHTML   = "<font size=\"2\" face=\"Verdana\" color=\"red\">" + textToWrite + "</font><br/><a href=\"" + ScreenCapture.Printscreen() + "\" target=\"_blank\">скриншот</a><br/><br/>";
                textToWrite += "\r\n" + "file:/" + StartupPath + ScreenCapture.Printscreen().Replace("/", "\\") + " \r\n\r\n";
                break;

            case setMessageType.pass:
                Color      = System.Drawing.Color.Green;
                textToHTML = "<font size=\"2\" face=\"Verdana\" color=\"green\">" + textToWrite + "</font>";
                break;

            case setMessageType.question:
                Color      = System.Drawing.Color.Goldenrod;
                textToHTML = "<font size=\"2\" face=\"Verdana\" color=\"goldenrod\">" + textToWrite + "</font>";
                break;

            case setMessageType.longJSerror:
                string spanID = DateTime.Now.Ticks.ToString();
                Log.MesError("<div style=\"margin: 0px 0px 0px 50px;\"><font size=\"2\" face=\"Verdana\"><a class=\"plus\"" +
                             " href=\"\" onclick=\"return collapse('" + spanID + "', this)\">" + textToWrite + "-> JS ошибка </a></font></div><br><span style=\"display:none;\" id=\"" + spanID + "\">" +
                             text + "</span>");
                break;
            }

            MainForm.form.tbLog.SelectionColor = Color;
            MainForm.form.tbLog.AppendText(textToWrite);
            MainForm.form.tbLog.Refresh();

            File.AppendAllText(StartupPath + "log.html", "<pre style=\"margin: 0px 0px 0px 50px;\">" + textToHTML + "</pre>", Encoding.UTF8);
        }
Example #5
0
        /// <summary>
        /// Отправка письма на почтовый ящик
        /// </summary>
        /// <param name="from">Адрес отправителя</param>
        /// <param name="password">пароль к почтовому ящику отправителя</param>
        /// <param name="mailto">Адрес получателя</param>
        /// <param name="subject">Тема письма</param>
        /// <param name="message">Сообщение</param>
        /// <param name="attachFiles">Присоединенные файлы</param>
        public static void SendYandexMail(string from, string password, string[] mailto, string subject, string message, string[] attachFiles = null)
        {
            try
            {
                using (SmtpClient client = new SmtpClient())
                {
                    MailMessage mail = new MailMessage();
                    mail.From = new MailAddress(from);
                    foreach (string recipient in mailto)
                    {
                        mail.To.Add(new MailAddress(recipient));
                    }
                    mail.Subject = subject;
                    mail.Body    = message;
                    if (attachFiles != null)
                    {
                        foreach (string attachFile in attachFiles)
                        {
                            mail.Attachments.Add(new Attachment(attachFile));
                        }
                    }

                    client.Host                  = "smtp.yandex.ru";
                    client.Port                  = 587;
                    client.EnableSsl             = true;
                    client.UseDefaultCredentials = false;
                    client.Credentials           = new NetworkCredential(from.Substring(0, from.IndexOf("@")), password);
                    client.DeliveryMethod        = SmtpDeliveryMethod.Network;
                    client.Send(mail);
                    mail.Dispose();
                }
            }
            catch (Exception Ex)
            {
                Log.MesError("Вероятно роблемы на стороне smtp.yandex.ru. /r/n " + Ex.Message + "/r/n" + Ex.StackTrace);
            }
        }
Example #6
0
        /// <summary>
        /// Метод получает значение опции из файла options.xml
        /// </summary>
        /// <param name="Node">Путь к опции в формате XPath</param>
        /// <param name="NoSignal">Оключение логирования об ошибке</param>
        /// <returns>Значение опции</returns>
        public static string GetOption(string Node, bool NoSignal = false)
        {
            XmlDocument reader = new XmlDocument();

            reader.Load("options.xml");
            //Мало ли кто укажет лишнюю / в конце пути до ноды
            if (Node.Substring(Node.Length - 1, 1) == "/")
            {
                Node = Node.Substring(0, Node.Length - 1);
            }

            XmlNode node = reader.DocumentElement.SelectSingleNode(Node);

            if (node == null)
            {
                if (!NoSignal)
                {
                    Log.MesError("Такой опции не существует " + Node);
                }
                return("");
            }

            return(node.InnerText);
        }
Example #7
0
        /// <summary>
        /// Метод возвращает имя базы текущей установки
        /// </summary>
        /// <param name="edition">Редакция</param>
        /// <param name="dbType">Тип базы</param>
        /// <returns>Имя базы</returns>
        public static string GetDBname(string edition, string dbType)
        {
            string DBName   = "";
            string fileName = Options.GetOption("/Options/PathToFolderWhereToInstall/edition[@title='" + edition + "']/" + dbType) + "\\bitrix\\php_interface\\dbconn.php";

            if (File.Exists(fileName) == true)
            {
                StreamReader streamReader = new StreamReader(fileName, Encoding.Default);
                string       workText     = streamReader.ReadToEnd();
                streamReader.Close();

                //смотрим, если тип базы Оракл
                string toReplaceDBType = @"^.*\$DBType = ""oracle"";.*$";

                if (Regex.IsMatch(workText, toReplaceDBType, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline))
                {
                    string toReplaceOracle = @"^.*\$DBLogin = ""([^""]*)"";.*$";
                    string replacement     = @"${1}";

                    if (Regex.IsMatch(workText, toReplaceOracle, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline))
                    {
                        DBName = Regex.Replace(workText, toReplaceOracle, replacement, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);
                    }
                    else
                    {
                        System.Windows.Forms.DialogResult result = MessageBox.Show("Невозможно получить имя базы отсюда \r\n" + fileName + "\r\n\r\n Выполнение теста прервано",
                                                                                   "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

                        if (result == System.Windows.Forms.DialogResult.OK)
                        {
                            Log.MesError("Невозможно получить имя базы для устаноки " + edition + "_" + dbType + "\r\nВыполнение теста прервано");
                            return(null);
                        }
                    }
                }
                else
                {
                    string toReplace   = @"^.*\$DBName = ""(.*)"";.*$";
                    string replacement = @"${1}";

                    if (Regex.IsMatch(workText, toReplace, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline))
                    {
                        DBName = Regex.Replace(workText, toReplace, replacement, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);
                    }
                    else
                    {
                        System.Windows.Forms.DialogResult result = MessageBox.Show("Невозможно получить имя базы отсюда \r\n" + fileName + "\r\n\r\n Выполнение теста прервано",
                                                                                   "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

                        if (result == System.Windows.Forms.DialogResult.OK)
                        {
                            Log.MesError("Невозможно получить имя базы для устаноки " + edition + "_" + dbType + "\r\nВыполнение теста прервано");
                            return(null);
                        }
                    }
                }
            }
            else
            {
                System.Windows.Forms.DialogResult result = MessageBox.Show("Не найден файл \r\n" + fileName + "\r\n\r\n Выполнение теста прервано",
                                                                           "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

                if (result == System.Windows.Forms.DialogResult.OK)
                {
                    Log.MesError("Не найден файл " + fileName + "\r\nВыполнение теста прервано");
                    return(null);
                }
            }

            return(DBName);
        }