Exemplo n.º 1
0
        public ActionResult Adicionar(int id)
        {
            DataPool       dataPool = db.DataPool.Find(id);
            List <ChaveVO> lista    = new List <ChaveVO>();

            lista.Add(new ChaveVO("Não", 0));
            lista.Add(new ChaveVO("Sim", 1));
            ViewBag.listStatus   = db.Status.ToList();
            ViewBag.listaChaveVO = lista;
            Script_CondicaoScript Script_CondicaoScript = db.Script_CondicaoScript.FirstOrDefault(x => x.Id == dataPool.IdScript_CondicaoScript);

            ViewBag.listScript         = db.Script.Where(s => s.Id == Script_CondicaoScript.IdScript).ToList();
            ViewBag.listCondicaoScript = db.CondicaoScript.Where(s => s.Id == Script_CondicaoScript.IdCondicaoScript).ToList();

            List <ChaveVO> listaClassificacaoMassa = new List <ChaveVO>();

            listaClassificacaoMassa.Add(new ChaveVO("CT", 0));
            listaClassificacaoMassa.Add(new ChaveVO("Backup", 1));



            ViewBag.ListaClassificacao = listaClassificacaoMassa;

            return(View(dataPool));
        }
Exemplo n.º 2
0
        public ActionResult Editar(int id)
        {
            List <ChaveVO> lista = new List <ChaveVO>();

            lista.Add(new ChaveVO("Não", 0));
            lista.Add(new ChaveVO("Sim", 1));

            ViewBag.listaChaveVO = lista;

            TestData testData = db.TestData.FirstOrDefault(a => a.Id == id);
            Script_CondicaoScript Script_CondicaoScript = db.Script_CondicaoScript.FirstOrDefault(x => x.Id == testData.IdScript_CondicaoScript);

            ViewBag.listScript         = db.Script.Where(s => s.Id == Script_CondicaoScript.IdScript).ToList();
            ViewBag.listCondicaoScript = db.CondicaoScript.Where(s => s.Id == Script_CondicaoScript.IdCondicaoScript).ToList();

            //ViewBag.listScript = db.Script.Where(s => s.IdAUT == testData.DataPool.AUT.Id).ToList();
            //carregaCondicaoScript(testData.Script_CondicaoScript.IdScript+"");
            ViewBag.listStatus = carregaListaStatus(testData.Status.Id);

            List <ChaveVO> listaClassificacaoMassa = new List <ChaveVO>();

            listaClassificacaoMassa.Add(new ChaveVO("CT", 0));
            listaClassificacaoMassa.Add(new ChaveVO("Backup", 1));

            ViewBag.ListaClassificacao = listaClassificacaoMassa;

            return(View(testData));
        }
        private void ReplaceQuery(List <Encadeamento_TestData> EncadeamentoTdList, int idFaseTeste, int idMaquinaVirtual, bool EnvioTelegram)
        {
            Entities db = new Entities();
            // validar ambiente disponível e setar a flag em uso antes de inserir a query

            string testdataList = "";

            foreach (var Encadeamento_TestData in EncadeamentoTdList)
            {
                //recuperando objeto testdata, para ter recuperar o IdScript_CondicaoScript
                TestData testData = db.TestData.FirstOrDefault(x => x.Id == Encadeamento_TestData.IdTestData);

                Script_CondicaoScript script_CondicaoScript = db.Script_CondicaoScript.Where(x => x.Id == testData.IdScript_CondicaoScript).FirstOrDefault();

                string query = script_CondicaoScript.QueryTosca;

                String queryTemp = query.Replace("ptdTosca", Encadeamento_TestData.IdTestData.ToString());

                Usuario  user = GetLoggedUser();
                Execucao exec = new Execucao();
                Script_CondicaoScript_Ambiente script_CondicaoScript_Ambiente =

                    db.Script_CondicaoScript_Ambiente
                    .Where(x => x.IdScript_CondicaoScript == testData.IdScript_CondicaoScript)
                    .Where(x => x.IdAmbienteVirtual == idMaquinaVirtual)
                    .Where(x => x.IdAmbienteExecucao == Encadeamento_TestData.IdAmbienteExecucao).FirstOrDefault();

                exec.IdScript_CondicaoScript_Ambiente = script_CondicaoScript_Ambiente.Id;
                exec.IdTipoFaseTeste  = idFaseTeste; // pegar via campo popup modal play
                exec.IdStatusExecucao = (int)Enumerators.EnumStatusExecucao.AguardandoProcessamento;
                exec.Usuario          = user.Id.ToString();
                exec.IdTestData       = Encadeamento_TestData.IdTestData; // pegar o id via tela
                exec.SituacaoAmbiente = (int)Enumerators.EnumSituacaoAmbiente.EmUso;
                exec.ToscaInput       = queryTemp;
                exec.EnvioTelegram    = false;
                db.Execucao.Add(exec);

                Entities db1 = new Entities();
                TestData td1 = db1.TestData.Where(x => x.Id == Encadeamento_TestData.IdTestData).FirstOrDefault();
                td1.IdStatus  = (int)Enumerators.EnumStatusTestData.EmGeracao;
                td1.GeradoPor = Util.GetUsuarioLogado().Login;
                db1.TestData.Attach(td1);

                db1.Entry(td1).State = System.Data.Entity.EntityState.Modified;

                try
                {
                    db.SaveChanges();
                    db1.SaveChanges();
                }
                catch (Exception ex)
                {
                    this.FlashError(ex.Message);
                }
            }
        }
