
Модифицируемый HTTP-прокси для тестирования устойчивости и имитации сетевых условий.
Не поддерживается активно, может не работать с последними версиями node.js. Если вы заинтересованы в поддержке toxy, пожалуйста, откройте issue.
Гибкий HTTP-прокси для симуляции сценариев отказов сервера, тестирования устойчивости систем и неожиданных сетевых условий, созданный для node.js.
Он был в первую очередь разработан для тестирования устойчивости к отказам, когда toxy становится особенно полезным для проверки возможностей отказоустойчивости и устойчивости системы, особенно в сетях, устойчивых к сбоям и сервис-ориентированных архитектурах, где toxy может выступать в качестве прокси-посредника (MitM) между сервисами для внедрения сбоев.
toxy позволяет подключать яды, опционально фильтруемые с помощью правил, которые по сути могут перехватывать и изменять HTTP-поток по вашему усмотрению, выполняя множество злонамеренных действий в середине этого процесса, таких как ограничение пропускной способности, задержка сетевых пакетов, внесение джиттера (дрожания) задержки или ответ с пользовательской ошибкой или кодом состояния. Он в основном работает на L7, хотя может симулировать сетевые условия L3.
toxy можно легко использовать программно или через HTTP API. Он построен на основе rocky, полнофункционального HTTP-прокси, ориентированного на промежуточное ПО, и также подключаем в connect/express как стандартное промежуточное ПО.
Требуется node.js +4.
На рынке существуют и другие похожие решения, подобные toxy, но большинство из них не предоставляют должного программного контроля и, как правило, сложны в настройке, либо непосредственно закрыты для расширения.
Более того, большинство этих решений работают только на уровне стека TCP L3, вместо того чтобы предоставлять высокоуровневые абстракции для покрытия типичных потребностей в специфической области и природе протокола HTTP L7, как это пытается сделать toxy.
toxy предлагает мощное, легко расширяемое решение с удобной абстракцией, не теряя при этом возможностей низкоуровневого интерфейса для простой работы с примитивами HTTP-протокола.
toxy был спроектирован на основе принципов композиции, простоты и расширяемости. Благодаря встроенному иерархическому доменному уровню промежуточного ПО вы можете легко расширять возможности toxy под свои нужды.
toxy вводит две директивы: яды и правила.
Яды — это конкретная логика, которая заражает входящую или исходящую HTTP-транзакцию (например, внесение задержки, ответ с ошибкой). Одна HTTP-транзакция может быть отравлена одним или несколькими ядами, и эти яды также можно настроить на заражение трафика как на глобальном уровне, так и на уровне маршрута.
Правила — это своего рода фильтры валидации совпадений, которые проверяют HTTP-запрос/ответ, чтобы определить, на основе определённых правил, должна ли HTTP-транзакция быть отравлена или нет (например, если заголовки совпадают, параметры запроса, метод, тело...). Правила можно повторно использовать и применять как к входящему, так и к исходящему потоку трафика, включая различные области действия: глобальная, на уровне маршрута или на уровне яда.