Giornata difficile tough-day
Che cos’è il giorno difficile 2 what-is-tough-day
"Tough Day 2" è un’applicazione che consente di sottoporre a test di stress i limiti dell’istanza di AEM. Può essere eseguita con la suite di test predefinita o configurata in base alle tue esigenze di test. Puoi guardare questa registrazione per una presentazione dell'applicazione.
Come eseguire duro giorno 2 how-to-run-tough-day
Scarica la versione più recente del secondo giorno rigido dall'archivio Adobe. Dopo aver scaricato l'applicazione, è possibile eseguirla automaticamente fornendo il parametro host
. Nell'esempio seguente, l'istanza AEM viene eseguita localmente in modo da utilizzare il valore localhost
:
java -jar toughday2.jar --host=localhost
La suite predefinita eseguita dopo l'aggiunta dei parametri è denominata toughday
. Contiene i seguenti casi d’uso:
- Crea pagine e Live Copy per esse (inclusi i rollout)
- Ottieni homepage
- Eseguire query in querybuilder
- Creare gerarchie di risorse
- Eliminare risorse
La suite contiene il 15% di azioni di scrittura e l’85% di azioni di lettura.
Per eseguire i test delle suite, il Giorno difficile 2 installerà il pacchetto di contenuti predefinito. È possibile evitare questo inconveniente impostando il parametro installsamplecontent
su false
. È tuttavia necessario modificare anche i percorsi predefiniti per i test che si desidera eseguire. Se il file jar viene eseguito senza parametri, nel secondo giorno vengono visualizzate le informazioni della Guida.
Di regola, puoi utilizzare l’applicazione seguendo questo pattern:
java -jar toughday2.jar [--help | --help_full | --help_tests | --help_publish] [<global arguments> | <actions> | --runmode | --publishmode]
Ottenimento della Guida getting-help
Duro Giorno 2 offre un'ampia gamma di opzioni di aiuto accessibili dalla riga di comando. Ad esempio:
java -jar toughday2.jar --help_full
Nella tabella seguente sono disponibili i parametri della Guida pertinenti.
Parametri globali global-parameters
Il secondo giorno difficile offre parametri globali che impostano o modificano l’ambiente per i test. Questi includono l’host di destinazione, il numero di porta, il protocollo utilizzato, l’utente e la password per l’istanza e molti altri. Ad esempio:
java -jar toughday2.jar --host=host --protocol=https --port=4502 --duration=30m --dryrun=true
Puoi trovare i parametri rilevanti nell’elenco seguente:
--installsamplecontent=<Val>
--protocol=<Val>
--host=<Val>
--port=<Val>
--user=<Val>
--password=<Val>
--duration=<Val>
--timeout=<Val>
--suite=<Val>
--configfile=<Val>
--contextpath=<Val>
--loglevel=<Val>
--dryrun=<Val>
Personalizzazione customizing
La personalizzazione può essere ottenuta in due modi: tramite parametri della riga di comando o file di configurazione yaml. I file di configurazione vengono utilizzati per le suite personalizzate di grandi dimensioni e sostituiscono i parametri predefiniti del giorno 2. I parametri della riga di comando sostituiscono sia i file di configurazione che i parametri predefiniti.
L’unico modo per salvare una configurazione di test è copiarla in formato yaml.
Aggiunta di un nuovo test adding-a-new-test
Se non desideri utilizzare la suite toughday
predefinita, puoi aggiungere un test scegliendo il parametro add
. Gli esempi seguenti mostrano come aggiungere il test CreateAssetTreeTest
utilizzando i parametri della riga di comando o un file di configurazione yaml.
Utilizzando i parametri della riga di comando:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest
Utilizzando un file di configurazione yaml:
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
Aggiunta di più istanze dello stesso test adding-multiple-instances-of-the-same-test
Puoi anche aggiungere ed eseguire più istanze dello stesso test, ma ogni istanza deve avere un nome univoco. Gli esempi seguenti mostrano come aggiungere due istanze dello stesso test utilizzando parametri della riga di comando o un file di configurazione yaml.
Utilizzando i parametri della riga di comando:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest name=FirstAssetTree --add CreateAssetTreeTest name=SecondAssetTree
Utilizzando un file di configurazione yaml:
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
properties:
name : FirstAssetTree
- add : CreateAssetTreeTest
properties:
name : SecondAssetTree
Modifica delle proprietà del test changing-the-test-properties
Se devi modificare una o più proprietà del test, puoi aggiungerle alla riga di comando o al file di configurazione yaml. Per visualizzare tutte le proprietà di test disponibili, aggiungere il parametro --help <TestClass/PublisherClass>
alla riga di comando, ad esempio:
java -jar toughday2.jar --help CreatePageTreeTest
I file di configurazione yaml sovrascriveranno i parametri di default di Giorno 2 e i parametri della riga di comando sovrascriveranno sia i file di configurazione che i valori di default.
Negli esempi seguenti viene illustrato come modificare la proprietà template
per il test CreatePageTreeTest
utilizzando i parametri della riga di comando o un file di configurazione yaml.
Utilizzando i parametri della riga di comando:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest template=/conf/toughday-templates/settings/wcm/templates/toughday-template
Utilizzando un file di configurazione yaml:
globals:
host : localhost
tests:
- add : CreatePageTreeTest
properties:
template : /conf/toughday-templates/settings/wcm/templates/toughday-template
Utilizzo delle suite di test predefinite working-with-predefined-test-suites
Gli esempi seguenti mostrano come aggiungere un test a una suite predefinita e come riconfigurare ed escludere un test esistente da una suite predefinita.
È possibile aggiungere un nuovo test a una suite predefinita utilizzando il parametro add
e specificando la suite predefinita di destinazione.
Utilizzando i parametri della riga di comando:
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest
Utilizzando un file di configurazione yaml:
globals:
host : localhost
suite : toughday
tests:
- add : CreatePageTreeTest
I test esistenti in una determinata suite possono essere riconfigurati utilizzando il parametro config
* *. Specifica anche il nome della suite e il nome effettivo del test (non il nome della classe di test). È possibile trovare il nome del test nella proprietà name
della classe del test. Per ulteriori dettagli su come trovare le proprietà dei test, leggere la sezione Modifica delle proprietà dei test.
Nell'esempio seguente il titolo predefinito della risorsa per CreatePageTreeTest
(denominato UploadAsset
) viene modificato in "NewAsset".
Utilizzando i parametri della riga di comando:
java -jar toughday2.jar --host=localhost --suite=toughday --config UploadAsset title=NewAsset
Utilizzando un file di configurazione yaml:
globals:
host : localhost
suite : toughday
tests:
- config : UploadAsset
properties :
title : NewAsset
È inoltre possibile rimuovere i test da suite o editori predefiniti dalla configurazione predefinita utilizzando il parametro exclude
. Specificare inoltre il nome della suite e il nome effettivo del test (non il nome del test C lass
). È possibile trovare il nome del test nella proprietà name
della classe del test. Nell'esempio seguente, il test CreatePageTreeTest
(denominato UploadAsset
) viene rimosso dalla suite di giorni duri.
Utilizzando i parametri della riga di comando:
java -jar toughday2.jar --host=localhost --suite=toughday --exclude UploadAsset
Utilizzando un file di configurazione yaml:
globals:
host : localhost
suite : toughday
tests:
- exclude : UploadAsset
Modalità di esecuzione run-modes
Il giorno 2 può essere eseguito in una delle seguenti modalità: normale e carico costante.
La modalità di esecuzione normale ha due parametri:
-
concurrency
- la concorrenza rappresenta il numero di thread che verranno creati dal giorno 2 per l'esecuzione del test. Su questi thread, i test verranno eseguiti fino a quando la durata non è terminata o non sono presenti altri test da eseguire. -
waittime
: tempo di attesa tra due esecuzioni di test consecutive sullo stesso thread. Il valore deve essere espresso in millisecondi.
L’esempio seguente mostra come aggiungere i parametri utilizzando la riga di comando:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest --runmode=normal concurrency=20
oppure utilizzando un file di configurazione yaml:
runmode:
type : normal
waittime : 300
concurrency : 200
La modalità di esecuzione caricamento costante differisce dalla modalità di esecuzione normale in quanto genera un numero costante di esecuzioni di test avviate, anziché un numero costante di thread. È possibile impostare il carico utilizzando il parametro della modalità di esecuzione con lo stesso nome.
Selezione test test-selection
Il processo di selezione dei test è lo stesso per entrambe le modalità di esecuzione ed è il seguente: tutti i test hanno una proprietà weight
, che determina la probabilità di esecuzione in un thread. Ad esempio, se disponi di due test, uno con un peso di 5 e l’altro con un peso di 10, è due volte più probabile che venga eseguito il secondo.
Inoltre, i test possono avere una proprietà count
, che limita il numero di esecuzioni a un determinato numero. Una volta passato questo numero, non si verificheranno ulteriori esecuzioni del test. Tutte le istanze di test già in esecuzione finiranno l’esecuzione come configurato. Nell'esempio seguente viene illustrato come aggiungere questi parametri nella riga di comando o utilizzando un file di configurazione yaml.
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest weight=5 --add CreatePageTreeTest weight=10 count=100 --runmode=normal concurrency=20
oppure
- add : CreateAssetTreeTest
properties :
name : UploadAsset
weight : 5
base : 3
foldertitle : IAmAFolder
assettitle : IAmAnAsset
count : 100
count
. È prevista una deviazione proporzionale al numero di thread in esecuzione (controllati da concurrency parameter
).Prova dry-run
Un'esecuzione a secco analizza tutti gli input forniti (parametri della riga di comando o file di configurazione), unendoli con i valori predefiniti e quindi restituisce i risultati. Non esegue nessuno dei test.
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest --dryrun=true
Output output
Il secondo giorno genera sia metriche di test che registri. Per ulteriori informazioni, leggere le sezioni seguenti.
Metriche di test test-metrics
Duro Giorno 2 attualmente riporta nove metriche di test che è possibile valutare. Le metriche con il simbolo * vengono segnalate solo dopo esecuzioni riuscite:
Queste metriche vengono scritte con l'aiuto di editori che possono essere aggiunti con il parametro add
(in modo simile all'aggiunta di test). Attualmente sono disponibili due opzioni:
- CSVPublisher - l'output è un file CSV.
- ConsolePublisher - l'output viene visualizzato nella console.
Per impostazione predefinita, entrambi gli editori sono abilitati.
Inoltre, esistono due modalità in cui vengono riportate le metriche:
- Modalità di pubblicazione simple: riporta i risultati dall'inizio dell'esecuzione fino al punto di pubblicazione.
- Modalità di pubblicazione intervalli: riporta i risultati in un determinato intervallo di tempo. È possibile impostare l'intervallo di tempo con il parametro della modalità di pubblicazione interval.
Nell'esempio seguente viene illustrato come configurare il parametro intervals
nella riga di comando o utilizzando un file di configurazione yaml.
Utilizzando i parametri della riga di comando:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest --publishmode type=intervals interval=10s
Utilizzando un file di configurazione yaml:
publishmode:
type : intervals
interval : 10s
tests:
-add : CreatePageTreeTest
Registrazione logging
Il giorno 2 crea una cartella dei registri nella stessa directory in cui è stato eseguito il giorno 2. Questa cartella contiene due tipi di registri:
- toughday.log: contiene messaggi relativi allo stato dell'applicazione, alle informazioni di debug e ai messaggi globali.
- toughday_<testname>.log: messaggi relativi al test specificato.
I registri non vengono sovrascritti, le esecuzioni successive aggiungono i messaggi ai registri esistenti. I registri hanno diversi livelli. Per ulteriori informazioni, vedere il parametro loglevel..