Envío de Pruebas Masivas usando SOAP UI

Me solicitan enviar 1000 peticiones de forma masiva a un servicio web de tipo SOAP, para lo cual puedo valerme de la funcionalidad de pruebas de SOAP UI.

Para esto vamos simular la llamada a un servicio que tiene la siguiente estructura:

Par lo cual vamos a crear un archivo XML por cada una de las peticiones que voy a realizar y almacenarlas en una carpeta, en este caso “requests”

Cada uno de los archivos tendrá el fragmento de la petición que variará de llamada en llamada.

Una vez que tengo armados los archivos, procedo a estructurar la prueba dentro de SOAP UI, para esto crearemos 3 pasos

Paso 1

Script lee los archivos en el directorio “request” y inicializa un arreglo con los mismos

def fileList = []
new File("/path/requests/").eachFile { f ->
if (f.isFile() && f.name.endsWith('.xml')) {
def filename = f.name[0..-1]
fileList.add(filename)
log.info filename
}
}
if (fileList.size() < 1) {
testRunner.fail("No request files")
}
context.put('fileList', fileList)

Paso 2

El paso 2 es una llamada SOAP, con una modificación para que tome el nombre del archivo del arreglo creado en el paso 1

${=new File("/path/requests/" + (context.get('fileList')).first()).text}

Paso 3

Aquí iteramos sobre cada ejecución y almacenamos tanto la llamada, como la respuesta en el directorio “responses”

def fileList = context.get('fileList')
def fileName = fileList.first()
def newName = fileName[0..-5]
def response = context.expand( '${Step2#Response}' )
def f = new File("/path/responses/${newName}_Response.xml")
f.write(response, "UTF-8")
def query = context.expand( '${Step2#Request}' )
def q = new File("/path/responses/${newName}_Query.xml")
q.write(query, "UTF-8")
fileList.pop()
if(fileList.size() >0)
{
testRunner.gotoStepByName("Step2")
}

Por ultimo ejecutamos el caso de prueba

Pasar mi colección de CD’s a Spotify

Problema: Tengo una colección de CD’s que ocupa mucho espacio y quiero tenerlos como una lista de reproducción en spotify.

Solución:

Paso 1: Obtener el nombre de las canciones, para esto podemos digitarlo nosotros o utilizar alguna herramienta OCR que nos ayude.

En caso de utilizar una herramienta de reconocimiento de texto OCR, vale la pena editar un poco la fotografía, una buena alineación y tratar de que el nombre de la canción y el autor estén en una misma linea nos ayudará más adelante.

Foto del listado de canciones

Para el proceso de OCR podemos utilizar la siguiente herramienta: https://www.onlineocr.net/es/

Despues del pasarlo por el OCR y unos minutos de edicion obtenemos los nombres de las canciones

  • GRAM PARSONS & EMMY LOU HARRIS Love Hurts
  • SANDY POSEY Born A Woman
  • DAVE DUDLEY Cowboy Boots
  • FREDDY FENDER Sugar Coated Love
  • DAVE TRAVIS Sweet Country Music
  • DONNA FARGO Daddy
  • ……..

Paso 2: Obtener las uri’s o nombres de las canciones en spotify

Para esto utilizaremos la siguiente herramienta: https://epsil.github.io/spotgen/

Aquí podemos pegar los nombres de las canciones y nos devolverá la uri de los tracks en spotify

Resultado de la herramienta

Paso 3: Creamos una lista de Spotify

Paso 4: Agregar las canciones

Para agregar las canciones, debemos copiar las uri’s que generó la herramienta del paso 2, luego dar click donde dice “start adding songs” y presionar ctrl+v, automáticamente spotify agregará las canciones a la lista.

Variables en MySQL

Problema:

Tengo una serie de consultas SQL que ejecuto de tanto en cuanto, y cada vez que ejecuto debo cambiar parámetros como la fecha o algún valor X.

Solución:

En MySQL, es posible utilizar variables al inicio del script que luego pueden ser utilizadas por las diferentes consultas

Definir una variable:

SET @date_var = ‘2020-05-30’;

Consumir una variable:

SELECT * FROM table
WHERE date(date_field) = @date_var

Actualizando php.ini en AWS EC2

Problema:

En una instancia de AWS EC2 tengo instalado apache con PHP 7, necesito actualizar una de las configuraciones de PHP (Memoria, tiempo de ejecución, etc).

Actualizo el php.ini, reinicio el servidor apache y los cambios no toman efecto, que debo hacer?

Solución:

1.- Crear un archivo adicional de configuración en el directorio php.d

sudo touch /etc/php.d/30-custom.ini

