Я пытаюсь смоделировать отключение сети с помощью тестконтейнеров. Я хотел использовать контейнер Socat, чтобы открыть порт, а затем сбил его и снова поднял. Я не мог справиться с этим, потому что нет остановки.
Как мне это сделать?
Это просто!
Вам нужны 2 контейнера, SocatContainer (предоставленный Testcontainers) и ваш целевой контейнер. Подключите их (Socat & target) к сети, см. Примеры здесь: https://github.com/testcontainers/testcontainers-java/blob/bcecd5cd9f9325517fd45db585312df2624315bb/core/src/test/java/org/testcontainers/containers/NetworkTest.java
Если вам нужно смоделировать отключение, просто отключите вашу цель от сети (используя Docker-клиент, который вы получаете с DockerClientFactory.instance().client() и disconnectFromNetworkCmd).
DockerClientFactory.instance().client()
disconnectFromNetworkCmd
После проверки правильности обработки сбоя подключите цель к сети с помощью connectToNetworkCmd).
connectToNetworkCmd
Альтернативным решением будет использование Toxiproxy от Shopify: https://github.com/shopify/toxiproxy. Запустите его в контейнере (конечно же, с помощью Testcontainers;)) и используйте его клиент Java для применения операций хаоса.