Exemplo n.º 4
0
        public static void CriarPlanilhaExecucao(TestData td)
        {
            try
            {
                using (var excelPackage = new ExcelPackage())
                {
                    DbEntities db = new DbEntities();
                    Log.Info("Entrada do método de criar planilha pra execução.");
                    excelPackage.Workbook.Properties.Author = "AUTOMAÇÃO";
                    excelPackage.Workbook.Properties.Title  = "Planilha de Massa - ATMP";

                    // Aqui simplesmente adiciono a planilha inicial
                    var sheet = excelPackage.Workbook.Worksheets.Add(@ConfigurationSettings.AppSettings["SheetName"]);
                    sheet.Name = @ConfigurationSettings.AppSettings["SheetName"];
                    Log.Info("Aba da planilha criada com sucesso.");

                    // Títulos
                    List <ParametroValorVO> Parametros = (from p in db.Parametro
                                                          join ps in db.ParametroScript on p.Id equals ps.IdParametro
                                                          join pv in db.ParametroValor on ps.Id equals pv.IdParametroScript
                                                          where pv.IdTestData == td.Id && ps.IdTipoParametro == (int)EnumTipoParametro.Input
                                                          select new ParametroValorVO
                    {
                        DescricaoParametro = p.Descricao,
                        Valor = pv.Valor
                    }
                                                          ).ToList();
                    Log.Info("Lista de Parametros carregada com sucesso. Foram carregados: " + Parametros.Count + " parametros para esse TestData");

                    Script_CondicaoScript scs = db.Script_CondicaoScript.Where(x => x.Id == td.IdScript_CondicaoScript).FirstOrDefault();

                    Log.Info("Script_CondicaoScript carregada");

                    for (int i = 1; i + 1 <= Parametros.Count; i++)
                    {
                        sheet.Cells[1, i].Value = Parametros[i - 1].DescricaoParametro;
                        sheet.Cells[1, i].Worksheet.Cells["A1:Z1"].Style.Font.Bold = true;
                        sheet.Cells[2, i].Value = Parametros[i - 1].Valor;
                    }
                    Log.Info("Fim da criação dos títulos das colunas");

                    string path = @ConfigurationSettings.AppSettings["ToscaInputData"];
                    string nomeTecnicoScript = "\\" + scs.NomeTecnicoScript + ".xls";
                    path += nomeTecnicoScript;
                    File.WriteAllBytes(path, excelPackage.GetAsByteArray());
                    Log.Info("Arquivo criado com sucesso no caminho: " + path);
                }

                Log.Info("O arquivo Excel foi criado com sucesso.");
            }
            catch (Exception ex)
            {
                Log.Error("Erro ao criar Planilha de execução. Erro: " + ex.Message);
            }
        }