2.- Editar el archivo con las configuraciones que queremos que tomen efecto

sudo vi /etc/php.d/30-custom.ini

memory_limit = 256M
upload_max_size = 256M
post_max_size = 256M
upload_max_filesize = 256M
max_execution_time = 1000
max_input_time = 1000

3.- Reiniciar el servicio php-fpm

sudo service php-fpm restart

4.- Reiniciar el servicio httpd

sudo service httpd restart

https://forums.aws.amazon.com/thread.jspa?messageID=820299&tstart=0

Notas adicionales:

Los archivos ini adicionales se ejecutan en orden alfabético, por eso el nombre 30-custom.ini

PHP-FPM: Servicio para el manejor de procesos php comunmente utilizado para manejo de alta carga. Ofrece mejoras en el manejo de procesos y monitoreo.

Para más información referirse a https://php-fpm.org/

Es necesario reiniciar este servicio para que los cambios tomen efecto

Antes de ejecuar estos cambios, verifica que estes modificando el archivo php.ini por defecto.

Cambiar configuración de AWS CLI en Windows

Necesito apuntar a una cuenta diferente de amazon para hacer uso de la linea de comandos AWS CLI.

Para esto, una vez creada la cuenta de amazon, accederemos y crearemos un nuevo usuario con acceso a consola mediante IAM (Gestor de Usuarios de AWS)

Panel Inicial de AWS IAM

Una vez que hemos ingresado en el panel, daremos click en Users al lado izquierdo

Usuarios en AWS IAM

A Continuación daremos click en Add User

Creación de Usuario AWS IAM

Una vez definido el usuario pasamos al siguiente paso, permisos.

Permisos AWS IAM

Como queremos darle permiso al usuario para que deministre la linea de comandos, lo agregarmos a un grupo de administradores, en caso de que no exista el grupo de administradores lo crearemos con el botón Create group y le daremos permisos de Administrador.

Creación de Grupo Administrador en AWS IAM

Asociaremos el usuario al grupo, y continuaremos el proceso hasta terminar.

Fin de Creación de Usuario

Por último guardaremos las credenciales del usuario en un lugar seguro.

Una vez que tenemos las credenciales, cambiaremos la configuración que tenemos actualmente de nuestro AWS CLI

Las credenciales se encuentran guardadas en la carpeta .aws dentro del directorio del usuario

dir “%UserProfile%\.aws”

Aqui entraremos al archivo credentials y cambiaremos por las credenciales respectivas

Una vez actualizado, abiremos la linea de comando y ejecutaremos, por ejemplo, el comando:

aws s3 ls

Si todo está correcto deberá listarnos los buckets creados en nuestra cuenta de amazon.

Listado de Buckets

Descargar recursivamente de AWS S3

Una vez configurado el Aws CLI, ejecutaremos el siguiente comando para realizar una descarga recursiva

aws s3 cp s3://mi_bucket/carpeta/ ./carpeta/ –recursive

Para cargar información de manera recursiva ejecutaremos el comando cambiando el orden de los parámetros

aws s3 cp ./carpeta/ s3://mi_bucket/carpeta/ –recursive

Despliegue Automatizado de Angular a AWS S3

Realizar la carga de archivos de esta manera, causa que los archivos js no se carguen con el MIME type adecuado lo que causa errores en los navegadores

Escenario:

Tenemos una aplicación angular 9 hosteada en AWS S3, como un sitio web estático. Este sitio se encuentra tras AWS Cloudfront, replicada alrededor del mundo.

Objetivo:

Automatizar del despliegue de una aplicación, es decir, la publicación de la aplicación, la carga de esta a un bucket S3 y la creación de una invalidación en cloudfront para actualizar la aplicación.

Angular CLI:

Para empezar nos dirigimos al directorio de la aplicación angular, y compilamos el proyecto con el siguiente comando:

ng build –prod

El resultado de este comando se almacena en la carpeta ./dist/proyecto

AWS CLI S3:

Para cargar la información en AWS, deberemos ejecutar el siguiente comando:

aws s3 cp ./dist/proyecto/ s3://mi-bucket/ –recursive

Esto colocará el contenido compilado en la ruta base del bucket S3

AWS CLI Cloudfront:

Una vez cargada la información en el S3, es necesario crear una invalidación en cloudfront para que se actualice la información a lo largo de la infraestructura AWS.

Para hacer esto realizaremos el siguiente comando:

aws cloudfront create-invalidation –distribution-id CODIGODISTRIB –paths “/*”

Una vez hecho esto se eliminará el cache en las ubicaciones edge de Cloudfront, actualizando casi inmediatamente la aplicación al público.

Pantalla de Invalidaciones de Cloudfront