コード例 #1
0
        private void _ExecuteCommand(IDBCommand command)
        {
            if (command != null)
            {
                if (command.QueryId != null && _cancelledQueries.Contains(command.QueryId))
                {
                    command.CancelCommand = true;
                }

                //if (command.Blocking)
                //    Interlocked.Decrement(ref blockingCommandsCount);


                try
                {
                    TimeSpan waitInQueueSpanTime = DateTime.Now.Subtract(command.GetQueueInsertionTime());
                    DateTime executionStartTime  = DateTime.Now;

                    //if (!isDummy)
                    //    GeneralLogger.Instance.AddLine(LogMessageType.CommandsQueueBlocking, command, command.Blocking);

                    command.Execute(_dbConnection);

                    // Writing Command DONE message to log
                    TimeSpan executionSpanTime = DateTime.Now.Subtract(executionStartTime);
                    /******************************************/

                    // Queue size exceeded - issuing warning, activating callback
                    if (Count > ct_commandQueueSizeExceededWarningThreshold)
                    {
                        GatLogger.Instance.AddMessage("Commands queue threshold exceeded", LogMode.LogAndScreen);
                    }
                    //GeneralLogger.Instance.AddLine(
                    //    LogMessageType.CommandsQueueNumberOfDBCommandsExceeded,
                    //    commandQueueSizeExceededWarningThreshold, Count);


                    // Command executions per minute
                    DateTime now = DateTime.Now;
                    if (_lastCommandExecutionTime.Minute == now.Minute)
                    {
                        _commandsExecutedInLastMinute++;
                    }
                    else
                    {
                        //GeneralLogger.Instance.AddLine(LogMessageType.CommandsQueueCurrExecutionRate, commandsExecutedInLastMinute);
                        _commandsExecutedInLastMinute = 0;
                    }

                    _lastCommandExecutionTime = now;
                }
                catch (Exception e)
                {
                    s_LogAndThrowException(command, e);
                    command.ErrorEventHandler();
                }
            }
        }
コード例 #2
0
        public override void Execute()
        {
            Console.WriteLine("{0}: Execute", GetType());

            using (IConnection session = ConnectionFactory.makeConnection())
            {
                IDBCommand cmd = session.getCommand("Z$SCRIPTS_LIB_API.mt_exec");
                cmd.withParam("P_SESSION_FILE_NAME", m_conf["SessionId"]);
                cmd.withParam("P_TEST_MT", m_conf["mt_test"]);
                cmd.withParam("P_CONDITION", m_conf["condition"]);
                cmd.Execute();

                session.Commit();
            };
        }
コード例 #3
0
        protected void internalInit()
        {
            string procName = "Z$ATT_TEST_SCRIPT_LIB.GenNewSession";

            DataTable dt = null;

            using (IbsoConnection conn = new IbsoConnection())
            {
                conn.Open();
                IDBCommand cmd = conn.getCommand(procName, testSet.Session.Timeout);
                cmd.withParam("p_ext_scr_code", ScenarioId);
                cmd.withCursor("P_XML_CLOB");
                cmd.withParam("p_contur", ConturId);
                cmd.withParam("p_profile", ProfileId);
                cmd.withParam("p_testset", TestSetId);
                cmd.withParam("p_jour_id", JournalId);
                cmd.withParam("p_log_path", logsFolder);
                dt = (DataTable)cmd.Execute();
                conn.Commit();
                conn.Close();
            }

            if (dt.Rows.Count != 1 || dt.Columns.Count != 2)
            {
                throw new TestRunException(String.Format("Вызов процедуры \"{0}\" вернул неверный набор данных. Вернулось строк: {1}, стобцов: {2}. Ожидалось строк: {3}, столбцов: {4}", procName, dt.Rows.Count, dt.Columns.Count, 1, 2));
            }

            string testRunId = dt.Rows[0][1].ToString();

            if (String.IsNullOrEmpty(testRunId))
            {
                throw new TestRunException("Не заполнено обязательное поле \"Имя файла сценария\"");
            }

            IDictionary <string, string> dict = new Dictionary <string, string>();

            dict.Add("testRunId", dt.Rows[0][1].ToString());
            m_conf.updateFrom(dict);

            XmlDocument doc = new XmlDocument();

            try
            {
                doc.LoadXml(dt.Rows[0][0].ToString());
            }
            catch (Exception e)
            {
                throw new TestRunException("Не удалось разобрать xml-содержимое файла сценария", e);
            }

            XmlNode test_node = doc.DocumentElement.FirstChild;

            while (test_node != null)
            {
                Dictionary <string, string> p = new Dictionary <string, string>();
                foreach (XmlAttribute attrib in test_node.Attributes)
                {
                    p.Add(attrib.Name, attrib.Value);
                }
                ITest t = new Test(this, p, test_node);
                m_testList.Add(t);
                test_node = test_node.NextSibling;
            }
        }
