simule la interrupción de la red de la base de datos con los contenedores de prueba

Estoy tratando de simular una interrupción de la red con los contenedores de prueba. Quería usar un contenedor Socat para exponer el puerto, y luego lo derribé y lo volví a levantar. No pude manejar esto ya que no hay interrupción.

¿Cómo puedo manejar esto?

Respuesta 1

¡Eso es fácil!

Necesita 2 contenedores, SocatContainer (proporcionado por Testcontainers) y su contenedor de destino. Conéctelos (Socat & target) con una red, vea ejemplos aquí:
https://github.com/testcontainers/testcontainers-java/blob/bcecd5cd9f9325517fd45db585312df2624315bb/core/src/test/java/org/testcontainers/containers/NetworkTest.java

Cuando necesite simular una interrupción, simplemente desconecte su objetivo de la red (utilizando el cliente Docker con el que obtiene DockerClientFactory.instance().client()y disconnectFromNetworkCmd).

Después de verificar que la interrupción se maneja correctamente, conecte su objetivo a la red con connectToNetworkCmd).

Una solución alternativa sería usar Toxiproxy de Shopify:
https://github.com/shopify/toxiproxy . Comience en un contenedor (con Testcontainers, por supuesto;)) y use su cliente Java para aplicar las operaciones de caos.

Respuesta: 2

Estoy desarrollando una aplicación web Java utilizando JSP, Servlet y AJAX. En el que trato de obtener detalles del producto por Id específico. Cuando lo ejecuto en eclipse, muestra el siguiente mensaje: "Esta página es ...

Dados estos dos constructores: SomeClass (int ... params) {// Hacer cosas} SomeClass (long ... otherParams) {// Hacer otras cosas} ¿Qué sucede cuando se crea una instancia de un objeto foo? SomeClass foo = ...

He utilizado múltiples subprocesos sincronizados para procesar múltiples transacciones y estas transacciones se obtienen de la base de datos mediante el uso de marcos de hibernación y el concepto de bloqueo utilizado. El problema es que cada hilo ...

Estoy usando CosmosDb para un proyecto, y primero estaba probando la API SQL Document-db java. Con esa API, puedo establecer TTL a nivel de elemento directamente en el propio documento. Ex. Documento documento = documento nuevo (nuevo ...