Celerabit pipeline integration
Celerabit pipeline integration es un módulo construido en python que permite ejecutar escenarios fácilmente desde un pipeline CI/CD.
Para conocer más de este módulo consultar el sitio oficial el pypi.
Ejemplo de integración desde un pipeline
El siguiente script puede utilizarse desde cualquier integrador CI/CD que permita ejecución de shell script. En este script, se utiliza Celerabit pipeline integration para generar un token, ejecutar el escenario y, posteriormente, verificar el compliance. En caso de que el escenario no se haya desempeñado de acuerdo a lo esperado, se rompe el pipeline.
El módulo se instala dentro de un entorno virtual propio. Las distribuciones recientes de Linux marcan su Python como externally managed (PEP 668) y rechazan un pip install directo, así que el entorno virtual es lo que hace que el mismo script funcione en cualquier agente sin privilegios de administrador.
#!/bin/sh
set -e
celerabit_pipeline_user="process@company.com"
celerabit_pipeline_password="secretpassword"
client="Client Name"
application="Application name"
scenario="Scenario Name"
run_timeout_seconds="1000" # max seconds to wait for the test (the package default is 500)
# For API Scenarios, all tolerance values must to be between 0 and 1
tolerance="latency=0.8,throughput=0.8,errors=0.95,deviation=0.4"
# For UX scenarios, tolarance string must be like below:
#
# tolerance="performance=MEDIUM"
#
# The allowed values por "performance" are: BAD, MEDIUM, GOOD.
# For more information see https://pypi.org/project/celerabit-pipeline-integration/
# Own virtual environment, so the system Python is left untouched (PEP 668)
VENV_DIR="${VENV_DIR:-.venv-celerabit}"
if [ ! -x "${VENV_DIR}/bin/python" ]; then
echo "Creating virtual environment in ${VENV_DIR} ..."
python3 -m venv "${VENV_DIR}"
fi
PY="${VENV_DIR}/bin/python"
# Hides the InsecureRequestWarning the package prints on every request
export PYTHONWARNINGS="ignore:Unverified HTTPS request"
echo "Installing celerabit-pipeline-integration ..."
"${PY}" -m pip install --quiet --upgrade pip
"${PY}" -m pip install --quiet celerabit-pipeline-integration
echo "Generating token ..."
token=`"${PY}" -m celerabitpipelineintegration authenticate login "${celerabit_pipeline_user}" password "${celerabit_pipeline_password}"`
echo "Running test for scenario \"${client}/${application}/${scenario}\" ..."
job_result=`"${PY}" -m celerabitpipelineintegration run token "${token}" client "${client}" application "${application}" scenario "${scenario}" timeout "${run_timeout_seconds}"`
echo "Evaluating performance for result:"
echo "${job_result}"
echo "..."
compliance_errors=`"${PY}" -m celerabitpipelineintegration eval-job-results job-result "${job_result}" tolerance "${tolerance}"`
if test -z "${compliance_errors}"; then
echo "Well done !. The scenario \"${client}/${application}/${scenario}\" is performing good."
else
echo "${compliance_errors}"
exit 1
fi
Ejecutar el escenario o consultar su último resultado
El script usa run: lanza una ejecución nueva del escenario y espera a que termine, como máximo run_timeout_seconds segundos. Si la prueba tarda más, el script falla aunque la ejecución siga corriendo en Celerabit.
Si no quiere lanzar una ejecución nueva, use last-status: devuelve el resultado de la última ejecución del escenario, sin ejecutarlo. Sirve cuando el escenario ya se ejecuta de forma programada en Celerabit, o para validar la integración sin consumir una ejecución. Reemplace la línea de run por:
job_result=`"${PY}" -m celerabitpipelineintegration last-status token "${token}" client "${client}" application "${application}" scenario "${scenario}"`
El resto del script no cambia: las dos opciones devuelven el mismo resultado y se evalúan igual.
En Windows con Git Bash
python3 -m venv crea el intérprete en Scripts/python.exe y no en bin/python. Para que el mismo script sirva en los dos sistemas, reemplace la línea PY="${VENV_DIR}/bin/python" por:
if [ -x "${VENV_DIR}/bin/python" ]; then
PY="${VENV_DIR}/bin/python"
else
PY="${VENV_DIR}/Scripts/python.exe"
fi