艰难的第2天是一个应用程序,它允许您对AEM实例的限制进行压力测试。 它可以随默认测试套件一起运行,也可以配置为满足您的测试需求。 您可以观看此录制内容以了解应用程序的演示。
从Adobe库下载Tough Day 2的最新版本。 下载应用程序后,可以通过提供host
参数使应用程序开箱即用。 在以下示例中,AEM实例在本地运行,因此使用localhost
值:
java -jar toughday2.jar --host=localhost
添加参数后运行的默认套件名为toughday
。 它包含以下用例:
该套件包含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]
艰难的第2天没有清理步骤。 因此,建议在克隆的暂存实例上运行Tough Day 2,而不是在主生产实例上运行。 测试后应删除暂存实例。
艰难的第2天优惠了从命令行访问的各种帮助选项。 例如:
java -jar toughday2.jar --help_full
在下表中,您可以找到相关的帮助参数。
参数 | 描述 | 示例 |
--帮助 | 打印全局信息,例如:可用操作、预定义套件、运行模式和全局参数。 | |
—help_publish | 打印所有可用的发布者。 | |
—help_tests | 打印测试类及其说明。 | |
—help_full | 打印以上所有组件,以及测试、发布者和套件组件。 | |
—help —runmode/publishmode type=<Mode> | 列表有关指定运行或发布模式的信息。 | java -jar toughday2.jar —help —runmode type=constantload java -jar toughday2.jar —help —publishmode type=intervals |
—help —suite=<SuiteName> | 列表给定套件的所有测试及其各自的可配置属性。 | java -jar toughday2.jar —help —suite=get=tests |
—help —tag=<Tag> | 列表具有指定标记的所有项目。 |
java -jar toughday2.jar —help —tag=publish |
—help <TestClass/PublisherClass> | 列表给定测试或发布者的所有可配置属性。 |
java -jar toughday2.jar —help UploadPDFest java -jar toughday2.jar —help CSVPublisher |
Tough Day 2优惠设置或更改测试环境的全局参数。 这些包括目标主机、端口号、使用的协议、实例的用户和口令等。 例如:
java -jar toughday2.jar --host=host --protocol=https --port=4502 --duration=30m --dryrun=true
您可以在以下列表中找到相关参数:
参数 | 描述 | 默认值 | 可能的值 |
---|---|---|---|
--installsamplecontent=<Val> |
安装或跳过默认的Tough Day 2内容包。 | true | true或false |
--protocol=<Val> |
用于主机的协议。 | http | http或https |
--host=<Val> |
目标主机名或IP。 | ||
--port=<Val> |
主机的端口。 | 4502 | |
--user=<Val> |
实例的用户名。 | 管理员 | |
--password=<Val> |
给定用户的口令。 | 管理员 | |
--duration=<Val> |
测试的持续时间。 可以以(s)秒、(m)毫秒、(h)毫秒和(d)秒表示。 | 1d | |
--timeout=<Val> |
测试在中断并标记为失败之前将运行多长时间。 以秒表示。 | 180 | |
--suite=<Val> |
该值可以是预定义测试套件的一个或列表(以逗号分隔)。 | 强悍 | |
--configfile=<Val> |
目标yaml配置文件。 | ||
--contextpath=<Val> |
实例的上下文路径。 | ||
--loglevel=<Val> |
Tough Day 2引擎的日志级别。 | 信息 | 全部,调试,信息,警告,错误,致命,关闭 |
--dryrun=<Val> |
如果为true,则打印生成的配置并不运行任何测试。 | false | true或false |
可通过两种方式实现自定义:命令行参数或yaml配置文件。 配置文件通常用于大型自定义套件,它们将覆盖Tough Day 2默认参数。命令行参数将覆盖配置文件和默认参数。
保存测试配置的唯一方法是以yaml格式复制它。 有关其他详细信息,请参阅以下各节中的此toughday.yaml配置和yaml配置示例。
如果不想使用默认的toughday
套件,可以使用add
参数添加您选择的测试。 以下示例显示如何使用命令行参数或yaml配置文件添加CreateAssetTreeTest
测试。
使用命令行参数:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest
使用yaml配置文件:
globals:
host : localhost
tests:
- add : CreateAssetTreeTest
您也可以添加和运行同一测试的多个实例,但每个实例必须具有唯一的名称。 以下示例显示如何使用命令行参数或yaml配置文件添加同一测试的两个实例。
使用命令行参数:
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
如果需要更改一个或多个测试属性,可将该属性添加到命令行或yaml配置文件。 要查看所有可用的测试属性,请向命令行添加--help <TestClass/PublisherClass>
参数,例如:
java -jar toughday2.jar --help CreatePageTreeTest
请记住,yaml配置文件将覆盖Tough Day 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
以下示例演示如何将测试添加到预定义的套件以及如何从预定义的套件重新配置和排除现有测试。
可以使用add
参数将新测试添加到预定义套件,并指定目标预定义套件。
使用命令行参数:
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest
使用yaml配置文件:
globals:
host : localhost
suite : toughday
tests:
- add : CreatePageTreeTest
给定套件中的现有测试也可以使用config
* *参数进行重新配置。 请注意,还必须指定测试的套件名称和实际名称(而非测试类名称)。 可以在测试类的name
属性中找到测试名称。 有关如何查找测试属性的更多详细信息,请阅读更改测试属性部分。
在下面的示例中,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
参数从默认配置中删除预定义套件或发布者的测试。 请注意,还必须指定测试的套件名称和实际名称(不是测试C lass
名称)。 可以在测试类的name
属性中找到测试名称。 在以下示例中,CreatePageTreeTest
(名为UploadAsset
)测试从toughday套件中删除。
使用命令行参数:
java -jar toughday2.jar --host=localhost --suite=toughday --exclude UploadAsset
使用yaml配置文件:
globals:
host : localhost
suite : toughday
tests:
- exclude : UploadAsset
Tough Day 2可以在以下模式之一中运行:normal和恒定负载。
normal运行模式具有两个参数:
concurrency
-并发表示Tough Day 2为测试执行创建的线程数。在这些线程上,将执行测试,直到持续时间已用完或没有其他测试可执行。
waittime
-同一线程上两个连续测试执行之间的等待时间。该值必须以毫秒表示。
以下示例显示如何使用命令行添加参数:
java -jar toughday2.jar --host=localhost --add CreateAssetTreeTest --runmode=normal concurrency=20
或者使用yaml配置文件:
runmode:
type : normal
waittime : 300
concurrency : 200
恒定负载运行模式与正常运行模式不同,它生成了恒定数目的开始测试执行,而不是恒定数目的线程。 可以使用同名的运行模式参数来设置负载。
两种运行模式的测试选择过程相同,具体步骤如下:所有测试都具有weight
属性,该属性确定在线程中执行的可能性。 例如,如果我们有两个测试,一个权重为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
控制)。
干式运行会解析所有给定输入(命令行参数或配置文件),将其与默认值合并,然后输出结果。 它不执行任何测试。
java -jar toughday2.jar --host=localhost --suite=toughday --add CreatePageTreeTest --dryrun=true
Tough Day 2输出测试指标和日志。 有关更多详细信息,请阅读以下部分。
艰难的第2天目前报告9个可评估的测试指标。 *符号的度量仅在成功运行后才报告:
名称 | 描述 |
---|---|
时间戳 | 上次完成测试运行的时间戳。 |
已通过 | 成功运行的数量。 |
失败 | 失败的运行数。 |
最小(&A);ast; | 测试执行的最短持续时间。 |
Max* | 测试执行的最长时间。 |
中值* | 计算所有测试执行的中值持续时间。 |
Average* | 计算所有测试执行的平均持续时间。 |
StdDev* | 标准差。 |
90p* | 90百分点。 |
99p* | 99百分点。 |
99.9p* | 99.9百分点。 |
Real Throughput * | 运行数除以已用执行时间。 |
这些度量是在发布者的帮助下编写的,发布者可以添加add
参数(与添加测试类似)。 目前,有两个选项:
默认情况下,两个发布者均处于启用状态。
此外,还有两种报告度量的模式:
以下示例说明如何在命令行或使用yaml配置文件配置intervals
参数。
使用命令行参数:
java -jar toughday2.jar --host=localhost --add CreatePageTreeTest --publishmode type=intervals interval=10s
使用yaml配置文件:
publishmode:
type : intervals
interval : 10s
tests:
-add : CreatePageTreeTest
Tough Day 2在运行Tough Day 2的同一目录中创建一个日志文件夹。 此文件夹包含两种类型的日志:
日志不会被覆盖,后续运行会将消息追加到现有日志。 日志有多个级别,有关详细信息,请参阅 [loglevel parameter](/docs/experience-manager-64/sites-developing/tough-day.md#global-parameters)
。