/// <summary> /// Obtiene los mensajes /// </summary> /// <returns></returns> public EstrategiaDTO GetMessages(string queueName) { var conn = ConnectionRabbitMQ(); var channel = conn.CreateModel(); bool noAck = true; BasicGetResult result = channel.BasicGet(queueName, noAck); if (result == null) { // No message available at this time. } else { IBasicProperties props = result.BasicProperties; byte[] body = result.Body; var base64Decoded = Encoding.UTF8.GetString(body); EstrategiaDTO estrategia = JsonConvert.DeserializeObject <EstrategiaDTO>(base64Decoded); ControllerVulkano.ScriptController scriptController = new ControllerVulkano.ScriptController(); if (estrategia != null) { var script = scriptController.SelectScript(estrategia.TipoPruebas.First().ID); estrategia.TipoPruebas.First().Script = script; //channel.BasicAck(result.DeliveryTag, false); } return(estrategia); } return(null); }
public void EnviaMensajes(EstrategiaDTO estrategia) { foreach (var tipoPrueba in estrategia.TipoPruebas) { MQTipoPruebaController mqTipoPruebaController = new MQTipoPruebaController(); var mqTipoPrueba = mqTipoPruebaController.SelectMQTipoPrueba(tipoPrueba.MQTipoPrueba.ID).First(); EstrategiaDTO estrategiaNew = new EstrategiaDTO() { Estrategia_ID = estrategia.Estrategia_ID, Nombre = estrategia.Nombre, Aplicacion = estrategia.Aplicacion, Estado = estrategia.Estado }; estrategiaNew.TipoPruebas.Add(tipoPrueba); String jsonified = JsonConvert.SerializeObject(estrategiaNew); byte[] estrategiaBuffer = Encoding.UTF8.GetBytes(jsonified); using (var conn = ConnectionRabbitMQ()) { IModel model = conn.CreateModel(); model.BasicPublish(exchange: "Dispather", routingKey: mqTipoPrueba.RouteKey, basicProperties: null, body: estrategiaBuffer ); } } }
public ReturnMessage Post([FromBody] EstrategiaDTO estrategia) { ControllerVulkano.EstrategiaController estrategiaController = new ControllerVulkano.EstrategiaController(); var returnMessage = estrategiaController.CreateEstrategia(estrategia); return(returnMessage); }
static void Main(string[] args) { GeneralWorkerNetFramework.RabbitMQ rabbitMQ = new GeneralWorkerNetFramework.RabbitMQ(); EstrategiaDTO strategy = rabbitMQ.GetMessages("QUEUE_ANDROIDRANDOM"); StartProcess(strategy); }
public ReturnMessage PostPrueba([FromBody] EstrategiaDTO estrategia) { ControllerVulkano.EstrategiaController estrategiaController = new ControllerVulkano.EstrategiaController(); var returnMessage = estrategiaController.AddTipoPrueba(estrategia); //enviar mensaje a la cola RabbitMessagesController mensajeRabbit = new RabbitMessagesController(); mensajeRabbit.Post(estrategia); return(returnMessage); }
public string Post([FromBody] EstrategiaDTO estrategia) { EstrategiaController estrategiaController = new EstrategiaController(); var newEstrategia = estrategiaController.Get(estrategia.Estrategia_ID).First(); newEstrategia.TipoPruebas = estrategia.TipoPruebas; Dispatcher rabbit = new Dispatcher(); rabbit.EnviaMensajes(newEstrategia); return("Mensaje enviado a la Cola"); }
/// <summary> /// Run cypress test project /// </summary> /// <param name="strategy"><see cref="EstrategiaDTO"/></param> public void RunCypressTest(EstrategiaDTO strategy) { foreach (TipoPruebaDTO tipoPrueba in strategy.TipoPruebas) { TipoPruebaController tipoPruebaController = new TipoPruebaController(); int idExecution = tipoPruebaController.InsertEjecucionTipoPrueba(strategy.Estrategia_ID, strategy.TipoPruebas[0].ID, 0, "", EstadoEnum.EnEjecucion); string testProject = Path.Combine(GetScriptProjectPath(), @"wwwroot\uploads"); string destinationFolder = @"C:\Temp"; string scriptPath = string.Concat(testProject, strategy.TipoPruebas.First().Script.Script); string destinationPath = string.Concat(destinationFolder, @"\", Path.GetFileNameWithoutExtension(scriptPath)); if (!File.Exists(scriptPath)) { String msg = String.Format("{0} do not exist. Please verify the information provided.", scriptPath); Console.WriteLine(msg); return; } // Extract the zip file GeneralWorkerNetFramework.ActionsFile actionsFile = new GeneralWorkerNetFramework.ActionsFile(); actionsFile.UnzipFile(scriptPath, destinationFolder); // Install the node modules for each of the test projects var psiNpmRunDist = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, }; var pNpmRunDist = Process.Start(psiNpmRunDist); Directory.GetDirectories(destinationPath).ToList().ForEach(p => { string[] packageJsonFile = Directory.GetFiles(p, "package.json"); if (packageJsonFile.Length == 1) { pNpmRunDist.StandardInput.WriteLine(Path.GetPathRoot(p).Replace(@"\", "")); pNpmRunDist.StandardInput.WriteLine(string.Format("cd {0}", p)); pNpmRunDist.StandardInput.WriteLine("npm i"); } }); pNpmRunDist.StandardInput.WriteLine("npx cypress run test " + tipoPrueba.Parametros); pNpmRunDist.WaitForExit(); tipoPruebaController.InsertEjecucionTipoPrueba(strategy.Estrategia_ID, strategy.TipoPruebas[0].ID, idExecution, "", EstadoEnum.Finalizado); } }
/// <summary> /// Crea una estrategia /// </summary> /// <param name="estrategia"></param> public ReturnMessage CreateEstrategia(EstrategiaDTO estrategia) { ReturnMessage mensaje = new ReturnMessage(); string query = @"SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; INSERT INTO ESTRATEGIA (NOMBRE,ESTADO_ID,APLICACION_ID,APPVERSION_ID) VALUES (@NOMBRE,@ESTADO,@APLICACION,@APPVERSION_ID) SELECT @@IDENTITY AS 'Identity';"; using (var con = ConectarDB()) { con.Open(); try { using (SqlCommand command = new SqlCommand(query, con)) { command.Parameters.Add(new SqlParameter("@NOMBRE", estrategia.Nombre)); command.Parameters.Add(new SqlParameter("@ESTADO", estrategia.Estado.ID)); command.Parameters.Add(new SqlParameter("@APLICACION", estrategia.Aplicacion.Aplicacion_ID)); command.Parameters.Add(new SqlParameter("@APPVERSION_ID", estrategia.Version.AppVersion_id)); using (var reader = command.ExecuteReader()) { while (reader.Read()) { estrategia.Estrategia_ID = Convert.ToInt32(reader[0]); } } } mensaje.Mensaje = "La estrategia se creó correctamente"; mensaje.TipoMensaje = TipoMensaje.Correcto; mensaje.obj = estrategia; } catch (Exception ex) { Console.WriteLine("No se pudo insertar."); mensaje.Mensaje = ex.Message; mensaje.TipoMensaje = TipoMensaje.Error; mensaje.obj = estrategia; } finally { con.Close(); } return(mensaje); } }
/// <summary> /// /// </summary> /// <param name="estrategia"></param> /// <returns></returns> public ReturnMessage UpdateEstrategia(EstrategiaDTO estrategia) { try { //logica de negocio aquí EstrategiaBehavior estrategiaBehavior = new EstrategiaBehavior(); return(estrategiaBehavior.UpdateEstrategia(estrategia)); } catch (Exception ex) { ReturnMessage message = new ReturnMessage(); message.TipoMensaje = TipoMensaje.Error; message.Mensaje = ex.Message; return(message); } }
static void Main() { DebugLog.EscribirLog("Inicio de la generacion del worker BDT"); GeneralWorkerNetFramework.RabbitMQ rabbitMQ = new GeneralWorkerNetFramework.RabbitMQ(); EstrategiaDTO strategy = rabbitMQ.GetMessages("QUEUE_BDT"); if (strategy != null) { for (int i = 0; i < strategy.TipoPruebas.First().CantidadEjecuciones; i++) { StartProcess(strategy); } } DebugLog.EscribirLog("Fin de la generacion del worker BDT"); Environment.Exit(0); }
static void TestCypress(EstrategiaDTO estrategia) { foreach (TipoPruebaDTO tipoPrueba in estrategia.TipoPruebas) { TipoPruebaController tipoPruebaController = new TipoPruebaController(); int idExecution = tipoPruebaController.InsertEjecucionTipoPrueba(estrategia.Estrategia_ID, estrategia.TipoPruebas[0].ID, 0, ""); GeneralWorkerNetFramework.ActionsFile actionsFile = new GeneralWorkerNetFramework.ActionsFile(); var psiNpmRunDist = new ProcessStartInfo { FileName = "cmd", RedirectStandardInput = true, //WorkingDirectory = guiProjectDirectory }; var pNpmRunDist = Process.Start(psiNpmRunDist); pNpmRunDist.StandardInput.WriteLine("cd C:\\Windows\\System32\\cmd.exe"); //Traer y copiar el archivo script al sitio donde están los scripts string rutaAbsoluta = "C:\\Users\\Sistemas\\source\\repos\\VulkanoPruebasAutomatizadas-Front\\VulkanoPruebasAutomatizadas-Front\\wwwroot"; //string rutaAbsoluta = "D:\\Takezo316\\GitHub\\VulkanoPruebasAutomatizadas-Front\\VulkanoPruebasAutomatizadas-Front\\wwwroot\\uploads"; Directory.SetCurrentDirectory(@"C:\vulkanotest"); string cypath = Path.GetFullPath(@"C:"); string rutaScript = string.Concat(rutaAbsoluta, estrategia.TipoPruebas.First().Script.Script); string rutaDestino = string.Concat(cypath, "\\", estrategia.TipoPruebas.First().Script.ID); if (!Directory.Exists(rutaDestino)) { Directory.CreateDirectory(rutaDestino); } //rutaDestino= string.Concat("C:\\Users\\Sistemas\\Pruebas automatizadas\\E2E\\E2E\\cypress\\integration", estrategia.TipoPruebas.First().Script.Script); rutaDestino = string.Concat(cypath, estrategia.TipoPruebas.First().Script.Script); string filename = Path.GetFileNameWithoutExtension(rutaDestino); File.Copy(rutaScript, rutaDestino, true); actionsFile.UnzipFile(rutaScript, string.Concat(cypath, "\\", estrategia.TipoPruebas.First().Script.ID, "\\")); pNpmRunDist.StandardInput.WriteLine(string.Concat("cd ", cypath, "\\", estrategia.TipoPruebas.First().Script.ID, "\\", filename)); pNpmRunDist.StandardInput.WriteLine("npm i"); pNpmRunDist.StandardInput.WriteLine("npx cypress run ."); pNpmRunDist.WaitForExit(); tipoPruebaController.InsertEjecucionTipoPrueba(estrategia.Estrategia_ID, estrategia.TipoPruebas[0].ID, idExecution, ""); } }
public string Post([FromBody] EstrategiaDTO estrategia) { EstrategiaController estrategiaController = new EstrategiaController(); var newEstrategia = estrategiaController.GetEstrategia(estrategia.Estrategia_ID).First(); List <TipoPruebaDTO> pruebas = new List <TipoPruebaDTO>(); foreach (var prueba in estrategia.TipoPruebas) { var newPrueba = newEstrategia.TipoPruebas.Find(t => t.ID == prueba.ID); pruebas.Add(newPrueba); } newEstrategia.TipoPruebas = pruebas; Dispatcher rabbit = new Dispatcher(); rabbit.EnviaMensajes(newEstrategia); return("Mensaje enviado a la Cola"); }
/// <summary> /// Actualiza una estrategia /// </summary> /// <param name="estrategia"></param> public ReturnMessage UpdateEstrategia(EstrategiaDTO estrategia) { ReturnMessage mensaje = new ReturnMessage(); StringBuilder query = new StringBuilder(); int flagUpdate = 0; query.Append(@"SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; UPDATE ESTRATEGIA SET"); //valida que los campos tengan un valor para actualizar. if (!string.IsNullOrEmpty(estrategia.Nombre)) { query.Append(" NOMBRE=@NOMBRE"); flagUpdate = 1; } if (estrategia.Estado.ID != 0) { if (flagUpdate == 1) { query.Append(","); } query.Append(" ESTADO_ID=@ESTADO"); flagUpdate = 1; } if (estrategia.Aplicacion.Aplicacion_ID != 0) { if (flagUpdate == 1) { query.Append(","); } query.Append(" APLICACION_ID=@APLICACION_ID"); flagUpdate = 1; } if (flagUpdate == 1) { query.Append(" , WHERE ESTRATEGIA_ID=@ESTRATEGIA_ID;"); } if (flagUpdate == 1) { using (var con = ConectarDB()) { con.Open(); try { using (SqlCommand command = new SqlCommand(query.ToString(), con)) { if (!string.IsNullOrEmpty(estrategia.Nombre)) { command.Parameters.Add(new SqlParameter("@NOMBRE", estrategia.Nombre)); } if (estrategia.Estado.ID != 0) { command.Parameters.Add(new SqlParameter("@ESTADO", estrategia.Estado.ID)); } if (estrategia.Aplicacion.Aplicacion_ID != 0) { command.Parameters.Add(new SqlParameter("@APLICACION", estrategia.Aplicacion.Aplicacion_ID)); } command.ExecuteNonQuery(); } mensaje.Mensaje = "La estrategia se actualizó correctamente"; mensaje.TipoMensaje = TipoMensaje.Correcto; mensaje.obj = estrategia; } catch (Exception ex) { Console.WriteLine("Count not insert."); mensaje.Mensaje = ex.Message; mensaje.TipoMensaje = TipoMensaje.Error; mensaje.obj = estrategia; } finally { con.Close(); } } } return(mensaje); }
/// <summary> /// Inserta un tipo de prueba /// </summary> /// <param name="estrategia"></param> /// <returns></returns> public ReturnMessage AddTipoPrueba(EstrategiaDTO estrategia) { ReturnMessage mensaje = new ReturnMessage(); int script_id = estrategia.TipoPruebas.First().Script.ID; if (script_id != 0) { ScriptBehavior scriptBehavior = new ScriptBehavior(); var messageUpdateScript = scriptBehavior.UpdateScript(estrategia.TipoPruebas.First().Script); string query = @"SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; INSERT INTO [dbo].[TIPOPRUEBA] ([NOMBRE] ,[PARAMETROS] ,[SCRIPT_ID] ,[MQTIPOPRUEBA_ID] ,[CANTIDAD_EJECUCIONES] ,[TIEMPO_EJECUCION] ,[SEMILLA] ,[HERRAMIENTA_ID] ,[API_KEY] ,[API_CONTROLLER]) VALUES( @Nombre, @Parametros, @Script, @MQTipoPrueba, @CantidadEjecuciones, @TiempoEjecucion, @Semilla, @HerramientaID, @ApiKey, @ApiController) SELECT @@IDENTITY AS 'Identity';"; using (var con = ConectarDB()) { con.Open(); try { using (SqlCommand command = new SqlCommand(query, con)) { var tipoPrueba = estrategia.TipoPruebas.First(); command.Parameters.Add(new SqlParameter("@Nombre", tipoPrueba.Nombre)); command.Parameters.Add(new SqlParameter("@Parametros", string.IsNullOrEmpty(tipoPrueba.Parametros)?string.Empty:tipoPrueba.Parametros)); command.Parameters.Add(new SqlParameter("@MQTipoPrueba", tipoPrueba.MQTipoPrueba.ID)); command.Parameters.Add(new SqlParameter("@Script", script_id)); command.Parameters.Add(new SqlParameter("@CantidadEjecuciones", tipoPrueba.CantidadEjecuciones)); command.Parameters.Add(new SqlParameter("@TiempoEjecucion", tipoPrueba.TiempoEjecucion)); command.Parameters.Add(new SqlParameter("@Semilla", tipoPrueba.Semilla)); command.Parameters.Add(new SqlParameter("@HerramientaID", tipoPrueba.Herramienta.Herramienta_ID)); command.Parameters.Add(new SqlParameter("@ApiKey", tipoPrueba.ApiKey)); command.Parameters.Add(new SqlParameter("@ApiController", tipoPrueba.ApiController)); using (var reader = command.ExecuteReader()) { while (reader.Read()) { estrategia.TipoPruebas.First().ID = Convert.ToInt32(reader[0]); } } } mensaje.Mensaje = "La prueba se creó correctamente"; mensaje.TipoMensaje = TipoMensaje.Correcto; mensaje.obj = estrategia.TipoPruebas.First(); AsociarPruebaEstrategia(estrategia.TipoPruebas.First().ID, estrategia.Estrategia_ID); } catch (Exception ex) { Console.WriteLine("Count not insert."); mensaje.Mensaje = ex.Message; mensaje.TipoMensaje = TipoMensaje.Error; mensaje.obj = estrategia.TipoPruebas.First(); } finally { con.Close(); } } return(mensaje); } mensaje = new ReturnMessage(); mensaje.TipoMensaje = TipoMensaje.Error; return(mensaje); }
/// <summary> /// Start with the process of environment preparation and test execution /// </summary> /// <param name="strategy"><see cref="EstrategiaDTO"/></param> static void StartProcess(EstrategiaDTO strategy) { DebugLog.EscribirLog("Procesando la estrategia " + strategy.Estrategia_ID); TipoPruebaController tipoPruebaController = new TipoPruebaController(); int idExecution = 0; try { WorkerStatus worker = new WorkerStatus(); worker.WorkerID = Convert.ToInt32(ConfigurationManager.AppSettings["WorkerID"]); worker.Estado.ID = 6; worker.TipoPrueba = "QUEUE_BDT"; WorkerController workerController = new WorkerController(); workerController.UpdateWorkerStatus(worker); foreach (TipoPruebaDTO tipoPrueba in strategy.TipoPruebas) { DebugLog.EscribirLog("Procesando la prueba " + tipoPrueba.ID); ScriptFile scriptFile = new ScriptFile(); //guarda en el historico de ejecucion de pruebas idExecution = tipoPruebaController.InsertEjecucionTipoPrueba(strategy.Estrategia_ID, strategy.TipoPruebas[0].ID, 0, "", EstadoEnum.EnEjecucion); //ruta donde se encuentra el archivo del script string testProject = Path.Combine(ConfigurationManager.AppSettings["RutaScript"]); //ruta destino temporal string destinationFolder = @"C:\Temp"; DebugLog.EscribirLog("id ejecucion " + idExecution); string destinationPath = string.Concat(destinationFolder, @"\", tipoPrueba.Script.Script); DebugLog.EscribirLog(destinationPath); //ruta de origen del script string scriptPath = string.Concat(testProject, tipoPrueba.Script.Script, tipoPrueba.Script.Nombre, tipoPrueba.Script.Extension); //si la ruta destino no existe se crea if (!File.Exists(destinationPath)) { Directory.CreateDirectory(destinationPath); } DebugLog.EscribirLog("creo ruta de temp"); // Extract the zip file GeneralWorkerNetFramework.ActionsFile actionsFile = new GeneralWorkerNetFramework.ActionsFile(); actionsFile.UnzipFile(scriptPath, destinationPath); // Create json structure file //string projectPath = //@"F:\Universidad de los Andes\MISO\Pruebas Automaticas\T Grupal\-201920_MISO4208\PrestashopTest"; string dataDestinationFolder = Path.Combine(destinationPath, @"Prestashop.Core\fixtures\data.json"); DebugLog.EscribirLog("ruta del fixtures"); //parametros de mockaroo #region Mockaroo ParametersRequest parameters = new ParametersRequest { ApiController = tipoPrueba.ApiController, Key = tipoPrueba.ApiKey }; JsonFile jsonFile = new JsonFile(); int numberDataGenerated = jsonFile.GenerateData(parameters, dataDestinationFolder); #endregion // Reemplaza tokens del script DebugLog.EscribirLog(destinationPath); #region Reemplazar tokens IEnumerable <string> featureFiles = scriptFile.GetFeatureFiles(destinationPath); // Replace tokens with random position object of json file DebugLog.EscribirLog("inicio del reemplazo tokens"); foreach (string featureFile in featureFiles) { scriptFile.ReplaceTokens(featureFile, numberDataGenerated); } DebugLog.EscribirLog("reemplazo tokens"); #endregion // Executes Cypress script if (strategy != null) { DebugLog.EscribirLog("ruta del package"); string package = destinationPath + "\\" + "BDT.TestProject"; DebugLog.EscribirLog("fin ruta del fixtures"); // Install the node modules for each of the test project var psiNpmRunDist = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, UseShellExecute = false, WorkingDirectory = package }; DebugLog.EscribirLog("Abiendo CMD " + package); using (var pNpmRunDist = Process.Start(psiNpmRunDist)) { StringBuilder output = new StringBuilder(); pNpmRunDist.StandardInput.WriteLine("npm i"); Thread.Sleep(1000); pNpmRunDist.StandardInput.WriteLine("npx cypress run " + tipoPrueba.Parametros); pNpmRunDist.WaitForExit(360000); pNpmRunDist.Close(); } DebugLog.EscribirLog("marca como finalizado"); //marca como finalizado } } } catch (Exception ex) { DebugLog.EscribirLog("error " + ex.Message); Console.WriteLine("error " + ex); //en caso de error envia nuevamente a la cola Dispatcher rabbit = new Dispatcher(); rabbit.EnviaMensajes(strategy); } finally { DebugLog.EscribirLog("Liberando el worker"); WorkerStatus worker = new WorkerStatus(); worker.WorkerID = Convert.ToInt32(ConfigurationManager.AppSettings["WorkerID"]); worker.Estado.ID = 5; worker.TipoPrueba = "QUEUE_BDT"; WorkerController workerController = new WorkerController(); workerController.UpdateWorkerStatus(worker); DebugLog.EscribirLog("Fin del proceso de la estrategia " + strategy.Estrategia_ID); tipoPruebaController.InsertEjecucionTipoPrueba(strategy.Estrategia_ID, strategy.TipoPruebas[0].ID, idExecution, "", EstadoEnum.WorkerLibre); } }
/// <summary> /// Consulta una estrategia /// </summary> /// <param name="estrategiaID"></param> /// <returns></returns> public List <EstrategiaDTO> SelectEstrategia(int estrategiaID) { List <EstrategiaDTO> listEstrategias = new List <EstrategiaDTO>(); StringBuilder query = new StringBuilder().Append(@"SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SELECT T0.ESTRATEGIA_ID, T0.NOMBRE, T2.ESTADO_ID, T2.NOMBRE NOMBREESTADO, T1.APLICACION_ID, T5.NUMERO, T1.DESCRIPCION, T1.ES_WEB, T1.NOMBRE NOMBREAPLICACION, T5.RUTA_APLICACION, T3.TIPOPRUEBA_ID, T4.NOMBRE, T4.MQTIPOPRUEBA_ID, T4.CANTIDAD_EJECUCIONES, T4.TIEMPO_EJECUCION, T4.SEMILLA, T4.API_CONTROLLER, T4.API_KEY, T4.PARAMETROS FROM ESTRATEGIA T0 INNER JOIN APLICACION T1 ON T0.APLICACION_ID=T1.APLICACION_ID INNER JOIN ESTADO T2 ON T0.ESTADO_ID=T2.ESTADO_ID INNER JOIN APPVERSION T5 ON T5.ID=T0.APPVERSION_ID LEFT JOIN ESTRATEGIA_TIPOPRUEBA T3 ON T0.ESTRATEGIA_ID=T3.ESTRATEGIA_ID LEFT JOIN TIPOPRUEBA T4 ON T3.TIPOPRUEBA_ID=T4.TIPOPRUEBA_ID" ); if (estrategiaID != 0) { query.Append(" WHERE T0.ESTRATEGIA_ID=@ESTRATEGIA_ID"); } using (var con = ConectarDB()) { con.Open(); try { using (SqlCommand command = new SqlCommand(query.ToString(), con)) { if (estrategiaID != 0) { command.Parameters.Add(new SqlParameter("@ESTRATEGIA_ID", estrategiaID)); } using (var reader = command.ExecuteReader()) { while (reader.Read()) { if (!listEstrategias.Exists(e => e.Estrategia_ID == Convert.ToInt32(reader[0]))) { EstrategiaDTO estrategia = new EstrategiaDTO(); estrategia.Estrategia_ID = Convert.ToInt32(reader[0]); estrategia.Nombre = reader[1].ToString(); EstadoDTO estado = new EstadoDTO(); //diccionario de estado var estadoDictionary = GetEstrategiaStatus(estrategia.Estrategia_ID); //estados estado.ID = estadoDictionary.First().Key; estado.Nombre = estadoDictionary.First().Value; //agregar el estado estrategia.Estado = estado; AplicacionDTO aplicacion = new AplicacionDTO(); aplicacion.Aplicacion_ID = Convert.ToInt32(reader[4]); aplicacion.Version = reader[5].ToString(); aplicacion.Descripcion = reader[6].ToString(); aplicacion.Es_Web = Convert.ToInt32(reader[7]) == 1 ? true : false; aplicacion.Nombre = reader[8].ToString(); aplicacion.Ruta_Aplicacion = reader[9].ToString(); estrategia.Aplicacion = aplicacion; listEstrategias.Add(estrategia); } if (!string.IsNullOrEmpty(reader[10].ToString())) { TipoPruebaDTO tipoPrueba = new TipoPruebaDTO(); tipoPrueba.ID = Convert.ToInt32(reader[10]); tipoPrueba.Nombre = reader[11].ToString(); tipoPrueba.CantidadEjecuciones = Convert.ToInt32(reader[13]); tipoPrueba.TiempoEjecucion = Convert.ToDouble(reader[14]); tipoPrueba.Semilla = string.IsNullOrEmpty(reader[15].ToString()) ? string.Empty : reader[15].ToString(); tipoPrueba.ApiController = string.IsNullOrEmpty(reader[16].ToString()) ? string.Empty : reader[16].ToString(); tipoPrueba.ApiKey = string.IsNullOrEmpty(reader[17].ToString()) ? string.Empty : reader[17].ToString(); tipoPrueba.Parametros = string.IsNullOrEmpty(reader[18].ToString()) ? string.Empty : reader[18].ToString(); MQTipoPruebaDTO mqTipo = new MQTipoPruebaDTO(); if (!string.IsNullOrEmpty(reader[12].ToString())) { mqTipo.ID = Convert.ToInt32(reader[12]); tipoPrueba.MQTipoPrueba = mqTipo; } listEstrategias.Find(e => e.Estrategia_ID == Convert.ToInt32(reader[0])).TipoPruebas.Add(tipoPrueba); } } } } } catch (Exception ex) { Console.WriteLine("Count not insert."); } finally { con.Close(); } } return(listEstrategias); }
public ReturnMessage Put([FromBody] EstrategiaDTO estrategia) { ControllerVulkano.EstrategiaController estrategiaController = new ControllerVulkano.EstrategiaController(); return(estrategiaController.UpdateEstrategia(estrategia)); }
static void StartProcess(EstrategiaDTO estrategia) { TipoPruebaController tipoPruebaController = new TipoPruebaController(); int idExecution = tipoPruebaController.InsertEjecucionTipoPrueba(estrategia.Estrategia_ID, estrategia.TipoPruebas[0].ID, 0, "", EstadoEnum.EnEjecucion); int times = estrategia.TipoPruebas.First().CantidadEjecuciones; string delay = "0.2"; string seed1; string seed2; string seed3; string seed4; string completeSeed = estrategia.TipoPruebas.First().Semilla; if (string.IsNullOrEmpty(completeSeed)) { seed1 = new Random().Next(0, 999999999).ToString(); seed2 = new Random().Next(0, 999999999).ToString(); seed3 = new Random().Next(0, 999999999).ToString(); seed4 = new Random().Next(0, 999999999).ToString(); completeSeed = seed1 + seed2 + seed3 + seed4; } string ruta = estrategia.TipoPruebas.First().Script.Script; string fileName = ConfigurationManager.AppSettings["RutaScript"] + ruta + "\\features\\monkey.feature"; string zipFile = "features.zip"; string featuresPath = ConfigurationManager.AppSettings["RutaScript"] + ruta; string zipPath = ConfigurationManager.AppSettings["RutaScript"] + ruta + "\\" + zipFile; try { // Check if file already exists. If yes, delete it. if (File.Exists(fileName)) { File.Delete(fileName); } // Create a new file using (FileStream fs = File.Create(fileName)) { // Add some text to file Byte[] title = new UTF8Encoding(true).GetBytes("Feature: Monkey Testing"); fs.Write(title, 0, title.Length); Byte[] newLine = new UTF8Encoding(true).GetBytes("\n"); fs.Write(newLine, 0, newLine.Length); Byte[] scenarioTitle = new UTF8Encoding(true).GetBytes("Scenario: Random touch"); fs.Write(newLine, 0, newLine.Length); Byte[] author = new UTF8Encoding(true).GetBytes(" Given I make " + times + " events with a waiting time of " + delay + " with seed " + completeSeed); fs.Write(author, 0, author.Length); } // Open the stream and read it back. using (StreamReader sr = File.OpenText(fileName)) { string s = ""; while ((s = sr.ReadLine()) != null) { Console.WriteLine(s); } } if (File.Exists(zipPath)) { File.Delete(zipPath); } ZipFile.CreateFromDirectory(featuresPath, zipPath); } catch (Exception Ex) { Console.WriteLine(Ex.ToString()); } //Create upload for apk String cmd = @"/C C:\PROGRA~1\Amazon\AWSCLI\bin\aws devicefarm create-upload --project-arn arn:aws:devicefarm:us-west-2:813226252700:project:45bfef00-da01-48d6-bc69-2b2c7f6fb425 --name " + estrategia.TipoPruebas.First().Parametros + "--type ANDROID_APP"; var psiNpmRunDist = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, Arguments = cmd }; var pNpmRunDist = Process.Start(psiNpmRunDist); string output = pNpmRunDist.StandardOutput.ReadToEnd(); Console.WriteLine(output); dynamic response = JsonConvert.DeserializeObject(output); string urlForApkUpload = response.upload.url.ToString(); Console.WriteLine("url: " + urlForApkUpload); //Upload apk string rutaAbsoluta = estrategia.Aplicacion.Ruta_Aplicacion; String paramsForApkUpload = @"/C curl -T " + rutaAbsoluta + " \"" + urlForApkUpload + "\""; psiNpmRunDist = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, Arguments = paramsForApkUpload }; pNpmRunDist = Process.Start(psiNpmRunDist); output = pNpmRunDist.StandardOutput.ReadToEnd(); Console.WriteLine(output); pNpmRunDist.WaitForExit(); Console.WriteLine("finished"); //Create Upload for script cmd = @"/C C:\PROGRA~1\Amazon\AWSCLI\bin\aws devicefarm create-upload --project-arn arn:aws:devicefarm:us-west-2:813226252700:project:45bfef00-da01-48d6-bc69-2b2c7f6fb425 --name " + estrategia.TipoPruebas.First().Script.Nombre + estrategia.TipoPruebas.First().Script.Extension + " --type CALABASH_TEST_PACKAGE"; psiNpmRunDist = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, Arguments = cmd }; pNpmRunDist = Process.Start(psiNpmRunDist); output = pNpmRunDist.StandardOutput.ReadToEnd(); Console.WriteLine(output); response = JsonConvert.DeserializeObject(output); var urlForScriptUpload = response.upload.url.ToString(); Console.WriteLine("url: " + urlForScriptUpload); //Upload script rutaAbsoluta = zipPath; string paramsForScriptUpload = @"/C curl -T " + rutaAbsoluta + " \"" + urlForScriptUpload + "\""; psiNpmRunDist = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, Arguments = paramsForScriptUpload }; pNpmRunDist = Process.Start(psiNpmRunDist); output = pNpmRunDist.StandardOutput.ReadToEnd(); Console.WriteLine(output); pNpmRunDist.WaitForExit(); Console.WriteLine("finished"); //response = JsonConvert.DeserializeObject(output); //string output = pNpmRunDist.StandardOutput.ReadToEnd(); //Thread.Sleep(10000); //Execute test cmd = @"/C C:\PROGRA~1\Amazon\AWSCLI\bin\aws devicefarm schedule-run --project-arn arn:aws:devicefarm:us-west-2:813226252700:project:45bfef00-da01-48d6-bc69-2b2c7f6fb425 --app-arn arn:aws:devicefarm:us-west-2:813226252700:upload:45bfef00-da01-48d6-bc69-2b2c7f6fb425/cf5e1be8-e01c-4ceb-87d6-0a2970e32957 --device-pool-arn arn:aws:devicefarm:us-west-2::devicepool:1c59cfd0-ee56-4443-b290-7a808d9fd885 --name MyTestRun --test type=CALABASH,testPackageArn=arn:aws:devicefarm:us-west-2:813226252700:upload:45bfef00-da01-48d6-bc69-2b2c7f6fb425/a642b018-2ca7-4b16-9469-92cf7c363849"; psiNpmRunDist = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, Arguments = cmd }; pNpmRunDist = Process.Start(psiNpmRunDist); output = pNpmRunDist.StandardOutput.ReadToEnd(); Console.WriteLine(output); response = JsonConvert.DeserializeObject(output); var arnForRun = response.run.arn.ToString(); Console.WriteLine("arnForRun: " + arnForRun); string status = ""; while (status != "COMPLETED" || status != "STOPPING") { //Check if finished cmd = @"/C C:\PROGRA~1\Amazon\AWSCLI\bin\aws devicefarm get-run --arn" + " \"" + arnForRun + "\""; psiNpmRunDist = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, Arguments = cmd }; pNpmRunDist = Process.Start(psiNpmRunDist); output = pNpmRunDist.StandardOutput.ReadToEnd(); Console.WriteLine(output); response = JsonConvert.DeserializeObject(output); status = response.run.status.ToString(); Thread.Sleep(60000); } //For the results is used arnForRun //for example: //arn:aws:devicefarm:us-west-2:813226252700:run:45bfef00-da01-48d6-bc69-2b2c7f6fb425/ff7d0b49-162b-4bc2-9ee9-9cdc96a1c239 //Screenshots results cmd = @"/C C:\PROGRA~1\Amazon\AWSCLI\bin\aws devicefarm list-artifacts --arn" + " \"" + arnForRun + "\" --type SCREENSHOT"; psiNpmRunDist = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, Arguments = cmd }; pNpmRunDist = Process.Start(psiNpmRunDist); output = pNpmRunDist.StandardOutput.ReadToEnd(); Console.WriteLine(output); response = JsonConvert.DeserializeObject(output); //marca como finalizado tipoPruebaController.InsertEjecucionTipoPrueba(estrategia.Estrategia_ID, estrategia.TipoPruebas[0].ID, idExecution, "", EstadoEnum.Finalizado); }
public ReturnMessage Post([FromBody] EstrategiaDTO estrategia) { Controller.EstrategiaController estrategiaController = new Controller.EstrategiaController(); return(estrategiaController.CreateEstrategia(estrategia)); }
public ReturnMessage PostPrueba([FromBody] EstrategiaDTO estrategia) { Controller.EstrategiaController estrategiaController = new Controller.EstrategiaController(); return(estrategiaController.AddTipoPrueba(estrategia)); }
public void Put(int id, [FromBody] EstrategiaDTO estrategia) { }