2016-04-20 2 views
0

Nous exécutons des tests de performance avec nGrinder. Nous avons des cas d'utilisation où nous souhaiterions exécuter plusieurs scripts de test en parallèle.Exécuter des scripts de test en parallèle dans nGrinder

Sur leur site Web, il est indiqué qu'un utilisateur ne peut exécuter qu'un seul test à la fois. Nous avons donc configuré deux utilisateurs mais je vois le même comportement: un seul script de test est en cours d'exécution et les autres attendent dans un état READY.

Est-il possible dans nGrinder d'exécuter plusieurs scripts de test en parallèle?

Répondre

0

Il est uniquement possible d'exécuter plusieurs tests simultanément lorsque ces tests sont soumis à exécution par les différents utilisateurs si les agents libres sont suffisamment disponibles pour exécuter les deux tests.

Je soupçonne que vous n'avez pas assez d'agents pour exécuter les deux.

+0

Merci pour la suggestion, mais j'ai assez d'agents. 5 agents et je ne fais que deux tests avec un agent. J'ai vu dans le fichier system.conf que le _controller.max_concurrent_test = 10_ a commenté alors j'ai décommander cela et redémarré le contrôleur mais il ne fonctionne toujours pas – dragosb

+0

Dois-je également redémarrer l'agent? Je suppose que system.conf est utilisé uniquement par le contrôleur et non par les agents – dragosb

+0

Existe-t-il d'autres problèmes que je devrais rechercher? – dragosb

0

Vous pouvez exécuter plusieurs scripts en utilisant un seul agent. Je diviserais les agents en fonction des groupes de transactions et non des scripts.

Le moulin intérieur est parallélépipède.J'ai utilisé cette option avant d'exécuter des scripts en parallèle.

Voir ce lien https://github.com/DealerDotCom/grinder/blob/master/grinder/examples/parallel.py

from net.grinder.script.Grinder import grinder 

scripts = [ "TestScript1", "TestScript2", "TestScript3"]

modules sont initialisés Veiller à ce dans le fil de processus.

pour le script dans les scripts: exec (script% "import% s")

def createTestRunner (script): exec ("x =% s.TestRunner()" de script%) return x

classe TestRunner: def initialisation (auto): tid = grinder.threadNumber

if tid % 4 == 2: 
     self.testRunner = createTestRunner(scripts[1]) 
    elif tid % 4 == 3: 
     self.testRunner = createTestRunner(scripts[2]) 
    else: 
     self.testRunner = createTestRunner(scripts[0]) 

# This method is called for every run. 
def __call__(self): 
    self.testRunner()