Procedimiento
Requerimientos:
Acceso al repositorio de tuten-backend (https://bitbucket.org/tuten/tuten-backend/ )
Acceso al ambiente de producción
Tener los archivos .sql en el repositorio para llevar el seguimiento de los scripts entre versiones.
Engie debe sacar la base de clientes.
Paso a producción:
1.Ingresar a https://bitbucket.org/tuten/tuten-backend/ y generar un pull request desde origin/white-label-dev hacia origin/white-label-prod
2.Revisar y aceptar el pull request para que las ramas hagan el merge (solucionar conflictos de existir, para mas información de como solucionar conflictos visitar la siguiente pagina: https://confluence.atlassian.com/bitbucket/resolve-merge-conflicts-704414003.html)
3.Ingresar a la maquina de produccion
ssh servi2user@servi2.tuten.cl
4. Hacer respaldo de la Base de datos tuten
sudo su - postgres
pg_dump tuten > tuten_db.bak
5. Ejecutar el script functions en el repositorio para crear las funciones
psql -h localhost -d tuten -Ututen_user -a -f tuten-backend/sql/functions.sql
6. Ya con las funciones creadas en la base de datos entonces se procede a realizar los criterios de prueba
Rollback:
Si surge un problema mientras se realizan las pruebas entonces los pasos para revertir los cambios son los siguientes:
1.Restaurar la BD desde el archivo .bak previamente creado que se encuentra en el siguiente directorio (de no haber sido movido anteriormente):
sudo mv /var/lib/postgresql/tuten_db.bak /home/servi2user/
psql -p 5435 -Upostgres tuten < tuten_db.bak
2.Verificar que la BD este funcionando haciendo uso de ella en cualquier plataforma.
Mecanismo de Validación:
Validación Técnica:
Para validar que los scripts funcionan como debe se tienen que cumplir los siguientes pasos:
1.Ingresamos en la consola psql de la BD:
psql -h localhost -d tuten -Ututen_user
2.Una vez allí hay que validar que existe data a la que se pueda tratar, es decir que cumpla con los criterios, para que el script haga cambios relevantes en la BD, para ello se implementa las siguientes consultas en la BD:
SELECT u.id
FROM tuten_data_master u
WHERE u.context = 'engie_user_data'
AND u.domain = 'engie'
AND (u.data ->> 'estatus') = 'A'
AND u.data ->> 'planContratado' = '3'
AND (u.data ->> 'fechaPuestaEnServicio') IS NOT NULL
AND ((u.data ->> 'fechaPuestaEnServicio')::timestamp + interval '12 months') < (SELECT TO_CHAR(now() AT TIME ZONE 'America/Mexico_City', 'YYYY-MM-DD 00:00:00')::timestamp);
Script 1: Clientes con plan contratado 3, que deben ser pasados para 2
SELECT u.id
FROM tuten_data_master u
WHERE u.context = 'engie_user_data'
AND u.domain = 'engie'
AND (u.data ->> 'estatus') = 'A'
AND u.data ->> 'planContratado' = '2'
AND (u.data ->> 'fechaPuestaEnServicio') IS NOT NULL
AND ((u.data ->> 'fechaPuestaEnServicio')::timestamp + interval '12 months') >= (SELECT TO_CHAR(now() AT TIME ZONE 'America/Mexico_City', 'YYYY-MM-DD 00:00:00')::timestamp);
Script 2: Clientes con plan contratado 2, que deben ser pasados para 3
Si existe data que tratar entonces alguno de los scripts arrojara como resultado uno o varios IDs, estos IDs pueden ser guardados para validar luego que la función hizo los cambios correspondientes.
3. Luego de verificar que existe data que tratar nos salimos de la consola presionando CTRL + C
.
4.Ahora procedemos a ejecutar el script que realizara los procesos para los cambios de planes con el siguiente comando
psql -h localhost -d tuten -Ututen_user -a -f tuten-backend/sql/procesos/cambio_plan.sql
5.El resultado del script anterior es el ID del registro en la tabla tuten_data_master, la cual podemos consultar de la siguiente manera en la consola psql.
SELECT * FROM tuten_data_master WHERE id = id_generado*
* Donde id_generado es el id devuelto por el proceso del paso 4.
6. Como paso opcional (si se anotaron los IDs arrojados por los scripts del paso 2) podemos consultar a la tabla tuten_data_master con algunos de esos IDs y verificar que el proceso se ejecuto con exito discrimiando de la siguiente manera:
a) Se consulta la tabla tuten_data_master:
SELECT * FROM tuten_data_master WHERE id = id_devuelto*
* Donde id_devuelto es cualquier id generado por cualquiera de los scripts en el paso 2
b) Si el id utilizado es del Script 1 entonces: hay que corrobobar el json que devuelve el campo data y verificar que la propiedad planContratado
sea igual a “2”
c) Si el id utilizado es del Script 2 entonces: hay que corrobobar el json que devuelve el campo data y verificar que la propiedad planContratado
sea igual a “3”
Siguiendo todos estos pasos podemos ejecutar y comprobar el funcionamiento a nivel tecnico de las funciones que van a ser objeto de prueba.
0 Comments