Dia difícil tough-day
O que é difícil dia 2 what-is-tough-day
"Dia difícil 2" é um aplicativo que permite testar os limites da sua instância de AEM. Ele pode ser executado imediatamente com o conjunto de testes padrão ou pode ser configurado para atender às suas necessidades de teste. Você pode assistir a esta gravação para uma apresentação do aplicativo.
Como executar difícil dia 2 how-to-run-tough-day
Baixe a versão mais recente do Dia Difícil 2 do Repositório Adobe. Após baixar o aplicativo, é possível executá-lo imediatamente, fornecendo o parâmetro host
. No exemplo a seguir, a instância AEM é executada localmente para que o valor localhost
seja usado:
java -jar toughday2.jar --host=localhost
O conjunto padrão executado após a adição dos parâmetros é denominado toughday
. Ele contém os seguintes casos de uso:
- Criar páginas e Live Copies para elas (incluindo implantações)
- Obter Página Inicial
- Executar consultas no querybuilder
- Criar hierarquias de ativos
- Excluir ativos
O conjunto contém 15% de ações de gravação e 85% de ações de leitura.
Para executar os testes do conjunto, o Dia Difícil 2 instalará seu pacote de conteúdo padrão. Isso pode ser evitado definindo o parâmetro installsamplecontent
como false
, mas lembre-se de que você também deve alterar os caminhos padrão para os testes que pretende executar. Se o jar for executado sem parâmetros, o Dia Difícil 2 exibirá as informações de ajuda.
Como regra, você pode usar o aplicativo seguindo este padrão:
java -jar toughday2.jar [--help | --help_full | --help_tests | --help_publish] [<global arguments> | <actions> | --runmode | --publishmode]
Obtendo ajuda getting-help
O Dia Difícil 2 oferece uma ampla variedade de opções de ajuda que podem ser acessadas a partir da linha de comando. Por exemplo:
java -jar toughday2.jar --help_full
Na tabela abaixo, você pode encontrar os parâmetros de ajuda relevantes.
Parâmetros Globais global-parameters
O Dia Difícil 2 oferece parâmetros globais que definem ou alteram o ambiente para os testes. Isso inclui o host de destino, o número da porta, o protocolo usado, o usuário e a senha da instância e muito mais. Por exemplo:
java -jar toughday2.jar --host=host --protocol=https --port=4502 --duration=30m --dryrun=true
Você pode encontrar os parâmetros relevantes na lista abaixo:
--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>
Personalização customizing
A personalização pode ser obtida de duas maneiras: parâmetros de linha de comando ou arquivos de configuração yaml. Os arquivos de configuração são usados para grandes conjuntos personalizados e eles substituem os parâmetros padrão do Dia Difícil 2. Os parâmetros de linha de comando substituem os arquivos de configuração e os parâmetros padrão.
A única maneira de salvar uma configuração de teste é copiá-la no formato yaml.
Adicionar um novo teste adding-a-new-test
Se você não quiser usar o conjunto toughday
padrão, poderá adicionar um teste de sua escolha usando o parâmetro add
. Os exemplos abaixo mostram como adicionar o teste CreateAssetTreeTest
usando parâmetros de linha de comando ou um arquivo de configuração yaml.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest
Ao usar um arquivo de configuração yaml:
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
Adicionar várias instâncias do mesmo teste adding-multiple-instances-of-the-same-test
Você também pode adicionar e executar várias instâncias do mesmo teste, mas cada instância deve ter um nome exclusivo. Os exemplos abaixo mostram como adicionar duas instâncias do mesmo teste usando parâmetros de linha de comando ou um arquivo de configuração yaml.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest name=FirstAssetTree --add CreateAssetTreeTest name=SecondAssetTree
Ao usar um arquivo de configuração yaml:
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
properties:
name : FirstAssetTree
- add : CreateAssetTreeTest
properties:
name : SecondAssetTree
Alterando as propriedades do teste changing-the-test-properties
Caso precise alterar uma ou mais propriedades de teste, é possível adicionar essa propriedade à linha de comando ou ao arquivo de configuração yaml. Para ver todas as propriedades de teste disponíveis, adicione o parâmetro --help <TestClass/PublisherClass>
à linha de comando, por exemplo:
java -jar toughday2.jar --help CreatePageTreeTest
Lembre-se de que os arquivos de configuração yaml substituirão os parâmetros padrão do Dia Difícil 2 e os parâmetros de linha de comando substituirão os arquivos de configuração e os padrões.
Os exemplos abaixo mostram como alterar a propriedade template
para o teste CreatePageTreeTest
usando parâmetros de linha de comando ou um arquivo de configuração yaml.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest template=/conf/toughday-templates/settings/wcm/templates/toughday-template
Ao usar um arquivo de configuração yaml:
globals:
host : localhost
tests:
- add : CreatePageTreeTest
properties:
template : /conf/toughday-templates/settings/wcm/templates/toughday-template
Trabalhar com conjuntos de testes predefinidos working-with-predefined-test-suites
Os exemplos abaixo mostram como adicionar um teste a um conjunto predefinido e como reconfigurar e excluir um teste existente de um conjunto predefinido.
Você pode adicionar um novo teste a um conjunto predefinido usando o parâmetro add
e especificando o conjunto predefinido de destino.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest
Ao usar um arquivo de configuração yaml:
globals:
host : localhost
suite : toughday
tests:
- add : CreatePageTreeTest
Os testes existentes em um determinado conjunto também podem ser reconfigurados usando o parâmetro config
* *. Especifique também o nome do conjunto e o nome real do teste (não o nome da Classe de Teste). Você pode encontrar o nome do teste na propriedade name
da Classe de Teste. Para obter mais detalhes sobre como encontrar propriedades de teste, leia a seção Alterando Propriedades de Teste.
No exemplo abaixo, o título de ativo padrão para o CreatePageTreeTest
(chamado UploadAsset
) é alterado para "NewAsset".
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --suite=toughday --config UploadAsset title=NewAsset
Ao usar um arquivo de configuração yaml:
globals:
host : localhost
suite : toughday
tests:
- config : UploadAsset
properties :
title : NewAsset
Além disso, você também pode remover testes de conjuntos ou editores predefinidos da configuração padrão usando o parâmetro exclude
. Especifique também o nome do conjunto e o nome real do teste (não o nome Test C lass
). Você pode encontrar o nome do teste na propriedade name
da classe de teste. No exemplo abaixo, o teste CreatePageTreeTest
(chamado UploadAsset
) é removido do conjunto de dias úteis.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --suite=toughday --exclude UploadAsset
Ao usar um arquivo de configuração yaml:
globals:
host : localhost
suite : toughday
tests:
- exclude : UploadAsset
Modos de execução run-modes
O Dia Difícil 2 pode ser executado em um dos seguintes modos: normal e carga constante.
O modo de execução normal tem dois parâmetros:
-
concurrency
- a simultaneidade representa o número de threads que o Dia Difícil 2 criará para execução de teste. Nesses threads, os testes serão executados até que a duração tenha se esgotado ou que não haja mais testes para executar. -
waittime
- o tempo de espera entre duas execuções de teste consecutivas no mesmo thread. O valor deve ser expresso em milissegundos.
O exemplo abaixo mostra como adicionar os parâmetros usando a linha de comando:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest --runmode=normal concurrency=20
ou usando um arquivo de configuração yaml:
runmode:
type : normal
waittime : 300
concurrency : 200
O modo de execução constante load difere do modo de execução normal gerando um número constante de execuções de teste iniciadas, em vez de um número constante de threads. Você pode definir a carga usando o parâmetro de modo de execução com o mesmo nome.
Testar seleção test-selection
O processo de seleção de teste é o mesmo para ambos os modos de execução e é o seguinte: todos os testes têm uma propriedade weight
, que determina a probabilidade de execução em um thread. Por exemplo, se você tiver dois testes, um com um peso de 5 e o outro com um peso de 10, o último terá duas vezes mais probabilidade de ser executado do que o primeiro.
Além disso, os testes podem ter uma propriedade count
, que limita o número de execuções a um determinado número. Após esse número ser aprovado, não ocorrerá mais nenhuma execução do teste. Todas as instâncias de teste que já estão em execução concluirão a execução como configurada. O exemplo a seguir mostra como adicionar esses parâmetros na linha de comando ou usando um arquivo de configuração 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
count
. Espere um desvio proporcional ao número de threads em execução (controlado pelo concurrency parameter
).Execução de prática dry-run
Uma execução seca analisa todas as entradas fornecidas (parâmetros de linha de comando ou arquivos de configuração), mesclando-as com os padrões e, em seguida, gera os resultados. Ele não executa nenhum dos testes.
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest --dryrun=true
Saída output
O Dia difícil 2 gera métricas de teste e logs. Para obter mais detalhes, leia as seções a seguir.
Métricas de teste test-metrics
Atualmente, o Dia difícil 2 relata nove métricas de teste que você pode avaliar. Métricas com o símbolo * são relatadas somente após execuções bem-sucedidas:
Essas métricas são gravadas com a ajuda de editores que podem ser adicionados com o parâmetro add
(de forma semelhante à adição de testes). Atualmente, há duas opções:
- CSVPublisher - a saída é um arquivo CSV.
- ConsolePublisher - a saída é exibida no console.
Por padrão, ambos os editores estão ativados.
Além disso, há dois modos nos quais as métricas são relatadas:
- O modo de publicação simples - relata os resultados desde o início da execução até o ponto de publicação.
- O modo de publicação intervalos - relata os resultados em um determinado período. Você pode definir o intervalo de tempo com o parâmetro de modo de publicação intervalo.
O exemplo a seguir mostra como configurar o parâmetro intervals
na linha de comando ou usando um arquivo de configuração yaml.
Usando parâmetros de linha de comando:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest --publishmode type=intervals interval=10s
Ao usar um arquivo de configuração yaml:
publishmode:
type : intervals
interval : 10s
tests:
-add : CreatePageTreeTest
Logs logging
O Dia Difícil 2 cria uma pasta de logs no mesmo diretório em que você executou o Dia Difícil 2. Esta pasta contém dois tipos de logs:
- toughday.log: contém mensagens relacionadas ao estado do aplicativo, informações de depuração e mensagens globais.
- toughday_<testname>.log: mensagens relacionadas ao teste especificado.
Os logs não são substituídos, as execuções subsequentes anexam mensagens aos logs existentes. Os logs têm vários níveis. Para obter mais informações, consulte o parâmetro loglevel..