Exemplo n.º 5
0
        private static void VerificaStatusTosca(Script_CondicaoScript scs, Execucao exec)
        {
            Log.Info("Execução:");
            Log.DebugObject(exec);

            Log.Info("Script_CondicaoScript:");
            Log.DebugObject(scs);

            Log.Info("Entrada no método VerificaStatusTosca.");

            DateTime InicioExecucao = exec.InicioExecucao ?? DateTime.Now;
            //DateTime TempoEstimadoExecucao = scs.TempoEstimadoExecucao ?? DateTime.Now;
            DateTime TempoEstimadoExecucao = scs.TempoEstimadoExecucao;
            int      TempoEstimadoExec     = Int32.Parse(String.Format("{0:mm}", TempoEstimadoExecucao));

            Log.Debug("Data Inicio da execução: " + InicioExecucao);
            Log.Debug("Tempo Estimado em Minutos: " + TempoEstimadoExec);

            DateTime TerminoEstimado = InicioExecucao.AddMinutes(TempoEstimadoExec);

            Log.Debug("Termino Estimado: " + TerminoEstimado);

            string dir = ConfigurationSettings.AppSettings["DirReport"];

            Log.Info("Condição do Loop:  while (!File.Exists(dir) || TerminoEstimado >= DateTime.Now)");
            Log.Debug("Execução iniciada em " + InicioExecucao);
            Log.Info("Aguardando o Tosca Terminar a execução...");

            while (!File.Exists(dir) && TerminoEstimado >= DateTime.Now)
            {
                Thread.Sleep(8000);
            }

            Log.Info("Saída do Loop de Execução.");
            Log.Info("Verifica se o arquivo do Tosca foi criado.");

            if (!File.Exists(dir))
            {
                Log.Warn("Entrada na condição. Foi verificado que o arquivo de report do Tosca não foi gerado.");

                Log.Warn("Encerrando execução do Tosca.");

                //
                KillTricentisAutomationAgent();
                Log.Warn("Aguardando a finalização da execução do Tosca...");
                Thread.Sleep(7000);
                Log.Info("Execução do Tosca finalizada com sucesso.");

                Log.Info("Criando arquivo de report da execução com erro.");

                string report;
                try
                {
                    foreach (string f in Directory.EnumerateFiles(ConfigurationSettings.AppSettings["Tosca_Evidences"], "*_" + exec.IdTestData + "_*"))
                    {
                        report = "\"executionFolder\",\"" + Path.GetFullPath(f) + "\"" + Environment.NewLine;
                    }
                }
                catch (Exception e)
                {
                    Log.Warn("A pasta da execução não foi gerada pelo Tosca Commander, favor verificar o problema!");
                }

                File.Create(dir).Close();

                Log.Info("Arquivo criado com sucesso: " + dir);

                report  = "\"ID_TEST_DATA\",\"" + exec.IdTestData + "\",\"Failed\"" + Environment.NewLine;
                report += "A Execução foi abortada pois o Tosca não respondeu.";

                Log.Info("Texto do Relatório: " + report);

                File.WriteAllText(dir, report);
                Log.Info("Arquivo criado com sucesso.");
            }
            else
            {
                Log.Info("O arquivo de report foi gerado pelo ToscaCommamder com sucesso.");
            }
        }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            DbEntities DbEntities = new DbEntities();

            try
            {
                #region Debug
                Log.Info("Iniciando processamento do Build 1.");
                Log.Info("Carregando Query do Tosca");
                #endregion

                DbEntities db = new DbEntities();

                #region Debug
                Log.Info("Carregamento do DbEntities realizado com sucesso!");
                #endregion

                Ip = GetIpLocal();
#if DEBUG
                Ip = "10.43.6.141";
#endif
                #region Debug
                Log.Info("IP recuperado com sucesso.");
                Log.Debug("Inciando processo do Build 1 na VDI " + Ip + ".");
                #endregion

                #region Debug
                Log.Info("Instanciando objetos de EncadeamentoVOs e ExecucaoVOs...");
                #endregion

                List <EncadeamentoVO> EncadeamentoVOs = new List <EncadeamentoVO>();
                List <ExecucaoVO>     ExecucaoVOs     = new List <ExecucaoVO>();

                #region Debug
                Log.Debug("Objetos Instanciados com sucesso...");
                Log.Debug("Iniciando criação dos paramEncad...");
                #endregion

                SqlParameter[] paramEncad =
                {
                    new SqlParameter("@IpVdi", Ip),
                };

                #region Debug
                Log.Debug("Objetos Instanciados com sucesso...");
                Log.Debug("Preparando para ");
                #endregion

                //Executa a PROC que retorna os encadeamentos
                EncadeamentoVOs = db.Database.SqlQuery <EncadeamentoVO>("EXEC PR_LISTAR_ENCADEAMENTO @IpVdi ", paramEncad).ToList();

                Encadeamento Encadeamento      = null;
                bool         ExecucaoEncadeada = false;

                //Percorrendo os encademanentos
                foreach (EncadeamentoVO EncadeamentoVO in EncadeamentoVOs)
                {
                    try
                    {
                        //Definindo parâmetros para passar na PROC de execução
                        SqlParameter[] paramExec =
                        {
                            new SqlParameter("@IpVdi",          Ip),
                            new SqlParameter("@IdEncadeamento", EncadeamentoVO.IdEncadeamento),
                        };

                        ExecucaoEncadeada = EncadeamentoVO.IdEncadeamento != null;

                        //Verifica se existe encadeamento
                        if (!ExecucaoEncadeada)
                        {
                            paramExec[1].Value = DBNull.Value;
                        }

                        #region Debug
                        Log.Info("Iniciando o carregamento dos registros da tabela de execuções...");
                        #endregion
                        //Executa a PROC que retorna as Execuções
                        ExecucaoVOs = db.Database.SqlQuery <ExecucaoVO>("EXEC PR_LISTAR_EXECUCAO @IpVdi, @IdEncadeamento ", paramExec).ToList();

                        #region Debug
                        Log.Info("Carregamento realizado com sucesso!");
                        Log.Debug("Foram recuperadas " + ExecucaoVOs.Count + " registros de Execuções.");
                        Log.Info("Entrando na Iteração das execuções!");

                        Log.Info("Verificando opção de Envio Telegram.");
                        #endregion

                        #region Verifica Envio Telegram
                        //Verifica opção de Envio de Telegram
                        EnvioTelegram = ExecucaoVOs.FirstOrDefault().EnvioTelegram;

                        string opcao;
                        if (EnvioTelegram)
                        {
                            opcao = "Enviar Notificação no Telegram.";
                        }
                        else
                        {
                            opcao = "Não Enviar Notificação no Telegram.";
                        }
                        #endregion

                        #region Debug
                        Log.Info("Para esse bloco de execuções foi escolhida a opção de " + opcao + "!");
                        #endregion

                        if (ExecucaoEncadeada)
                        {
                            Encadeamento = new Encadeamento();
                        }

                        foreach (ExecucaoVO item in ExecucaoVOs)
                        {
                            #region Debug
                            Log.Info("######################################## INICIANDO EXECUCAO DO TESTDATA " + item.IdTestData + " ###################################");
                            Log.Debug("Dados da Execução - ID Execução: " + item.Id);
                            Log.Debug("Dados da Execução - Nome da query do Tosca:" + item.NomeQueryTosca);
                            Log.Debug("Dados da Execução - Ambiente Virtual:" + item.AmbienteVirtual);
                            Log.Debug("Dados da Execução - Envio Telegram:" + item.EnvioTelegram);


                            if (item.Encadeado)
                            {
                                Log.Info("Dados da Execução - O TestData faz parte de uma execução encadeada.");
                            }

                            Log.DebugObject(item);
                            #endregion

                            //verifica se execução foi cancelada
                            int idStatusExecucao = db.Execucao.Find(item.Id).IdStatusExecucao;
                            if (idStatusExecucao == (int)EnumStatusExecucao.Cancelada)
                            {
                                int?    Idusuario = db.TestData.Find(item.Id).IdUsuario;
                                Usuario usuario   = db.Usuario.Find(Idusuario);
                                Log.Info("A execução de ID: " + item.Id + " foi cancelada pelo usuário '" + usuario.Login + "'");
                                break;
                            }


                            #region Define início execução
                            Execucao exec = db.Execucao.FirstOrDefault(x => x.Id == item.Id);
                            exec.InicioExecucao = DateTime.Now;
                            db.Execucao.Attach(exec);
                            db.Entry(exec).State = System.Data.Entity.EntityState.Modified;
                            db.SaveChanges();
                            #endregion

                            #region Debug
                            Log.Info("Atualizando TestData com o ID da execução corrente.");
                            #endregion

                            TestData td = db.TestData.FirstOrDefault(x => x.Id == item.IdTestData);

                            #region Debug
                            Log.DebugObject(td);
                            #endregion

                            td.IdExecucao = item.Id;
                            db.TestData.Attach(td);
                            db.Entry(td).State = System.Data.Entity.EntityState.Modified;
                            //db.SaveChanges();

                            int IdScriptCondicaoScript = td.IdScript_CondicaoScript;

                            //Verifica se existem dados de saída de outras execuções
                            if (ExecucaoEncadeada)
                            {
                                Encadeamento.CarregarParametosEntrada(td.Id, IdScriptCondicaoScript);
                            }

                            #region Debug
                            Log.Info("Id de execução inserido com sucesso na tabela de TestData.");
                            Log.DebugObject(td);
                            #endregion

                            if (IdDataPool == null)
                            {
                                IdDataPool = td.IdDataPool;
                            }

                            if (AmbienteVirtual == "")
                            {
                                AmbienteVirtual = item.AmbienteVirtual;
                            }

                            #region Debug
                            Log.Info("Carregando Query do Tosca...");
                            Log.Info("Criando Arquivo de Query do Tosca...");
                            #endregion

                            #region Execução aplicativo TOSCA
                            if (item != null)
                            {
                                CriaArquivoQUERY(item.NomeQueryTosca, item.QueryTosca);

                                #region Debug
                                Log.Info("Query encontrada no banco de dados com sucesso!");
                                #endregion
                            }
                            else
                            {
                                Log.Info("Query não encontrada no banco de dados");
                                Console.ReadLine();
                            }

                            if (td != null)
                            {
                                Log.Info("TestData localizado.");
                                ExcluirPlanilha(td);
                                CriarPlanilhaExecucao(td);
                            }
                            else
                            {
                                Log.Info("TestData não localizado.");
                                Console.ReadLine();
                            }

                            Execucao ex_tmp = db.Execucao.Where(x => x.Id == item.Id).FirstOrDefault();

                            TipoFaseTeste tp_fase_teste = db.TipoFaseTeste.Where(x => x.Id == ex_tmp.IdTipoFaseTeste).FirstOrDefault();

                            Log.Info("Fase de teste selecionada:" + tp_fase_teste.Descricao);

                            string listaExecucaoTosca = item.ListaExecucaoTosca.Replace("AMBIENTE", tp_fase_teste.Descricao);
                            //criação do script tcs que será usado pelo tcshell do tosca
                            Log.Info("Criando Arquivo TCS do Tcshell");
                            string tcs = ConfigurationSettings.AppSettings["ArquivoTCS"];

                            tcs = tcs.Replace("@QuebraLinha ", Environment.NewLine);
                            tcs = tcs.Replace("@LimpaLog", "\"Clear Log\"");
                            tcs = tcs.Replace("@ListaExecucaoTosca", "\"" + listaExecucaoTosca + "\"" + " task \"Checkout tree\" ");
                            //tcs = tcs.Replace("@ListaExecucaoTosca", "\"" + item.ListaExecucaoTosca + "\"");
                            //tcs = tcs.Replace("@ListaExecucaoTosca", "\"" + "/Execution/ExecutionLists/DEV/SIEBEL_63/TI/CONTATO_E_CONTA_PF_SEM_ENVIO_CDI" + "\"" + " task \"Checkout tree\" ");
                            tcs = tcs.Replace("@NomeRelatorio", "\"Print Report ... TDMREPORT\"");
                            tcs = tcs.Replace("@DiretorioRelatorio", "\"" + item.DiretorioRelatorio + "\" checkinall");
                            //tcs = tcs.Replace("@DiretorioRelatorio", "\"" + item.DiretorioRelatorio + "\"");

                            CriaArquivoTCS(tcs, item.CaminhoArquivoTCS);

                            #region Debug
                            Log.Debug("tcs = " + tcs);

                            //Executando o Kill do Agente do Tosca
                            Log.Info("Executando o Kill do Agente do Tosca...");
                            #endregion

                            KillTricentisAutomationAgent();

                            List <string> strcmdtext = new List <string>();
                            strcmdtext.Add(@"tcshell -workspace");
                            //strcmdtext.Add(@" ""C:\Tosca_Projects\Tosca_Workspaces\Workspace_TRG_Fev\portal_remote\portal_remote.tws"" ");
                            strcmdtext.Add(@ConfigurationSettings.AppSettings["ToscaWorkspace"]);
                            Log.Debug("Workspace escolhido = " + @ConfigurationSettings.AppSettings["ToscaWorkspace"]);

                            strcmdtext.Add(" -login \"credencial_atmp\" \"@utomaoi\"");

                            strcmdtext.Add(" -executionmode");
                            strcmdtext.Add(@" """ + item.CaminhoArquivoTCS + "\" ");

                            Log.Info("Criando Comando para executar o Tcshell");

                            var comando = string.Join(string.Empty, strcmdtext.ToArray());

                            Log.Debug("Comando = " + comando);
                            Process cmd = new Process();
                            cmd.StartInfo.FileName = "cmd.exe";
                            cmd.StartInfo.RedirectStandardInput  = true;
                            cmd.StartInfo.RedirectStandardOutput = true;
                            cmd.StartInfo.CreateNoWindow         = true;
                            cmd.StartInfo.UseShellExecute        = false;
                            cmd.StartInfo.RedirectStandardError  = true;
                            cmd.Start();

                            cmd.StandardInput.WriteLine(@"cd\");
                            //cmd.StandardInput.WriteLine(@"cd C:\Tosca_Projects\Tosca_Workspaces\Workspace_TRG_Fev\portal_remote\remote_exec");
                            cmd.StandardInput.WriteLine(@"cd " + ConfigurationSettings.AppSettings["RemoteExecReport"]);

                            #region Debug
                            Log.Debug("Dir Remote Execution Report: " + ConfigurationSettings.AppSettings["RemoteExecReport"]);
                            Log.Info("Executando o Tcshell");
                            #endregion

                            cmd.StandardInput.WriteLine(comando);
                            cmd.StandardInput.Flush();
                            cmd.StandardInput.Close();

                            Log.Info("Atualizando status da Execução...");
                            exec = null;
                            exec = db.Execucao.Where(x => x.Id == item.Id).FirstOrDefault();

                            //Log.DebugObject(exec);
                            exec.IdStatusExecucao = (int)EnumStatusExecucao.EmProcessamento;
                            db.Execucao.Attach(exec);
                            db.Entry(exec).State = System.Data.Entity.EntityState.Modified;
                            db.SaveChanges();

                            #region Debug
                            Log.Info("Atualizando status da Execução...");

                            Log.DebugObject(exec);
                            #endregion

                            #region Debug
                            Log.Info("Recuperando ScriptCondicao_Script do TestData atual.");
                            #endregion

                            Script_CondicaoScript scs = db.Script_CondicaoScript.FirstOrDefault(x => x.Id == td.IdScript_CondicaoScript);

                            #region Debug
                            Log.Info("ScriptCondicao_Script do TestData atual recuperado com sucesso.");
                            Log.DebugObject(scs);
                            Log.Info("Aguardando o Tosca Terminar a execução do script.");
                            #endregion

                            VerificaStatusTosca(scs, exec);

                            Log.Info(cmd.StandardOutput.ReadToEnd());
                            string output = cmd.StandardOutput.ReadToEnd().ToString();
                            Console.WriteLine("output: " + output);
                            string outputerro = cmd.StandardError.ReadToEnd().ToString();
                            Console.WriteLine("erro: " + outputerro);

#if DEBUG
                            Tosca tosca = new Tosca();
                            tosca.processa(IdScriptCondicaoScript, td.Id);
#endif
                            //Verifica se existem dados de saída do script e os carregam no Dictionary de parametros
                            if (ExecucaoEncadeada)
                            {
                                Encadeamento.CarregarParametrosSaida(td.Id, IdScriptCondicaoScript);
                            }

                            //Chamada do pos build 2
                            string UrlBuild2 = GetUrlAmbiente(item.AmbienteVirtual);
                            Log.Debug("Iniciando chamada do Pós Build 2 na url: " + UrlBuild2);

                            if (UrlBuild2 != null)
                            {
                                runJobJenkinsRemote(UrlBuild2);
                            }
                            //runJobJenkinsLocal(UrlBuild2, "brucilin.de.gouveia", "brucilin.de.gouveia");
                            else
                            {
                                throw new Exception("Não foi possível encontrar o ambiente virtual para realizar a chamada do PosBuild2.");
                            }
                            #endregion

                            Execucao execucao = db.Execucao.Where(x => x.Id == item.Id).FirstOrDefault();

                            #region Debug
                            Log.DebugObject(execucao);
                            #endregion

                            //Aguardando o status da execução atual ser atualizado pelo pós build 2
                            while (execucao.IdStatusExecucao == (int)EnumStatusExecucao.EmProcessamento || execucao.IdStatusExecucao == (int)EnumStatusExecucao.ProcessandoLogTosca)
                            {
                                Thread.Sleep(4000);

                                #region Debug
                                Log.Info("Aguardando execução do Pós build 2 para atualização da execução de ID " + exec.Id);
                                #endregion

                                db       = new DbEntities();
                                execucao = db.Execucao.Where(x => x.Id == item.Id).FirstOrDefault();
                            }

                            #region Debug
                            Log.DebugObject(execucao);

                            Log.Info("Execução de Id " + exec.Id + " concluida com sucesso!");
                            #endregion

                            db = new DbEntities();
                            TestData TestData = db.TestData.FirstOrDefault(x => x.Id == item.IdTestData);

                            #region Salva Output do TestData no Agendamento
                            if (TestData.Execucao.IdAgendamento != null)
                            {
                                Agendamento ag = db.Agendamento.FirstOrDefault(x => x.Id == TestData.Execucao.IdAgendamento);
                                ag.Output += Log.GetMyLog().ToString();

                                db.Agendamento.Attach(ag);
                                //Prepara a entidade para uma Edição
                                db.Entry(ag).State = System.Data.Entity.EntityState.Modified;
                                // informa que o obejto será modificado
                                db.SaveChanges();
                            }
                            #endregion

                            #region Debug
                            Log.DebugObject(TestData);
                            #endregion

                            TestDataGeneratedSolicited.Add(TestData);

                            #region Debug
                            Log.DebugObject(TestDataGeneratedSolicited);
                            #endregion

                            switch (TestData.IdStatus)
                            {
                            case (int)EnumStatusTestData.Falha:
                                TestDataGeneratedFailed.Add(TestData);

                                #region Debug
                                Log.DebugObject(TestDataGeneratedFailed);
                                #endregion

                                //Verifica se a execução faz parte de um encadeamento
                                if (ExecucaoEncadeada)
                                {
                                    Encadeamento.InterromperEncadeamento(TestData);
                                }

                                break;

                            case (int)EnumStatusTestData.Disponivel:
                                TestDataGeneratedSuccessfully.Add(TestData);
                                Log.DebugObject(TestDataGeneratedSuccessfully);
                                break;
                            }

                            #region Debug
                            Log.Debug("Processando dados da execução...");
                            Log.Debug("Dados da Execução - ID Execução: " + item.Id);
                            Log.Debug("Dados da Execução - Nome da query do Tosca:" + item.NomeQueryTosca);
                            Log.Debug("Dados da Execução - Ambiente Virtual:" + item.AmbienteVirtual);
                            Log.Debug("Dados da Execução - Envio Telegram:" + item.EnvioTelegram);
                            Log.Info("######################################## FINALIZANDO EXECUCAO DO TESTDATA " + item.IdTestData + " ##################################");
                            Log.Info(Environment.NewLine);
                            Log.Info(Environment.NewLine);
                            #endregion
                        }
                    }
                    catch (EncadeamentoException ex)
                    {
                        LiberarExecucoesEmProcessamento(ex, EncadeamentoVO.IdEncadeamento);
                        LiberarExecucoesAguardandoProcessamento();
                    }
                }

                Message = GetExecutionSuccessMessage(IdDataPool, AmbienteVirtual);
            }
            catch (Exception ex)
            {
                LiberarExecucoesEmProcessamento(ex);
            }
            finally
            {
                LiberarExecucoesAguardandoProcessamento();
            }
        }
