La empresa Shopify, que desarrolla una de las plataformas de comercio electrónico más grandes, ha publicado la versión 2.3 del servidor proxy Toxiproxy, diseñado para simular fallos y anomalías en redes y sistemas para probar el rendimiento de las aplicaciones bajo estas condiciones. Este programa destaca por ofrecer una API para modificar dinámicamente las características del canal de comunicación, que se puede utilizar para integrar Toxiproxy con sistemas de pruebas unitarias, plataformas de integración continua y entornos de desarrollo. El código de Toxiproxy está escrito en Go y se distribuye bajo la licencia MIT.
El proxy se inicia entre la aplicación que se está probando y el servicio de red con el que interactúa dicha aplicación, y luego puede simular la aparición de cierto retraso al recibir una respuesta de servidores o al enviar una solicitud, modificar el ancho de banda, simular la imposibilidad de aceptar conexiones, interrumpir el flujo normal de establecer o cerrar conexiones, restablecer conexiones establecidas, distorsionar el contenido de los paquetes.
Para gestionar el funcionamiento del servidor proxy desde las aplicaciones, se proporcionan bibliotecas client-side para lenguajes como Ruby, Go, Python, C#/.NET, PHP, JavaScript/Node.js, Java, Haskell, Rust y Elixir, que permiten cambiar las condiciones de la interacción en red sobre la marcha y evaluar inmediatamente el resultado. Para modificar las características del canal de comunicación sin realizar cambios en el código, se puede utilizar la herramienta especial toxiproxy-cli (se supone que la API de Toxiproxy se utiliza en pruebas unitarias, y la herramienta puede ser útil para realizar experimentos interactivos).
Entre los cambios en la nueva versión se incluyen la incorporación de un manejador de endpoint client-side para HTTPS, la separación de los manejadores de pruebas estándar en archivos individuales, la implementación de la API client.Populate, el soporte para plataformas armv7 y armv6, y la posibilidad de cambiar el nivel de registro para el servidor.
Fuente: opennet.ru
