Tough Day tough-day
タフデイ 2 について what-is-tough-day
「タフデイ 2」は、AEM インスタンスの限界についてストレステストを実行するためのアプリケーションです。デフォルトのテストスイートを使用して出荷時の設定のまま実行することも、テストのニーズに合わせて設定することもできます。このアプリケーションのプレゼンテーションについては、こちらの録画を参照してください。
Tough Day 2 の実行方法 how-to-run-tough-day
アドビのリポジトリから最新バージョンの Tough Day 2 をダウンロードします。アプリケーションをダウンロードしたら、host
パラメーターを指定することでアプリケーションをそのまま実行できます。次の例では、AEM インスタンスがローカルで実行されているので、値 localhost
が使用されています。
java -jar toughday2.jar --host=localhost
パラメーターを追加した後に実行されるデフォルトスイートの名前は toughday
です。以下のユースケースが含まれます。
- ページとそのページのライブコピーを作成(ロールアウトを含む)
- ホームページを取得
- QueryBuilder でクエリを実行
- アセット階層を作成
- アセットの削除
このスイートには、15 % の書き込みアクションと 85 % の読み取りアクションが含まれています。
スイートのテストを実行するために、Tough Day 2 によってデフォルトのコンテンツパッケージがインストールされます。この動作はinstallsamplecontent
パラメーターをfalse
に設定することで回避できます。ただし、実行するテストのデフォルトパスを変更することも必要になります。パラメーターを指定せずに jar を実行した場合は、Tough Day 2 でヘルプ情報が表示されます。
原則として、アプリケーションを使用するには、次のパターンに従います。
java -jar toughday2.jar [--help | --help_full | --help_tests | --help_publish] [<global arguments> | <actions> | --runmode | --publishmode]
ヘルプの表示 getting-help
タフデイ 2 には、コマンドラインからアクセスできる幅広いヘルプオプションが用意されています。例:
java -jar toughday2.jar --help_full
次の表に、関連するヘルプパラメーターを示します。
グローバルパラメーター global-parameters
タフデイ 2 では、テストの環境を設定または変更するグローバルパラメーターを提供します。これには、ターゲットとなるホスト、ポート番号、使用するプロトコル、インスタンスのユーザーとパスワードなどが含まれます。例:
java -jar toughday2.jar --host=host --protocol=https --port=4502 --duration=30m --dryrun=true
次のリストに、関連するパラメーターを表します。
--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>
カスタマイズ customizing
カスタマイズは、コマンドラインパラメーターと yaml 設定ファイルの 2 つの方法で実行できます。設定ファイルは大規模なカスタムスイートで使用され、タフデイ 2 のデフォルトパラメーターを上書きします。コマンドラインパラメーターは、設定ファイルとデフォルトのパラメーターの両方を上書きします。
テスト設定を保存するには、yaml 形式でコピーする方法しかありません。
新規テストの追加 adding-a-new-test
デフォルトの toughday
スイートを使用しない場合は、add
パラメーターを使用して任意のテストを追加できます。コマンドラインパラメーターまたは yaml 設定ファイルを使用して CreateAssetTreeTest
テストを追加する方法を以下の例に示します。
コマンドラインパラメーターを使用する場合:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest
yaml 設定ファイルを使用する場合:
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
同じテストの複数のインスタンスの追加 adding-multiple-instances-of-the-same-test
同じテストの複数のインスタンスを追加して実行することもできますが、各インスタンスに一意の名前を付ける必要があります。コマンドラインパラメーターまたは yaml 設定ファイルを使用して同じテストのインスタンスを 2 つ追加する方法を以下の例に示します。
コマンドラインパラメーターを使用する場合:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest name=FirstAssetTree --add CreateAssetTreeTest name=SecondAssetTree
yaml 設定ファイルを使用する場合:
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
properties:
name : FirstAssetTree
- add : CreateAssetTreeTest
properties:
name : SecondAssetTree
テストプロパティの変更 changing-the-test-properties
1 つまたは複数のテストプロパティを変更する必要がある場合は、そのプロパティをコマンドラインまたは yaml 設定ファイルに追加できます。使用可能なすべてのテストプロパティを表示するには、コマンドラインに --help <TestClass/PublisherClass>
パラメーターを追加してください。次に例を示します。
java -jar toughday2.jar --help CreatePageTreeTest
yaml 設定ファイルによってタフデイ 2 のデフォルトパラメーターが上書きされるので、コマンドラインパラメーターが設定ファイルとデフォルトの両方を上書きすることに注意が必要です。
コマンドラインパラメーターまたは yaml 設定ファイルを使用して CreatePageTreeTest
テストの template
プロパティを変更する方法を以下の例に示します。
コマンドラインパラメーターを使用する場合:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest template=/conf/toughday-templates/settings/wcm/templates/toughday-template
yaml 設定ファイルを使用する場合:
globals:
host : localhost
tests:
- add : CreatePageTreeTest
properties:
template : /conf/toughday-templates/settings/wcm/templates/toughday-template
定義済みのテストスイートの使用 working-with-predefined-test-suites
事前定義済みのスイートにテストを追加する方法、事前定義済みのスイートの既存のテストを再設定および除外する方法を以下の例に示します。
事前定義済みのスイートに新しいテストを追加するには、add
パラメーターを使用して、ターゲットとなる事前定義済みのスイートを指定します。
コマンドラインパラメーターを使用する場合:
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest
yaml 設定ファイルを使用する場合:
globals:
host : localhost
suite : toughday
tests:
- add : CreatePageTreeTest
また、特定のスイート内の既存のテストは、config
* *パラメーターを使用して再設定することもできます。スイート名と(テストクラス名ではなく)テストの実際の名前も指定します。テスト名は、テストクラスの name
プロパティで確認できます。テストプロパティの確認方法について詳しくは、テストプロパティの変更を参照してください。
以下の例では0、CreatePageTreeTest
のデフォルトのアセットタイトル(名前は UploadAsset
)を「NewAsset」に変更しています。
コマンドラインパラメーターを使用する場合:
java -jar toughday2.jar --host=localhost --suite=toughday --config UploadAsset title=NewAsset
yaml 設定ファイルを使用する場合:
globals:
host : localhost
suite : toughday
tests:
- config : UploadAsset
properties :
title : NewAsset
また、exclude
パラメーターを使用して、事前に定義されたスイートからテストを削除したり、デフォルト設定から発行者を削除したりすることもできます。スイート名と(Test C lass
名ではなく)テストの実際の名前も指定します。テスト名は、テストクラスの name
プロパティで確認できます。以下の例では、(UploadAsset
という名前の)CreatePageTreeTest
テストを toughday スイートから削除しています。
コマンドラインパラメーターを使用する場合:
java -jar toughday2.jar --host=localhost --suite=toughday --exclude UploadAsset
yaml 設定ファイルを使用する場合:
globals:
host : localhost
suite : toughday
tests:
- exclude : UploadAsset
実行モード run-modes
Tough Day 2 は、標準 モードと 定負荷 モードのいずれかで実行できます。
標準 実行モードには、次の 2 つのパラメーターがあります。
-
concurrency
- テストの実行のために Tough Day 2 によって作成されるスレッドの数を表します。これらのスレッドでは、実行時間が終了するか、実行するテストがなくなるまでテストが実行されます。 -
waittime
- 同じスレッド上の連続した 2 つのテスト実行の間の待機時間。値はミリ秒単位で表記する必要があります。
次の例に、コマンドライン、
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest --runmode=normal concurrency=20
または yaml 設定ファイルを使用してパラメーターを追加する方法を示します。
runmode:
type : normal
waittime : 300
concurrency : 200
定負荷 実行モードは、通常実行モードとは異なり、一定数のスレッドではなく一定数の開始されたテスト実行を生成します。同じ名前の実行モードパラメーターを使用して負荷を設定できます。
テストの選択 test-selection
テストの選択プロセスはどちらの実行モードでも同じで、次のように進みます。すべてのテストには weight
プロパティがあり、これによって、スレッドでの実行の可能性が決定します。例えば、テストが 2 つあり、一方の重み付けを 5、もう一方の重み付けを 10 とした場合、後者が実行される可能性は前者の 2 倍になります。
さらに、テストには count
プロパティを指定できます。これにより、実行回数が指定の数に制限されます。この回数に達すると、それ以上テストは実行されません。既に実行中のすべてのテストインスタンスは、設定どおりに実行を終了します。次の例に、コマンドラインに対して、または yaml 設定ファイルを使用して、これらのパラメーターを追加する方法を示します。
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest weight=5 --add CreatePageTreeTest weight=10 count=100 --runmode=normal concurrency=20
または
- add : CreateAssetTreeTest
properties :
name : UploadAsset
weight : 5
base : 3
foldertitle : IAmAFolder
assettitle : IAmAnAsset
count : 100
count
パラメーターで設定された数と正確に一致しません。偏差が(concurrency parameter
パラメーターによって制御される)実行スレッドの数に比例することを想定してください。ドライラン dry-run
ドライランでは、指定されたすべての入力(コマンドラインパラメーターまたは設定ファイル)を解析し、デフォルト値と統合して、結果を出力します。テストは一切実行されません。
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest --dryrun=true
出力 output
Tough Day 2 は、テスト指標とログの両方を出力します。詳しくは、次の節を参照してください。
テスト指標 test-metrics
Tough Day 2 では現在、評価できる 9 つのテスト指標がレポートされます。* 記号が付いた指標は、実行に成功した後にのみ報告されます。
これらの指標は、(テストの追加と同様に)add
パラメーターを使用して追加できる公開者を利用して記述されています。現在、次の 2 つのオプションがあります。
- CSVPublisher - CSV ファイルを出力します。
- ConsolePublisher - 出力はコンソールに表示されます。
デフォルトでは、両方の公開者が有効になっています。
さらに、指標の報告には次の 2 つのモードがあります。
- simple パブリッシュモード - 実行の開始から公開時点までの結果が報告されます。
- intervals パブリッシュモード - 特定の期間内の結果が報告されます。期間は、interval パブリッシュモード/パラメーターを使用して設定することができます。
次の例は、コマンドラインまたは yaml 設定ファイルを使用して intervals
パラメーターを設定する方法を示しています。
コマンドラインパラメーターを使用する場合:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest --publishmode type=intervals interval=10s
yaml 設定ファイルを使用する場合:
publishmode:
type : intervals
interval : 10s
tests:
-add : CreatePageTreeTest
ログ logging
Tough Day 2 では、Tough Day 2 を実行したディレクトリにログフォルダーが作成されます。このフォルダーには次の 2 種類のログが含まれます。
- toughday.log:アプリケーションの状態、デバッグ情報およびグローバルメッセージに関連するメッセージが含まれます。
- toughday_<testname>.log:指定したテストに関連するメッセージ。
ログは上書きされません。その後の実行では、既存のログにメッセージが追加されます。ログには複数のレベルがあります。詳しくは、loglevel パラメーターを参照してください。