Exemplo n.º 7
0
        private static void ReplaceQuery(List <int> ids, int idFaseTeste, int idMaquinaVirtual, int idAmbienteExecucao, Usuario user, bool EnvioTelegram)
        {
            #region Entities
            DbEntities db = new DbEntities();
            #endregion

            TestData testData = db.TestData.Find(ids.First());

            Script_CondicaoScript script_CondicaoScript = db.Script_CondicaoScript.Where(x => x.Id == testData.IdScript_CondicaoScript).FirstOrDefault();

            string query = script_CondicaoScript.QueryTosca;

            string testdataList = "";

            foreach (var item in ids)
            {
                #region Replace Query
                String queryTemp = query.Replace("ptdTosca", item.ToString());
                #endregion
                db = new DbEntities();

                #region Edição Entidade Execução
                //Execucao exec = new Execucao();
                Execucao exec = db.Execucao.FirstOrDefault(x => x.IdTestData == item);
                Script_CondicaoScript_Ambiente script_CondicaoScript_Ambiente = db.Script_CondicaoScript_Ambiente.Where(x => x.IdScript_CondicaoScript == testData.IdScript_CondicaoScript).Where(x => x.IdAmbienteVirtual == idMaquinaVirtual).Where(x => x.IdAmbienteExecucao == idAmbienteExecucao).FirstOrDefault();
                exec.IdScript_CondicaoScript_Ambiente = script_CondicaoScript_Ambiente.Id;
                //exec.IdTipoFaseTeste = idFaseTeste; // pegar via campo popup modal play
                exec.IdStatusExecucao = (int)EnumStatusExecucao.AguardandoProcessamento;
                exec.Usuario          = user.Id.ToString();
                exec.IdTestData       = item; // pegar o id via tela
                exec.SituacaoAmbiente = (int)EnumSituacaoAmbiente.EmUso;
                exec.ToscaInput       = queryTemp;
                exec.EnvioTelegram    = EnvioTelegram;
                // db.Execucao.Add(exec);
                db.Execucao.Attach(exec);
                db.Entry(exec).State = System.Data.Entity.EntityState.Modified;
                #endregion

                #region Edição Entidade TestData
                DbEntities db1 = new DbEntities();
                TestData   td1 = db1.TestData.Where(x => x.Id == item).FirstOrDefault();
                td1.IdStatus  = (int)EnumStatusTestData.EmGeracao;
                td1.GeradoPor = user.Login;
                db1.TestData.Attach(td1);

                db1.Entry(td1).State = System.Data.Entity.EntityState.Modified;
                #endregion

                try
                {
                    #region Salvar Entidades
                    db.SaveChanges();
                    db1.SaveChanges();
                    #endregion
                }
                catch (Exception ex)
                {
                    #region Log Error
                    Log.Error("Ocorreu o seguinte erro no método Play(). " + ex.Message);
                    Log.Error(ex.StackTrace);
                    #endregion
                }
            }
        }
