13. Test à distance

Dans le cas où votre machine cliente JMeter est incapable, en termes de performances, de simuler suffisamment d'utilisateurs pour stresser votre serveur ou est limitée au niveau du réseau, une option existe pour contrôler plusieurs moteurs JMeter distants à partir d'un seul client JMeter. En exécutant JMeter à distance, vous pouvez répliquer un test sur de nombreux ordinateurs bas de gamme et ainsi simuler une charge plus importante sur le serveur. Une instance du client JMeter peut contrôler n'importe quel nombre d'instances JMeter distantes et collecter toutes les données qu'elles contiennent. Celui-ci offre les fonctionnalités suivantes :

  • Enregistrement des échantillons de test sur la machine locale
  • Gestion de plusieurs JMeterEngines à partir d'une seule machine
  • Pas besoin de copier le plan de test sur chaque serveur - le client l'envoie à tous les serveurs

Remarque : Le même plan de test est exécuté par tous les serveurs. JMeter ne distribue pas la charge entre les serveurs, chacun exécute le plan de test complet. Donc, si vous définissez 1000 Threads et que vous avez 6 serveurs JMeter, vous finissez par injecter 6000 Threads.

Cependant, le mode distant utilise plus de ressources que l'exécution indépendante du même nombre de tests en mode CLI. Si de nombreuses instances de serveur sont utilisées, le client JMeter peut être surchargé, tout comme la connexion réseau du client. Cela a été amélioré en passant aux modes Stripped (voir ci-dessous) mais vous devez toujours vérifier que votre client n'est pas surchargé.

Notez que même si vous pouvez exécuter le JMeterEngine sur votre serveur d'application, vous devez être conscient du fait que cela ajoutera une surcharge de traitement sur le serveur d'application et que vos résultats de test seront donc quelque peu entachés. L'approche recommandée consiste à avoir une ou plusieurs machines sur le même segment Ethernet que votre serveur d'applications que vous configurez pour exécuter le moteur JMeter. Cela minimisera l'impact du réseau sur les résultats des tests sans affecter les performances du serveur d'applications lui-même.

Étape 0 : Configurer les nœuds

Assurez-vous que tous les nœuds (client et serveurs) :

  • exécutent exactement la même version de JMeter.
  • utilisent la même version de Java sur tous les systèmes. L'utilisation de différentes versions de Java peut fonctionner mais est déconseillée.
  • disposez d'un magasin de clés valide pour RMI sur SSL , ou vous avez désactivé l'utilisation de SSL.

Si le test utilise des fichiers de données, notez qu'ils ne sont pas transmis par le client. Assurez-vous donc qu'ils sont disponibles dans le répertoire approprié sur chaque serveur . Si nécessaire, vous pouvez définir des valeurs différentes pour les propriétés en modifiant les fichiers user.properties ou system.properties sur chaque serveur. Ces propriétés seront récupérées au démarrage du serveur et pourront être utilisées dans le plan de test pour affecter son comportement (par exemple, se connecter à un autre serveur distant). Vous pouvez également utiliser un contenu différent dans tous les fichiers de données utilisés par le test (par exemple, si chaque serveur doit utiliser des identifiants uniques, répartissez-les entre les fichiers de données)

Étape 1 : Démarrez les serveurs

Pour exécuter JMeter dans un nœud distant, démarrez le composant serveur JMeter sur toutes les machines sur lesquelles vous souhaitez exécuter en exécutant le script JMETER_HOME/bin/jmeter-server (unix) ou JMETER_HOME/bin/jmeter-server.bat (windows).

Notez qu'il ne peut y avoir qu'un seul serveur JMeter sur chaque nœud, sauf si différents ports RMI sont utilisés.

L'application serveur JMeter démarre le registre RMI lui-même ; il n'est pas nécessaire de démarrer le registre RMI séparément.

