[SoapUI Groovy] Problème de contexte en multi-appels de Mocks
Bonjour,
Je travaille sur le simulateur de tests SoapUI pour tester des mock services avec les scripts Groovy. Mes mocks fonctionnement normalement en mode mono-thread (une seule exécution à la fois), mais lorsque je lance les mocks en multithread, les réponses provenant du mock ne sont plus cohérentes (exemple : la deuxième réponse prend la valeur de la première), et cela est dû au contexte par lequel je stocke les réponses récupérées à partir d'une requête. L'exécution des réponses se faisant en parallèle, un problème de concurrence sur le contexte se crée.
Exemple :
Ma réponse en XML :
Mon script groovy :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder( mockRequest.requestContent )
def cstmt = con.prepareCall("{CALL STORED_PROCEDURE_X(?,?,?)}");
// déclaration des paramètres de la procédure ...
def rs = cstmt.executeQuery();
//Récupérer les paramètres de réponse
if( rs.next() )
{
context.id = rs.getString("id");
} |
J'ai vu dans ce fil qu'on peut locker le contexte de cette façon :
context.lock = new Object()
avec un autre bout de code du genre :
synchronized(context.LoadTestContext.lock) // sachant que je n'utilise pas LoadTestContext dans mes tests; les mocks services sont appelés hors SoapUI, à partir d'une application console.
J'ai testé en rajouter le lock, mais ça n'a pas marché. Quelqu'un aurait une idée comme résoudre ce problème svp ?
En vous remerciant d'avance.