Exemplo n.º 8
0
        static void Main(string[] args)
        {
            #region Mock Para Simular Execução Agendada
#if DEBUG
            #region Debug
            Log.Info("Foi iniciado o .BAT de Agendamento no modo de DEBUG...");
            #endregion

            args = new string[1];

            args[0] = "idAgendamento:7;idFaseTeste:1;idMaquinaVirtual:1;enviarTelegram:True;idAmbienteExecucao:1;idUsuario:2";
#endif
            #endregion

            #region Debug
            //Verifica se foi passado o ID da Execução
            Log.Info("Iniciando execucao do Metodo Main.");
            #endregion
            if (args.Count() > 0)
            {
                #region Debug
                Log.Info("Validacao da quantidade de argumentos passadas no Main atendida com sucesso.");
                Log.Info("Foram recebidos " + args.Count() + " argumento(s) no args.");
                Log.Info("Argumento(s) recebido(s): " + args[0].ToString());
                #endregion

                #region DbEntities

                #region Debug
                Log.Info("Iniciando coneccao com o DbEntities...");
                #endregion

                DbEntities db = new DbEntities();

                #region Debug
                Log.Info("DbEntities instanciado com sucesso...");
                #endregion

                #endregion

                #region  Pegando os Parâmetros

                #region Debug
                Log.Info("Iniciando tratamento dos parametro(s) recebido(s)...");
                #endregion

                Dictionary <string, string> parameter = new Dictionary <string, string>();

                foreach (string param in args[0].Split(';'))
                {
                    string key   = param.Split(':')[0];
                    string value = param.Split(':')[1];

                    if (key.Equals("idAgendamento"))
                    {
                        int IdAgendamentp = Int32.Parse(value);
                        List <Agendamento_TestData> agTd = db.Agendamento_TestData.Where(x => x.IdAgendamento == IdAgendamentp).ToList();

                        key   = "idTestData";
                        value = "";

                        foreach (Agendamento_TestData ag in agTd)
                        {
                            if (ag.Equals(agTd.Last()))
                            {
                                value += ag.IdTestData;
                            }
                            else
                            {
                                value += ag.IdTestData + ",";
                            }
                        }
                    }



                    #region Debug
                    Log.Info("Key: " + key + ";" + " Value: " + value);
                    #endregion

                    parameter.Add(key, value);
                }

                #region Debug
                Log.Info("Parametros tratados com sucesso!");
                Log.Info("Iniciando carregamento do Usuario...");
                #endregion

                int     idUsuario = Int32.Parse(parameter["idUsuario"]);
                Usuario user      = db.Usuario.FirstOrDefault(x => x.Id == idUsuario);

                #region Debug
                Log.Info("Usuario carregado com sucesso...");
                #endregion


                #endregion

                #region Validando se o Ambiente Está Disponível para o Agendamento

                int      idTestData = Int32.Parse(parameter["idTestData"].Split(',')[0]);
                TestData td         = db.TestData.FirstOrDefault(x => x.Id == idTestData);

                #region DebugObject
                Log.DebugObject(td);
                #endregion

                int IdAmbienteVirtual = Int32.Parse(parameter["idMaquinaVirtual"]);

                Script_CondicaoScript script_CondicaoScript = db.Script_CondicaoScript.FirstOrDefault(x => x.Id == td.DataPool.IdScript_CondicaoScript);

                #region DebugObject
                Log.DebugObject(script_CondicaoScript);
                #endregion

                #region Query de Ambientes

                Execucao execucaoParaAmbVirtual =
                    (from exec in db.Execucao
                     join sca in db.Script_CondicaoScript_Ambiente on exec.IdScript_CondicaoScript_Ambiente equals sca.Id
                     join av in db.AmbienteVirtual on sca.IdAmbienteVirtual equals av.Id
                     where exec.SituacaoAmbiente == (int)LaefazWeb.Enumerators.EnumSituacaoAmbiente.EmUso &&
                     av.Id == IdAmbienteVirtual
                     select exec).FirstOrDefault();

                #region DebugObject
                Log.DebugObject(execucaoParaAmbVirtual);
                #endregion

                #endregion

                #endregion

                #region Função Play

                #region Debug
                Log.Info("Chamada do método Play()...");
                Log.Info(parameter["idTestData"] + "," + parameter["idFaseTeste"] + "," + parameter["idMaquinaVirtual"] + "," + Convert.ToBoolean(parameter["enviarTelegram"]) + "," + parameter["idAmbienteExecucao"] + "," + user);

                #endregion

                if (execucaoParaAmbVirtual == null)
                {
                    #region Debug
                    Log.Info("Ambiente disponivel para execucao do agendamento.");
                    #endregion
                    Play(parameter["idTestData"], parameter["idFaseTeste"], parameter["idMaquinaVirtual"], Convert.ToBoolean(parameter["enviarTelegram"]), parameter["idAmbienteExecucao"], user);

                    //#region Excluir Job Jenkins
                    //RemoveJobJenkins(parameter["idTestData"]);
                    //#endregion
                }
                else
                {
                    AmbienteVirtual av = db.AmbienteVirtual.FirstOrDefault(x => x.Id == IdAmbienteVirtual);
                    #region DebugObject
                    Log.DebugObject(av);
                    #endregion

                    #region Exception Error
                    Log.Error("Não foi possível iniciar a execução pois o ambiente (VDI " + av.IP + ") não está Disponível para Execucao no momento.");
                    Log.Error("Detalhes da Execucao em Andamento...");
                    Log.Error("Id Execucao: " + execucaoParaAmbVirtual.Id);
                    Log.Error("Usuario: " + execucaoParaAmbVirtual.Usuario);
                    Log.Error("Script: " + execucaoParaAmbVirtual.Script_CondicaoScript_Ambiente.Script_CondicaoScript.NomeTecnicoScript);
                    Log.Error("Inicio Execucão: " + execucaoParaAmbVirtual.InicioExecucao);
                    throw new Exception("Não foi possível iniciar a execução pois o ambiente (VDI " + av.IP + ") não está Disponível para Execucao no momento.");
                    #endregion
                }

                #endregion
            }
            else
            {
                #region Exception Error
                Log.Error("Foi realizada uma chamada do .BAT de Agendamento, mas não foram passados os parâmetros conforme esperado.");
                throw new Exception("Foi realizada uma chamada do .BAT de Agendamento, mas não foram passados os parâmetros conforme esperado.");
                #endregion
            }
        }
