« Tough Day 2 » est une application qui vous permet de tester les limites de votre instance AEM. Prête à l’emploi, elle peut être exécutée avec la suite de tests par défaut ou configurée pour répondre à vos impératifs de test. Cet enregistrement est une présentation de l’application.
Téléchargez la dernière version de Tough Day 2 à partir du référentiel Adobe. Après avoir téléchargé l’application, vous pouvez l’exécuter en dehors de la zone en fournissant le paramètre host
. Dans l’exemple suivant, l’instance AEM s’exécute localement afin que la valeur localhost
soit utilisée :
java -jar toughday2.jar --host=localhost
La suite par défaut qui s’exécute après l’ajout des paramètres s’appelle toughday
. Elle contient les cas d’utilisation suivants :
La suite contient 15 % d’actions d’écriture et 85 % d’actions de lecture.
Pour exécuter les tests de la suite, Tough Day 2 installe son package de contenu par défaut. Cela peut être évité en définissant le paramètre installsamplecontent
sur false
, mais n'oubliez pas que vous devez également modifier les chemins par défaut pour les tests que vous prévoyez d'exécuter. Si le fichier jar est exécuté sans paramètres, Tough Day 2 affiche les informations d'aide.
En règle générale, vous pouvez utiliser l’application en suivant ce modèle :
java -jar toughday2.jar [--help | --help_full | --help_tests | --help_publish] [<global arguments> | <actions> | --runmode | --publishmode]
Tough Day 2 n’a pas d’étape de nettoyage. Par conséquent, il est recommandé d’exécuter Tough Day 2 sur une instance de transfert clonée et non sur l’instance de production principale. L’instance de transfert doit être supprimée après les tests.
Tough Day 2 offre un large éventail d’options d’aide accessibles depuis la ligne de commande. Par exemple :
java -jar toughday2.jar --help_full
Le tableau ci-dessous décrit des paramètres d’aide pertinents.
Paramètre | Description | Exemple |
--help | Imprime des informations globales, par exemple : les actions disponibles, les suites prédéfinies, les modes d'exécution et les paramètres globaux. | |
—help_publish | Imprime tous les éditeurs disponibles. | |
—help_tests | Imprime les classes de test et leur description. | |
—help_full | Imprime tous les éléments ci-dessus, ainsi que les tests, les éditeurs et les composants de la suite. | |
—help —runmode/publishmode type=<Mode> | Liste des informations sur le mode d’exécution ou de publication spécifié. | java -jar toughday2.jar —help —runmode type=constantload java -jar toughday2.jar —help —publishmode type=intervalles |
—help —suite=<NomSuite> | Liste tous les tests d’une suite donnée et leurs propriétés configurables respectives. | java -jar toughday2.jar —help —suite=get_tests |
—help —tag=<Balise> | Liste tous les éléments qui ont la balise spécifiée. |
java -jar toughday2.jar —help —tag=publish |
—help <TestClass/PublisherClass> | Liste toutes les propriétés configurables pour le test ou l’éditeur donné. |
java -jar toughday2.jar —help UploadPDFTest java -jar toughday2.jar —help CSVPubliher |
Tough Day 2 propose des paramètres globaux qui définissent ou modifient l’environnement pour les tests. Ils incluent notamment l’hôte ciblé, le numéro de port, le protocole utilisé, l’utilisateur et le mot de passe pour l’instance et bien d’autres. Par exemple :
java -jar toughday2.jar --host=host --protocol=https --port=4502 --duration=30m --dryrun=true
Voici la liste des paramètres pertinents :
Paramètre | Description | Valeur par défaut | Valeurs possibles |
---|---|---|---|
--installsamplecontent=<Val> |
Installe ou ignore le package de contenu par défaut, Tough Day 2. | true | true ou false |
--protocol=<Val> |
Protocole utilisé pour l’hôte. | http | http ou https |
--host=<Val> |
Nom d’hôte ou adresse IP qui sera ciblé. | ||
--port=<Val> |
Port de l’hôte. | 4502 | |
--user=<Val> |
Nom d’utilisateur de l’instance. | admin | |
--password=<Val> |
Mot de passe pour l’utilisateur donné. | admin | |
--duration=<Val> |
Durée des tests. Peut être exprimé en (s)secondes, (m)minutes (h)nours et (d) jours. | 1d | |
--timeout=<Val> |
Durée pendant laquelle un test s'exécute avant d'être interrompu et signalé comme échec. Exprimé en secondes. | 180 | |
--suite=<Val> |
La valeur peut être une ou une liste (séparée par des virgules) de suites de tests prédéfinies. | jour difficile | |
--configfile=<Val> |
Le fichier de configuration de l'image cible. | ||
--contextpath=<Val> |
Chemin d’accès contextuel de l’instance. | ||
--loglevel=<Val> |
Niveau de journal du moteur de journée difficile 2. | INFO | TOUT, DÉBOGUER, INFORMATIONS, AVERTISSEMENT, ERREUR, FATAL, OFF |
--dryrun=<Val> |
Si la valeur est true, imprime la configuration résultante et n’exécute aucun test. | false | true ou false |
La personnalisation peut être réalisée de deux manières : avec les paramètres de ligne de commande ou les fichiers de configuration yaml. Les fichiers de configuration sont généralement utilisés pour les grandes suites personnalisées. Ils remplacent les paramètres par défaut de Tough Day 2. Les paramètres de ligne de commande remplacent les fichiers de configuration et les paramètres par défaut.
La seule façon d’enregistrer une configuration de test consiste à la copier au format yaml. Pour plus d'informations, reportez-vous à cette configuration toughday.yaml et aux exemples de configuration de l'année dans les sections ci-dessous.
Si vous ne voulez pas utiliser la suite toughday
par défaut, vous pouvez ajouter un test de votre choix en utilisant le paramètre add
. Les exemples ci-dessous montrent comment ajouter le test CreateAssetTreeTest
en utilisant des paramètres de ligne de commande ou un fichier de configuration yaml.
En utilisant les paramètres de la ligne de commande :
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest
En utilisant un fichier de configuration yaml :
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
Vous pouvez également ajouter et exécuter plusieurs instances du même test, mais chaque instance doit avoir un nom unique. Les exemples ci-dessous montrent comment ajouter deux instances du même test en utilisant des paramètres de ligne de commande ou un fichier de configuration yaml.
En utilisant les paramètres de la ligne de commande :
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest name=FirstAssetTree --add CreateAssetTreeTest name=SecondAssetTree
En utilisant un fichier de configuration yaml :
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
properties:
name : FirstAssetTree
- add : CreateAssetTreeTest
properties:
name : SecondAssetTree
Si vous devez modifier une ou plusieurs propriétés de test, vous pouvez ajouter cette propriété à la ligne de commande ou au fichier de configuration yaml. Pour afficher toutes les propriétés de test disponibles, ajoutez le paramètre --help <TestClass/PublisherClass>
à la ligne de commande, par exemple :
java -jar toughday2.jar --help CreatePageTreeTest
Gardez à l’esprit que les fichiers de configuration yaml écraseront les paramètres par défaut de Tough Day 2 et que les paramètres de ligne de commande remplaceront les fichiers de configuration et les valeurs par défaut.
Les exemples ci-dessous montrent comment modifier la propriété template
pour le test CreatePageTreeTest
en utilisant soit des paramètres de ligne de commande, soit un fichier de configuration yaml.
En utilisant les paramètres de la ligne de commande :
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest template=/conf/toughday-templates/settings/wcm/templates/toughday-template
En utilisant un fichier de configuration yaml :
globals:
host : localhost
tests:
- add : CreatePageTreeTest
properties:
template : /conf/toughday-templates/settings/wcm/templates/toughday-template
Les exemples ci-dessous montrent comment ajouter un test à une suite prédéfinie et reconfigurer et exclure un test existant d’une suite prédéfinie.
Vous pouvez ajouter un nouveau test à une suite prédéfinie en utilisant le paramètre add
et en spécifiant la suite prédéfinie ciblée.
En utilisant les paramètres de la ligne de commande :
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest
En utilisant un fichier de configuration yaml :
globals:
host : localhost
suite : toughday
tests:
- add : CreatePageTreeTest
Les tests existants dans une suite donnée peuvent également être reconfigurés à l’aide du paramètre a0/>. config
Veuillez noter que vous devez également indiquer le nom de la suite et le nom réel du test (et non le nom de la classe de test). Le nom du test est disponible dans la propriété name
de la classe de test. Pour savoir comment retrouver les propriétés de test, lisez la section Modification des propriétés de test.
Dans l’exemple ci-dessous, le titre de ressource par défaut de CreatePageTreeTest
(nommé UploadAsset
) est remplacé par "NewAsset".
En utilisant les paramètres de la ligne de commande :
java -jar toughday2.jar --host=localhost --suite=toughday --config UploadAsset title=NewAsset
En utilisant un fichier de configuration yaml :
globals:
host : localhost
suite : toughday
tests:
- config : UploadAsset
properties :
title : NewAsset
En outre, vous pouvez également supprimer les tests des suites prédéfinies ou des éditeurs de la configuration par défaut à l’aide du paramètre exclude
. Veuillez noter que vous devez également indiquer le nom de la suite et le nom réel du test (et non le nom du test C lass
). Vous pouvez trouver le nom du test dans la propriété name
de la classe de test. Dans l’exemple ci-dessous, le test CreatePageTreeTest
(nommé UploadAsset
) est supprimé de la suite de jours difficiles.
En utilisant les paramètres de la ligne de commande :
java -jar toughday2.jar --host=localhost --suite=toughday --exclude UploadAsset
En utilisant un fichier de configuration yaml :
globals:
host : localhost
suite : toughday
tests:
- exclude : UploadAsset
Le jour difficile 2 peut s’exécuter dans l’un des modes suivants : charge normale et charge constante.
Le mode d'exécution normal comporte deux paramètres :
concurrency
- concurrence représente le nombre de threads que Tough Day 2 va créer pour l'exécution du test. Sur ces threads, les tests sont exécutés jusqu’à ce que la durée soit écoulée ou qu’il n’y ait plus de tests à exécuter.
waittime
: temps d’attente entre deux exécutions de test consécutives sur le même thread. La valeur doit être exprimée en millisecondes.
L’exemple ci-dessous montre comment ajouter les paramètres au moyen de la ligne de commande :
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest --runmode=normal concurrency=20
ou en utilisant un fichier de configuration yaml :
runmode:
type : normal
waittime : 300
concurrency : 200
Le mode d'exécution charge constante diffère du mode d'exécution normal en générant un nombre constant d'exécutions de tests démarrées, plutôt qu'un nombre constant de threads. Vous pouvez définir le chargement à l’aide du paramètre du mode d’exécution portant le même nom.
Le processus de sélection des tests est le même pour les deux modes d’exécution et se présente comme suit : tous les tests ont une propriété weight
qui détermine la probabilité d’exécution dans un thread. Prenons l’exemple de deux tests, l’un avec une pondération de 5 et l’autre de 10. Dans ce cas, ce dernier a deux fois plus de chance d’être exécuté que le premier.
En outre, les tests peuvent avoir une propriété count
, qui limite le nombre d’exécutions à un nombre donné. Une fois ce nombre atteint, aucune autre exécution du test n’aura lieu. Toutes les instances de test en cours d’exécution se terminent selon leur configuration. L’exemple suivant montre comment ajouter ces paramètres à l’aide de la ligne de commande ou d’un fichier de configuration yaml.
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest weight=5 --add CreatePageTreeTest weight=10 count=100 --runmode=normal concurrency=20
ou
- add : CreateAssetTreeTest
properties :
name : UploadAsset
weight : 5
base : 3
foldertitle : IAmAFolder
assettitle : IAmAnAsset
count : 100
En raison d’exécutions parallèles, le nombre réel d’exécutions de test ne correspond pas exactement à la quantité configurée dans le paramètre count
. Attendez-vous à un écart proportionnel au nombre de threads en cours d'exécution (contrôlé par concurrency parameter
).
Une analyse à sec étudie toutes les entrées données (paramètres de ligne de commande ou fichiers de configuration), les fusionne avec les valeurs par défaut, puis affiche les résultats. Elle n’exécute aucun des tests.
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest --dryrun=true
Tough Day 2 génère à la fois des métriques de test et des journaux. Pour plus de détails, lisez les sections suivantes.
Tough Day 2 fait actuellement état de 9 métriques de test que vous pouvez évaluer. Les mesures avec le symbole * ne sont reportées qu’après des exécutions réussies :
Name (Nom) | Description |
---|---|
Timestamp | Horodatage de la dernière exécution de test terminée. |
Transmis | Nombre d'exécutions réussies. |
Échec | Nombre d'exécutions ayant échoué. |
Min* | Durée la plus faible d’exécution du test. |
Max* | Durée d’exécution du test la plus élevée. |
Médiane* | Durée médiane calculée de toutes les exécutions de test. |
Moyenne* | Durée moyenne calculée de toutes les exécutions de test. |
StdDev* | Écart type. |
90p* | 90 centile. |
99p* | 99 pour cent. |
99.9p* | 99,9 centile. |
Débit réel* | Nombre d’exécutions divisé par le temps d’exécution écoulé. |
Ces mesures sont écrites à l’aide d’éditeurs qui peuvent être ajoutées avec le paramètre add
(de la même manière que l’ajout de tests). Actuellement, il existe deux options :
Par défaut, les deux éditeurs sont activés.
En outre, il existe deux modes dans lesquels les mesures sont rapportées :
L'exemple suivant montre comment configurer le paramètre intervals
en ligne de commande ou à l'aide d'un fichier de configuration yaml.
En utilisant les paramètres de la ligne de commande :
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest --publishmode type=intervals interval=10s
En utilisant un fichier de configuration yaml :
publishmode:
type : intervals
interval : 10s
tests:
-add : CreatePageTreeTest
Tough Day 2 crée un dossier de journaux dans le même répertoire que celui où vous avez exécuté Tough Day 2. Ce dossier contient deux types de journaux :
Les journaux ne sont pas remplacés, les exécutions subséquentes ajoutent des messages aux journaux existants. Les journaux ont plusieurs niveaux, pour plus d'informations voir le [loglevel parameter](/docs/experience-manager-65/sites-developing/tough-day.html?lang=fr#global-parameters)
.