Par défaut, RMI utilise un port dynamique pour le moteur de serveur JMeter. Cela peut causer des problèmes pour les pare-feu, vous pouvez donc définir la propriété JMeter server.rmi.localport pour contrôler ce numéro de port. il sera utilisé comme numéro de port local pour le moteur du serveur.

Étape 2 : Ajoutez l'adresse IP du serveur au fichier de propriétés de votre client

Modifiez le fichier de propriétés sur la machine JMeter de contrôle . Dans JMETER_HOME/bin/jmeter.properties , recherchez la propriété nommée " remote_hosts " et ajoutez la valeur de l'adresse IP de votre serveur JMeter en cours d'exécution. Plusieurs serveurs de ce type peuvent être ajoutés, délimités par des virgules.

Notez que vous pouvez utiliser l' option de ligne de commande -R à la place pour spécifier le ou les hôtes distants à utiliser. Cela a le même effet que d'utiliser -r et -Jremote_hosts={serverlist} . Par exemple

jmeter -Rhost1,127.0.0.1,host2

Si vous définissez la propriété JMeter server.exitaftertest=true , le serveur se fermera après avoir exécuté un seul test. Voir aussi le drapeau -X (décrit ci-dessous)

Étape 3a : Démarrez le client JMeter à partir d'un client graphique pour vérifier la configuration

Vous êtes maintenant prêt à démarrer le client de contrôle JMeter. Pour MS-Windows, démarrez le client avec le script « bin/jmeter.bat ». Pour UNIX, utilisez le script « bin/jmeter ». Vous remarquerez que le menu Run contient deux nouveaux sous-menus : "Remote Start" et "Remote Stop" (voir figure 1). Ces menus contiennent le client que vous avez défini dans le fichier de propriétés. Utilisez le démarrage et l'arrêt à distance au lieu des éléments de menu de démarrage et d'arrêt normaux de JMeter.

Figure 1 - Menu Exécuter
Figure 1 - Menu Exécuter

Étape 3b : Démarrer le JMeter à partir d'un client en mode CLI

Le mode GUI ne doit être utilisé que pour le débogage, comme meilleure alternative, vous devez démarrer le test sur un ou plusieurs serveurs distants à partir d'un client en mode CLI (ligne de commande). La commande pour ce faire est :

jmeter -n -t script.jmx -r

ou

jmeter -n -t script.jmx -R serveur1,serveur2,…

Autres drapeaux qui peuvent être utiles :

-Gpropriété=valeur
définir une propriété dans tous les serveurs (peut apparaître plusieurs fois)
-X
Quittez les serveurs distants à la fin du test.

Le premier exemple démarrera le test sur tous les serveurs définis dans la propriété JMeter remote_hosts ;
Le deuxième exemple définira remote_hosts à partir de la liste des serveurs puis lancera le test sur les serveurs distants.
Le client de ligne de commande se fermera lorsque tous les serveurs distants seront arrêtés.

13.1 Configuration de SSL

Depuis JMeter 4.0, le mécanisme de transport par défaut pour RMI utilise SSL. SSL a besoin de clés et de certificats pour fonctionner. Vous devrez créer ces clés vous-même.

La configuration la plus simple consiste à utiliser une paire clé/certificat pour tous les serveurs et clients JMeter que vous souhaitez connecter. JMeter est livré avec un script pour générer un magasin de clés qui contient une clé (et son certificat correspondant) nommée rmi . Le script se trouve dans le répertoire bin et est disponible pour les systèmes Windows (appelé bin/create-rmi-keystore.bat ) et les systèmes de type Unix (appelé bin/create-rmi-keystore.sh ). Il générera une paire de clés, valide pendant sept jours, avec une phrase de passe par défaut de valeur « changeit ». Il est conseillé de l'appeler depuis le répertoire bin .