Exemplo n.º 9
0
        public static bool ValidaPlanilhaExcelExecucao(string path, DataPool dp)
        {
            System.Data.DataTable dt = new System.Data.DataTable();
            //Conexão com Excel
            string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + path + "';Extended Properties='Excel 12.0 xml;HDR=YES;IMEX=1;'";

            using (OleDbConnection conExcel = new OleDbConnection(excelConnectionString))
            {
                OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = conExcel;

                conExcel.Open();

                System.Data.DataTable table = conExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                cmd.CommandText = "select * from [CONFIG$D6:D11]";

                OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
                adp.Fill(dt);
            }
            bool retorno = true;

            string[] valores = new string[3];
            int      count   = 0;

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (!dt.Rows[i].ItemArray[0].ToString().Equals(""))
                {
                    valores[count] = dt.Rows[i].ItemArray[0].ToString();
                    count++;
                }
            }

            string sistema  = "";
            string script   = "";
            string condicao = "";

            for (int i = 0; i < valores.Length; i++)
            {
                if (i == 0)
                {
                    sistema = valores[i];
                }

                if (i == 1)
                {
                    script = valores[i];
                }

                if (i == 2)
                {
                    condicao = valores[i];
                }
            }

            DbEntities db = new DbEntities();

            Script_CondicaoScript scs = db.Script_CondicaoScript.Where(x => x.Id == dp.IdScript_CondicaoScript).FirstOrDefault();

            Script s = db.Script.Where(x => x.Id == scs.IdScript).FirstOrDefault();

            CondicaoScript cs = db.CondicaoScript.Where(x => x.Id == scs.IdCondicaoScript).FirstOrDefault();

            if (!dp.AUT.Descricao.Equals(sistema, StringComparison.InvariantCultureIgnoreCase))
            {
                retorno = false;
            }
            else
            {
                retorno = true;
            }


            //if (!dp.Find(x => x.AUT.Equals(sistema, StringComparison.InvariantCultureIgnoreCase))
            //    retorno = false;

            if (s != null)
            {
                if (!s.Descricao.Equals(script, StringComparison.InvariantCultureIgnoreCase))
                {
                    retorno = false;
                }
            }

            if (cs != null)
            {
                if (cs.Descricao.Equals(condicao, StringComparison.InvariantCultureIgnoreCase))
                {
                    retorno = false;
                }
            }
            else if (!condicao.Equals("") && !condicao.Equals("SELECIONE"))
            {
                retorno = false;
            }

            return(retorno);
        }