2017-10-06 8 views
0

J'utilise jp Group Enfilez Ultimate @ gc et à l'intérieur du groupe de threads j'ai un si contrôleur en vous assurant que tous les fils/utilisateur continue avecSi le contrôleur dans le groupe de fil jMeter

(${__threadNum}%2==0) 

Il semble y avoir Une certaine issue fermant les discussions cependant parce que après que la charge ait été tenue pendant la quantité réglée de temps j'obtiens autant d'erreurs que j'ai des discussions entrant dans le contrôleur. Je ne suis pas sûr de ce qu'ils sont et ils ne semblent pas être sur le contenu du contrôleur if parce que je les reçois même après avoir désactivé tout à l'intérieur.

Je suis sur Windows 10 en utilisant jMeter 3.2 avec Ultimate Thread Group 2.1.

Les messages d'erreur:

java.lang.StackOverflowError: null 
at java.lang.invoke.MethodHandles.insertArguments(Unknown Source) ~[?:1.8.0_131] 
at jdk.internal.dynalink.DynamicLinker.createRelinkAndInvokeMethod(DynamicLinker.java:224) ~[nashorn.jar:?] 
at jdk.internal.dynalink.DynamicLinker.link(DynamicLinker.java:201) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.linker.Bootstrap.bootstrap(Bootstrap.java:208) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.linker.InvokeByName.<init>(InvokeByName.java:86) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.linker.InvokeByName.<init>(InvokeByName.java:73) ~[nashorn.jar:?] 
at jdk.nashorn.internal.objects.Global.<init>(Global.java:96) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.Context.newGlobal(Context.java:1111) ~[nashorn.jar:?] 
at jdk.nashorn.api.scripting.NashornScriptEngine$2.run(NashornScriptEngine.java:350) ~[nashorn.jar:?] 
at jdk.nashorn.api.scripting.NashornScriptEngine$2.run(NashornScriptEngine.java:346) ~[nashorn.jar:?] 
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_131] 
at jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal(NashornScriptEngine.java:346) ~[nashorn.jar:?] 
at jdk.nashorn.api.scripting.NashornScriptEngine.createGlobalMirror(NashornScriptEngine.java:340) ~[nashorn.jar:?] 
at jdk.nashorn.api.scripting.NashornScriptEngine.createBindings(NashornScriptEngine.java:170) ~[nashorn.jar:?] 
at org.apache.jmeter.control.IfController$NashornJsEngine.evaluate(IfController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.IfController.evaluateCondition(IfController.java:185) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.IfController.next(IfController.java:239) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:219) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.next(GenericController.java:173) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.next(LoopController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.nextIsNull(LoopController.java:151) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.next(GenericController.java:168) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.next(LoopController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:222) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.next(GenericController.java:173) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.next(LoopController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.nextIsNull(LoopController.java:151) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.next(GenericController.java:168) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.next(LoopController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at... etc etc 

Edit: Pour l'instant j'abandonne cela et il suffit d'utiliser le groupe vanille fil, car il ne donne pas d'erreurs.

Répondre

0

je fixe mon problème en supprimant le si contrôleur pour avoir tous les autres utilisateurs/fil faire une nouvel appel. Au lieu d'avoir cette logique, j'ai fait en sorte que seulement la moitié des fils soit faite et que leur nombre soit multiplié par deux, ayant le même effet. Cela a fait tous les types de groupes de threads.

2

Il existe un issue connu avec le plugin Ultimate et le contrôleur If. Vous pouvez le vérifier dans l'élément JSR 223 et ne vérifier que le résultat booléen dans le contrôleur If. Par exemple, sauvegardez vars.putObject("myBoolean", isTrue); et vérifiez ${myBoolean} comme condition.

EDIT

Une meilleure solution, vous pouvez vérifier si le contrôleur ${even} et avant de celui-ci utiliser JSR223 élément avec la définition même = true/false comme chaîne

if (ctx.getThreadNum() % 2 == 0) { 
    vars.putObject("even", "true"); 
    log.info("even true"); 
} else { 
    vars.putObject("even", "false"); 
     log.info("even false"); 
} 
+0

Aah, je vois. Merci pour la réponse! – tjarles

+0

Ceci donne également le même résultat qu'avant. Quelque chose d'autre doit être faux. – tjarles

+0

Absolument. C'est seulement le groupe de threads qui cause des problèmes et tous les serveurs et adresses IP ont été supprimés, donc cela ne fonctionnera pas. https://expirebox.com/download/682e753f241cb4bf12df3e7e6253abd3.html – tjarles

2

Depuis JMeter 3.1 it is recommended to use JSR223 Test Elements and __groovy function pour toute forme de scripting dans JMeter donc je recommanderais de passer de JavaScript à Groovy et d'utiliser __groovy() function dans la zone "Condition" de votre contrôleur Si comme:

${__groovy(ctx.getThreadNum() %2 == 0,)} 

Voir Apache Groovy - Why and How You Should Use It article pour plus d'informations sur les scripts Groovy dans le cadre des tests de JMeter, benchmarks, bonnes pratiques, etc.

+0

Aah, merci beaucoup pour la réponse! Je vais essayer cela à la place. – tjarles

+0

Ceci donne le même résultat qu'avant. Quelque chose d'autre doit être faux. – tjarles