Lorsque vous exécutez le script, il vous posera des questions sur certains noms qu'il intégrera dans le certificat. Vous pouvez taper ce que vous voulez, tant que l'outil keystore l'accepte. Cette valeur doit correspondre à la propriété server.rmi.ssl.keystore.alias , qui par défaut est rmi . Un exemple de session pour créer le magasin de clés est présenté ci-dessous.

$ cd jmètre/bin
$ ./create-rmi-keystore.sh
Quel est votre nom et prénom ?
  [Inconnu] : rmi
Quel est le nom de votre unité organisationnelle?
  [Inconnu] : Nom de mon unité
Quel est le nom de votre organisation ?
  [Inconnu] : le nom de mon organisation
Quel est le nom de votre Ville ou Localité ?
  [Inconnu] : votre ville
Quel est le nom de votre état ou province ?
  [Inconnu] : votre état
Quel est le code pays à deux lettres de cet appareil ?
  [Inconnu] : XY
Est-ce que CN=rmi, OU=nom de mon unité, O=nom de mon organisation, L=votre ville, ST=votre état, C=XY est correct ?
  [non Oui

Copiez le fichier rmi_keystore.jks généré dans le dossier jmeter/bin ou référencez-le dans la propriété 'server.rmi.ssl.keystore.file'

Les paramètres par défaut pour RMI devraient fonctionner avec cette configuration. Copiez le fichier bin/rmi_keystore.jks sur chaque serveur et client JMeter que vous souhaitez utiliser pour votre configuration de test distribué.

13.2 Le faire manuellement

Dans certains cas, le script jmeter-server peut ne pas fonctionner pour vous (si vous utilisez une plate-forme de système d'exploitation non prévue par les développeurs JMeter). Voici comment démarrer les serveurs JMeter (étape 1 ci-dessus) avec un processus plus manuel :

Étape 1a : Démarrez le registre RMI

Depuis JMeter 2.3.1, le registre RMI est démarré par le serveur JMeter, donc cette section ne s'applique pas dans le cas normal. Pour revenir au comportement précédent, définissez la propriété JMeter server.rmi.create=false sur les systèmes hôtes du serveur et suivez les instructions ci-dessous.

JMeter utilise Remote Method Invocation (RMI) comme mécanisme de communication à distance. Par conséquent, vous devez exécuter l'application RMI Registry (nommée " rmiregistry ") fournie avec le JDK et située dans le répertoire " bin ". Avant d'exécuter rmiregistry , assurez-vous que les fichiers jar suivants se trouvent dans votre chemin de classe système :

  • JMETER_HOME/lib/ext/ApacheJMeter_core.jar
  • JMETER_HOME/lib/jorphan.jar
  • JMETER_HOME/lib/logkit-2.0.jar
L'application rmiregistry a besoin d'accéder à certaines classes JMeter. Exécutez rmiregistry sans paramètres. Par défaut, l'application écoute le port 1099 .

Étape 1b : Démarrez le serveur JMeter

Une fois l'application RMI Registry en cours d'exécution, démarrez le serveur JMeter. Utilisez l'option " -s " avec le script de démarrage jmeter (" jmeter -s ").

Les étapes 2 et 3 restent les mêmes.

13.3 Astuces

JMeter/RMI nécessite une connexion du client au serveur. Cela utilisera le port que vous avez choisi, 1099 par défaut .
JMeter/RMI nécessite également une connexion inversée afin de renvoyer les résultats des échantillons du serveur au client.
Ceux-ci utiliseront des ports à numéro élevé.
Ces ports peuvent être contrôlés par la propriété jmeter appelée client.rmi.localport dans jmeter.properties .
S'il est différent de zéro, il sera utilisé comme base pour les numéros de port locaux pour le moteur client. Pour le moment, JMeter ouvrira jusqu'à trois ports en commençant par le port défini dans client.rmi.localport. S'il existe des pare-feu ou d'autres filtres réseau entre le client et le serveur JMeter, vous devrez vous assurer qu'ils sont configurés pour autoriser les connexions. Si nécessaire, utilisez un logiciel de surveillance pour afficher le trafic généré.

Si vous utilisez Suse Linux, ces conseils peuvent vous aider. L'installation par défaut peut activer le pare-feu. Dans ce cas, le test à distance ne fonctionnera pas correctement. Les conseils suivants ont été fournis par Sergey Ten.

Si vous voyez des connexions refusées, activez le débogage en transmettant les options suivantes.

rmiregistry -J-Dsun.rmi.log.debug=true \
     -J-Dsun.rmi.server.exceptionTrace=true \
     -J-Dsun.rmi.loader.logLevel=verbeux \
     -J-Dsun.rmi.dgc.logLevel=verbeux \
     -J-Dsun.rmi.transport.logLevel=verbeux \
     -J-Dsun.rmi.transport.tcp.logLevel=verbeux \

Depuis JMeter 2.3.1, le registre RMI est démarré par le serveur ; cependant, les options peuvent toujours être transmises à partir de la ligne de commande JMeter. Par exemple : " jmeter -s -Dsun.rmi.loader.logLevel=verbose " (c'est-à-dire omettre les préfixes -J ). Alternativement, les propriétés peuvent être définies dans le fichier system.properties .

La solution au problème consiste à supprimer les loopbacks 127.0.0.1 et 127.0.0.2 de /etc/hosts . Ce qui se passe, c'est que jmeter-server ne peut pas se connecter à rmiregistry si le bouclage 127.0.0.2 n'est pas disponible. Utilisez les paramètres suivants pour résoudre le problème.

Remplacer

`dirname $0`/jmeter -s "$@"

Avec

HOST="-Djava.rmi.server.hostname=[nom_ordinateur][domaine_ordinateur] \
      -Djava.security.policy=`dirname $0`/[policy_file]" \
`dirname $0`/jmeter $HOST -s "$@"

Créez également un fichier de stratégie et ajoutez la ligne [computer_name][computer_domain] à /etc/hosts .

Afin de mieux prendre en charge la tunnellisation SSH des canaux de communication RMI utilisés dans les tests à distance, depuis JMeter 2.6 :

  • une nouvelle propriété " client.rmi.localport " peut être définie pour contrôler le port RMI utilisé par RemoteSampleListenerImpl
  • Pour prendre en charge la tunnellisation du trafic RMI sur un tunnel SSH en tant que point de terminaison distant à l'aide d'un port sur la machine locale, l'interface de bouclage est désormais autorisée à être utilisée si elle a été spécifiée directement à l'aide du paramètre Java System Property " java.rmi.server.hostname " .

13.4 Utilisation d'un port différent

Par défaut, JMeter utilise le port RMI standard 1099 . Il est possible de changer cela. Pour que cela fonctionne avec succès, tous les éléments suivants doivent être d'accord :

  • Sur le serveur, démarrez rmiregistry en utilisant le nouveau numéro de port
  • Sur le serveur, démarrez JMeter avec la propriété server_port définie
  • Sur le client, mettez à jour la propriété remote_hosts pour inclure les nouveaux paramètres hôte distant :port

Depuis JMeter 2.1.1, les scripts jmeter-server prennent en charge la modification du port. Par exemple, supposons que vous souhaitiez utiliser le port 1664 (peut-être que 1099 est déjà utilisé).

Sous Windows (dans une boîte DOS)
C:\JMETER> SET SERVER_PORT=1664
C:\JMETER> JMETER-SERVER [autres options]
Sous Unix :
$ SERVER_PORT=1664 jmeter-server [autres options]
[NB utiliser des majuscules pour la variable d'environnement]

Dans les deux cas, le script démarre rmiregistry sur le port spécifié, puis démarre JMeter en mode serveur, après avoir défini la propriété « server_port ».

Le port choisi sera enregistré dans le fichier jmeter.log du serveur ( rmiregistry ne crée pas de fichier journal).

13.5 Utilisation d'un expéditeur d'échantillon différent

Les écouteurs du plan de test renvoient leurs résultats au client JMeter qui écrit les résultats dans les fichiers spécifiés. Par défaut, les échantillons sont renvoyés de manière synchrone au fur et à mesure qu'ils sont générés. Cela peut affecter le débit maximal du test du serveur ; le résultat de l'échantillon doit être renvoyé avant que le thread puisse continuer. Certaines propriétés JMeter peuvent être définies pour modifier ce comportement.

mode
mode d'envoi d'échantillons - la valeur par défaut est StrippedBatch depuis la version 2.9. Cela doit être défini sur le poste client.
Standard
envoyer des échantillons de manière synchrone dès qu'ils sont générés
Tenir
conserver les échantillons dans un tableau jusqu'à la fin d'une analyse. Cela peut utiliser beaucoup de mémoire sur le serveur et est déconseillé.
DiskStore
stocker les échantillons dans un fichier disque (sous java.io.temp ) jusqu'à la fin d'une exécution. Le fichier de données sérialisé est supprimé à la sortie de la JVM.
StrippedDiskStore
supprimez responseData des échantillons réussis et utilisez l'expéditeur DiskStore pour les envoyer.
Lot
envoyer des échantillons enregistrés lorsque le nombre ( num_sample_threshold ) ou le temps ( time_threshold ) dépasse un seuil, auquel cas les échantillons sont envoyés de manière synchrone. Les seuils peuvent être configurés sur le serveur à l'aide des propriétés suivantes :
num_sample_threshold
nombre d'échantillons à accumuler, par défaut 100
time_threshold
seuil de temps, par défaut 60000 ms = 60 secondes
Voir aussi le mode Asynch, décrit ci-dessous.
Statistique
envoyer un échantillon récapitulatif lorsque le nombre ou le temps dépasse un seuil. Les exemples sont résumés par nom de groupe de threads et étiquette d'échantillon. Les champs suivants sont cumulés :
  • temps écoulé
  • latence
  • octets
  • nombre d'échantillons
  • nombre d'erreurs
Les autres champs qui varient d'un échantillon à l'autre sont perdus.
Dépouillé
supprimer responseData des échantillons réussis
StrippedBatch
supprimez responseData des échantillons réussis et utilisez Batch sender pour les envoyer.
Asynch
les échantillons sont temporairement stockés dans une file d'attente locale. Un thread de travail distinct envoie les échantillons. Cela permet au thread de test de continuer sans attendre que le résultat soit renvoyé au client. Cependant, si les échantillons sont créés plus rapidement qu'ils ne peuvent être envoyés, la file d'attente finira par se remplir et le thread de l'échantillonneur se bloquera jusqu'à ce que certains échantillons puissent être évacués de la file d'attente. Ce mode est utile pour lisser les pics de génération d'échantillons. La taille de la file d'attente peut être ajustée en définissant la propriété JMeter asynch.batch.queue.size ( 100 par défaut ) sur le nœud du serveur.
DépouilléAsynchrone
supprimez responseData des échantillons réussis et utilisez Async sender pour les envoyer.
Implémentation personnalisée
définissez le paramètre mode sur votre nom de classe d'expéditeur d'échantillon personnalisé. Celui-ci doit implémenter l'interface SampleSender et avoir un constructeur qui prend un seul paramètre de type RemoteSampleListener .
La famille du mode stripped supprime responseData , ce qui signifie que certains éléments qui dépendent de la disponibilité de la responseData précédente ne fonctionneront pas.
Ce n'est pas vraiment un problème car il existe toujours un moyen plus efficace d'implémenter cette fonctionnalité.

Les propriétés suivantes s'appliquent aux modes Lot et Statistique :

num_sample_threshold
nombre d'échantillons dans un lot ( 100 par défaut )
time_threshold
nombre de millisecondes à attendre (par défaut 60 secondes)

13.6 Traitement des nœuds dont le démarrage a échoué

Pour les tests à grande échelle, il est possible qu'une partie des serveurs distants soit indisponible ou en panne. Par exemple, lorsque vous utilisez un script d'automatisation pour allouer de nombreuses machines cloud et les utilisez comme générateurs, certaines des machines demandées peuvent échouer au démarrage en raison de problèmes de cloud. Depuis JMeter 2.13, de nouvelles propriétés permettent de contrôler ce comportement.

Tout d'abord, vous voudrez peut-être réessayer les tentatives d'initialisation dans l'espoir que les nœuds défaillants retardent légèrement leur démarrage. Pour activer les tentatives, vous devez définir la propriété client.tries sur le nombre total de tentatives de connexion. Par défaut, il ne fait qu'une seule tentative. Pour contrôler le délai de nouvelle tentative, définissez la propriété client.retries_delay sur le nombre de millisecondes de veille entre les tentatives.

Enfin, vous voudrez peut-être toujours exécuter le test avec les générateurs qui ont réussi l'initialisation et en ignorant les nœuds défaillants. Pour activer cela, définissez la propriété client.continue_on_fail=true .

13.7 Utilisation d'un gestionnaire de sécurité

Lorsque vous exécutez JMeter dans un environnement distribué, vous devez être conscient que JMeter est essentiellement un agent d'exécution à distance côté serveur et côté client. Cela pourrait être utilisé par une partie malveillante pour obtenir un accès supplémentaire, une fois qu'elle a compromis l'un des clients ou serveurs JMeter. Pour atténuer cela, Java utilise le concept d'un gestionnaire de sécurité qui est interrogé par la JVM avant que des actions dangereuses potentielles ne soient exécutées. Ces actions peuvent être la résolution de noms d'hôte, la création ou la lecture de fichiers ou l'exécution de commandes dans le système d'exploitation.

Le gestionnaire de sécurité peut être activé en définissant les propriétés système Java java.security.manager et java.security.policy . N'oubliez pas de jeter un coup d'œil à la visite guidée du contrôle des applications .

En utilisant le nouveau mécanisme de setenv.sh (ou setenv.bat sous Windows), vous pouvez activer le gestionnaire de sécurité en ajoutant l'extrait de code suivant à ${JMETER_HOME}/bin/setenv.sh :

JVM_ARGS="\
   -Djava.security.manager \
   -Djava.security.policy=${JMETER_HOME}/bin/java.policy \
   -Djmeter.home=${JMETER_HOME} \
"

La JVM va maintenant ajouter les politiques définies dans le fichier ${JMETER_HOME}/bin/java.policy aux politiques éventuellement définies globalement. Si vous souhaitez que votre définition soit la seule source de stratégies, utilisez deux signes égal au lieu d'un lors de la définition de la propriété java.security.policy .

Les politiques dépendront de votre cas d'utilisation et cela peut prendre un certain temps pour trouver les bonnes actions restreintes et autorisées. Java peut vous aider à trouver les stratégies nécessaires avec la propriété java.security.debug . Réglez-le sur access et il enregistrera toutes les autorisations qu'il est invité à autoriser. Ajoutez simplement la ligne suivante à votre setenv.sh :

JVM_ARGS="${JVM_ARGS} -Djava.security.debug=accès"

Cela peut sembler un peu étrange que nous définissions une propriété système Java jmeter.home avec la valeur de ${JMETER_HOME} . Cette variable sera utilisée dans l'exemple java.policy pour limiter l'accès au système de fichiers et lui permettre uniquement de lire la configuration et les bibliothèques JMeters et de restreindre l'accès en écriture à des emplacements spécifiques uniquement.

Le fichier de définition de stratégie suivant a été utilisé pour un simple test à distance. Vous devrez probablement modifier les politiques lorsque vous exécuterez des scénarios plus complexes. Les plans de test sont placés quelque part dans le répertoire personnel des utilisateurs sous un répertoire appelé jmeter-testplans . L'exemple java.policy ressemble à :

accorder codeBase "file:${jmeter.home}/bin/*" {
  autorisation java.security.AllPermission ;
} ;

accorder codeBase "file:${jmeter.home}/lib/jorphan.jar" {
  autorisation java.security.AllPermission ;
} ;

accorder codeBase "file:${jmeter.home}/lib/log4j-api-2.11.1.jar" {
  autorisation java.security.AllPermission ;
} ;

accorder codeBase "file:${jmeter.home}/lib/log4j-slf4j-impl-2.11.1.jar" {
  autorisation java.security.AllPermission ;
} ;

accorder codeBase "file:${jmeter.home}/lib/slf4j-api-1.7.25.jar" {
  autorisation java.security.AllPermission ;
} ;

accorder codeBase "file:${jmeter.home}/lib/log4j-core-2.11.1.jar" {
  autorisation java.security.AllPermission ;
} ;

accorder codeBase "file:${jmeter.home}/lib/ext/*" {
  autorisation java.security.AllPermission ;
} ;

accorder codeBase "file:${jmeter.home}/lib/httpclient-4.5.6.jar" {
  autorisation java.net.SocketPermission "*", "connecter, résoudre" ;
} ;

accorder codeBase "file:${jmeter.home}/lib/darcula.jar" {
  autorisation java.lang.RuntimePermission "modifyThreadGroup" ;
} ;

accorder codeBase "file:${jmeter.home}/lib/xercesImpl-2.12.0.jar" {
  permission java.io.FilePermission "${java.home}/lib/xerces.properties", "read" ;
} ;

accorder codeBase "file:${jmeter.home}/lib/groovy-all-2.4.15.jar" {
  autorisation groovy.security.GroovyCodeSourcePermission "/groovy/script" ;
  autorisation java.lang.RuntimePermission "accessClassInPackage.sun.reflect" ;
  autorisation java.lang.RuntimePermission "getProtectionDomain" ;
} ;

accorder {
  autorisation java.io.FilePermission "${jmeter.home}/backups", "lecture, écriture" ;
  permission java.io.FilePermission "${jmeter.home}/backups/*", "lecture, écriture, suppression" ;
  permission java.io.FilePermission "${jmeter.home}/bin/upgrade.properties", "read" ;
  permission java.io.FilePermission "${jmeter.home}/lib/ext/-", "read" ;
  permission java.io.FilePermission "${jmeter.home}/lib/ext", "read" ;
  autorisation java.io.FilePermission "${jmeter.home}/lib/-", "lire" ;
  permission java.io.FilePermission "${user.home}/jmeter-testplans/-", "lecture, écriture" ;
  autorisation java.io.SerializablePermission "enableSubclassImplementation" ;
  autorisation java.lang.reflect.ReflectPermission "suppressAccessChecks" ;
  autorisation java.lang.RuntimePermission "accessClassInPackage.jdk.internal.dynalink.support" ;
  autorisation java.lang.RuntimePermission "accessClassInPackage.sun.awt" ;
  autorisation java.lang.RuntimePermission "accessClassInPackage.sun.misc" ;
  autorisation java.lang.RuntimePermission "accessClassInPackage.sun.swing" ;
  autorisation java.lang.RuntimePermission "accessDeclaredMembers" ;
  autorisation java.lang.RuntimePermission "createClassLoader" ;
  autorisation java.lang.RuntimePermission "createSecurityManager" ;
  autorisation java.lang.RuntimePermission "getClassLoader" ;
  permission java.lang.RuntimePermission "getenv.*" ;
  autorisation java.lang.RuntimePermission "nashorn.createGlobal" ;
  autorisation java.util.PropertyPermission "*", "lire" ;
} ;
  
L'utilisation de java.security.AllPermission est un moyen simple de faire fonctionner vos plans de test, mais cela peut être un raccourci dangereux sur votre chemin vers la sécurité.
Go to top