mock

Resumen

Descripción

El componente mock permite la creación de RBLs de pruebas de manera muy simple. Está concebido para:

  • Usarse en tests unitarios y de integración junto con otros componentes más complejos.

  • Usarse para realizar pruebas de configuración y latencias, pudiendo simular fallos e introducir retardos.

Configuración

  • El valor de class debe de ser mock.

  • Admite cualquier tipo de recursos en el campo resources.

  • El campo source puede emplearse para indicar una secuencia de respuestas.

  • Admite campos opcionales en opts.

Tabla 1. Campos opcionales de mock
Opción Tipo de dato Explicación

reason

string

motivo que devolverá en caso de resultado afirmativo

ttl

int

valor de TTL que devolverá en todas las respuestas

fail

boolean

si está activo, entonces la lista siempre fallará

lazy

int

tiempo en milisegundos que la lista tardará en responder

sleep

int

igual que lazy, pero no responderá inmediatamente a la cancelación

Ejemplos de uso

Uso básico

Para crear una lista mock es necesario definir el identificador, la clase mock y los tipos de recurso que va a ofrecer (el componente soporta todos).

Ejemplo de lista mock
[
    {
        "id": "mock1",
        "class": "mock",
        "resources": [
            "ip4",
            "domain"
        ]
    }
]

En la configuración del Ejemplo de lista mock, la lista del ejemplo responderá a todas las solicitudes de tipo ip4 y domain diciendo que no las encuentra (es el valor por defecto).

Podemos alterar este comportamiento mediante la opción estándar de source. En este caso, source será una cadena que contenga valores de true y false separados por comas. Como ejemplos: "true" o "true,false,true,true"

La secuencia especificada en source NO indica una probabilidad, NO es aleatoria.
Ejemplo de listas mock con el parámetro source
[
    {
        "id": "mock2",
        "class": "mock",
        "name": "mockup true all",
        "resources": [
            "ip4",
            "domain"
        ],
        "source": "true"
    },
    {
        "id": "mock3",
        "class": "mock",
        "name": "mockup with sequence",
        "resources": [
            "ip4",
            "domain"
        ],
        "source": "true,false,true,true"
    }
]

En caso de la lista lista mock2, siempre devolverá cierto. Sin embargo, la lista mock3 irá respondiendo a cada petición respondiendo a la secuencia indicada. Esto es: existe, no existe, existe, existe, existe, no existe, existe, etc.

Uso avanzado

Además del valor estándar de source, el componente ofrece soporte a las opciones de la tabla resumen Campos opcionales de mock que pueden alterar su comportamiento.

Ejemplo de uso de opciones en mock
[
    {
        "id": "mock4",
        "class": "mock",
        "name": "mockup 50/50",
        "resources": [
            "ip4"
        ],
        "source": "true,false",
        "opts": {
            "reason": "hello caracola",
            "ttl": 10,
            "lazy": 100
        }
    },
    {
        "id": "mock5",
        "class": "mock",
        "name": "mockup fail forever",
        "resources": [
            "ip4"
        ],
        "opts": {
            "fail": true
        }
    }
]

En el ejemplo mock4 define una RBL a la que se podrán consultar por recursos de tipo ip4 y que devolverá al 50% que existe, siguiendo la secuencia e introduciendo además un retardo de 100 milisegundos que obedecerá inmediatamente a la cancelación. La respuesta vendrá con un ttl de 10 segundos y en caso de respuesta afirmativa, devolverá el motivo: "hello caracola".

El ejemplo mock5 creará una RBL a la que se podrán consultar por recursos del tipo ip4 y siempre dará fallo en las llamadas a los servicios check y ping.