Detección de acción bloqueada

El motor de ejecución de pruebas de rendimiento proporciona la posibilidad de detectar que una acción se ha bloqueado. El autor de la acción proporciona la definición de "bloqueado". Dicha definición se facilita en forma de tiempo que la hebra activa del motor puede estar sin reaccionar durante la ejecución de la acción antes de que se considere que está bloqueada. El motor de ejecución de pruebas de rendimiento registra la detección de acciones bloqueadas en el nivel FINEST del registro de determinación de problemas. En el caso más simple, la ejecución se colgaría, y el descubrimiento de la acción bloqueada procedería del examen del registro de determinación de problemas después de pulsar Detener para finalizar la ejecución.

Además de detectar acciones bloqueadas, un protocolo puede recibir una notificación de que la acción está bloqueada. Junto con la acción se proporciona una referencia a la hebra bloqueada del motor, lo que permite al protocolo enviar un mensaje a la hebra bloqueada. Tras la notificación de que una acción se ha bloqueado, el protocolo puede reintentar la acción, finalizarla y pasar a la siguiente acción o finalizar la ejecución del usuario virtual.

La interfaz IKAction proporcionará el método siguiente como punto de entrada para que los protocolos reaccione en una condición de acción bloqueada:

public void blocked(). El estado de objeto KAction, al entrar blocked(), se corrompe potencialmente. El grabador del protocolo debe presuponer que puede haber algún dato asociado a la acción que no esté seguro o que no haya ninguno que esté seguro. Asimismo, se liberan los bloqueos que se puedan haber producido durante execute().

public long getBlockedTimeout()

Devuelve el valor de tiempo de espera excedido de la acción bloqueada. El valor predeterminado es 0, que significa que se ha producido un bloqueo indefinido

public WorkerThread getWorkerThread()

Devuelve la hebra Engine WorkerThread que estaba ejecutando la acción cuando se detectó el estado de bloqueo.

IEngine

La interfaz del motor de pruebas de rendimiento ha añadido public boolean createWorker(). El objetivo de createWorker() es permitir a los elementos funcionales que supervisan las hebras centinela añadir elementos funcionales adicionales como respuesta a haber tenido que retirar elementos funcionales que estaban ejecutando acciones bloqueadas.


Comentarios