コード例 #4
0
        public IList <IDictionary <string, string> > getCases()
        {
            const string procName = "Z$att_test_script_lib.GETTESTS";


            List <IDictionary <string, string> > list = new List <IDictionary <string, string> >();

            Dictionary <string, string> dict = null;

            DataTable dt = new DataTable();

            using (IbsoConnection conn = new IbsoConnection(m_conf["db_user"], m_conf["db_password"], m_conf["db_name"]))
            {
                conn.Open();
                IDBCommand cmd = conn.getCommand(procName, Timeout);
                cmd.withParam("P_COMP", compName);
                cmd.withParam("P_USER", userName);
                cmd.withParam("P_RUN_ERR", failuresOnly);
                cmd.withCursor("P_RECORDSET");
                dt = (DataTable)cmd.Execute();
                conn.Commit();
                conn.Close();
            }

            foreach (DataRow r in dt.Rows)
            {
                dict = new Dictionary <string, string>();

                foreach (DataColumn c in dt.Columns)
                {
                    dict.Add(c.ColumnName, r[c].ToString());
                }

                list.Add(dict);
            }

            /*
             * if (dt.Columns.Count < 6)
             * {
             *  throw new Exception("Выполнение тест сета невозможно. При получении списка тестов получено " + dt.Columns.Count + " полей. Ожидалось не менее 6 полей");
             * }
             *
             * if (dt.Rows.Count > 0)
             * {
             *  for (int i = 0; i < dt.Rows.Count; i++)
             *  {
             *      ScenarioRunConfig config = new ScenarioRunConfig();
             *      config.TestSetId = dt.Rows[i][0].ToString();
             *      config.ScenarioId = dt.Rows[i][1].ToString();
             *      config.ProfileId = dt.Rows[i][2].ToString();
             *      config.ConturId = dt.Rows[i][3].ToString();
             *      string tuneErrString = dt.Rows[i][4].ToString();
             *      if (tuneErrString == null || tuneErrString.Equals("")) tuneErrString = "0";
             *      config.TuneErrRun = int.Parse(tuneErrString);
             *      config.JournalId = dt.Rows[i][5].ToString();
             *
             *      if (dt.Columns.Count > 6)
             *      {
             *          List<string> additionalValues = new List<string>();
             *          for (int k = 6; k < dt.Columns.Count; k++)
             *          {
             *              additionalValues.Add(dt.Rows[i][k].ToString());
             *          }
             *          config.AdditionalValues = additionalValues.ToArray();
             *      }
             *      else
             *      {
             *          config.AdditionalValues = new string[] { };
             *      }
             *
             *      res.Add(config);
             *  }
             * }*/

            return(list);
        }
コード例 #5
0
 /// <summary>
 /// Executes query in database.
 /// </summary>
 /// <param name="query">Query to execute.</param>
 protected virtual void ExecuteDbQuery(IDBCommand query)
 {
     query.Execute();
 }
コード例 #6
0
 protected int ExecuteQuery(IDBCommand query)
 {
     return(_dbExecutor != null?query.Execute(_dbExecutor) : query.Execute());
 }