# Zeebe Cluster Testbench
Test bench to run tests against a Zeebe cluster.
Available Documentation
- [Developer handbook](docs/developer-handbook.md)
- [Release Process](docs/release-process.md)
- [Operator handbook](docs/operator-handbook.md)
- [Technical documentation](docs/technical-documentation.md)
- [Service Task Reference](docs/service-tasks.md)
## User Guide
This document describes the different processes that are deployed as part of this project. These processes can either be launched directly - for ad hoc test runs - or they are launched by Zeebe as part of one of the periodic test protocols (e.g _Daily Test_).
This document also contains a list of the available workers. Users are encouraged to use these workers and define and deploy additional processes based on these building blocks.
### Onion Principle
This document will be easier to understand by learning first about the "onion principle":
![Onion principle](./docs/assets/onion_principle.png)
This document (and this project) define processes at different levels of detail:
- Test - this is the smallest level of detail. A test process performs a given test routine. It assumes that the test environment is already set up for the test, and will be cleaned up afterwards. Thus, it can focus entirely on executing a particular test
- Test Process - this is the next level of detail. This layer is responsible for:
- Spawning different variations for a test, if needed (e.g. run a test in different cluster plans; run the same test with different parameters)
- Preparing the test environment for the test
- Calling the test process
- Recording test results, sending out notifications in case of test failures
- Cleaning up the test environment after the test
- Test Protocol - this is the outermost layer. This is comparable to a test suite. Some protocols (e.g. _Daily test_) also include the schedule for running tests.
The purpose of the layering is to have reusable building blocks and separation of concerns between layers.
The different layers work well together, but can also be called directly. E.g. instead of having the testbench generate a cluster, a user could create a cluster by hand and then call a given test with the needed authentication details for that cluster.
### Tests
#### Sequential Test
In the sequential test a sequential process is executed several times in succession. There is at most one active process instance at any given time. In other words, there is no parallelism - neither inside the process being tested nor in the test driver that starts process instances.
A sequential test has the following parameters:
- _steps_ - number of steps within the process
- _iterations_ - number of times the process shall be executed
- _maxTimeForIteration_ - the maximum duration for one iteration
- _maxTimeForCompleteTest_ - the maximum time for the entire test
This test will fail, if any of the following conditions occur:
- there is an exception during test execution
- a single iteration takes longer than _maxTimeForIteration_
- all iterations take longer than _maxTimeForCompleteTest_
In case of backpressure the iteration will be repeated. The time spent making requests that return backpressure responses and repeating those requests is included in the overall execution time, which must be smaller than _maxTimeForCompleteTest_ for the test to pass.
##### Sequential Test Process
This process runs the sequential test in a given cluster in Camunda Cloud:
![sequential-test](docs/assets/sequential-test.png "Sequential Test process")
**Process ID:** `sequential-test`
| Inputs | Description | Type |
| ----------------------- | ----------------------------------------------- | ---------------------------------- |
| `testParams` | Settings to parameterize the sequential test | `SequentialTestParameters` |
| `authenticationDetails` | Credentials to authenticate against the cluster | `CamundaCloudAutenticationDetails` |
| Outputs | Description | Type |
| ------------ | ----------- | ------------ |
| `testReport` | test report | `TestReport` |
| `testResult` | test result | `TestResult` |
#### Chaos Test
This test runs a repertoire of [chaos experiments](https://github.com/zeebe-io/zeebe-chaos) against a given cluster. Different experiments run in sequence.
The set of experiemnts to run depends on the cluster plan.
See [inventoriy](https://github.com/zeebe-io/zeebe-chaos/blob/master/inventory.md) for more information on the available tests.
##### Chaos Test Process
This process runs the chaos test in a given cluster in Camunda Cloud:
![chaos-test](docs/assets/chaos-test.png "Chaos Test process")
**Process ID:** `chaos-test`
| Inputs | Description | Type |
| ----------------------- | ------------------------------------------------------------------------------------- | ---------------------------------- |
| `clusterPlan` | name of the cluster plan for the cluster; used to differentiate the chaos experiments | `String` |
| `testParams` | Settings to parameterize the chaos test | tbd |
| `authenticationDetails` | Credentials to authenticate against the cluster | `CamundaCloudAutenticationDetails` |
| Outputs | Description | Type |
| ------------ | ----------- | ------------ |
| `testReport` | test report | `TestReport` |
| `testResult` | test result | `TestResult` |
### Test Processes
The testbench deploys several processes to orchestrate the test execution. The work flows reference each other - a higher level process will call a lower level process.
However, lower level processes can also be called directly if only a certain test execution is wanted.
#### Run All Tests in Camunda Cloud per Cluster Plan
This process runs all tests in a fresh cluster in Camunda Cloud in different cluster plans:
![run-all-tests-in-camunda-cloud-per-clusterplan process](docs/assets/run-all-tests-in-camunda-cloud-per-clusterplan.png "Run all Tests in Camunda Cloud process")
**Process ID:** `run-all-tests-in-camunda-cloud-per-cluster-plan`
| Inputs | Description | Type |
| ---------------------- | -------------------------------------------- | -------------------------- |
| `generation` | name of the generation for the cluster | `String` |
| `clusterPlans` | names of the cluster plans for the clusters | `List<String>` |
| `channel` | name of the channel for the cluster | `String` |
| `region` | name of the region for the cluster | `String` |
| `sequentialTestParams` | Settings to parameterize the sequential test | `SequentialTestParameters` |
| Outputs | Description | Type |
| ---------------------- | ------------------------------------------------ | ------------ |
| `aggregatedTestResult` | Aggregated test result for all tests/experiments | `TestResult` |
#### Run All Tests in Camunda Cloud per Region
This process runs all tests in a fresh cluster in Camunda Cloud in different regions:
![run-all-tests-in-camunda-cloud-per-region process](docs/assets/run-all-tests-in-camunda-cloud-per-region.png "Run all Tests in Camunda Cloud per Region process")
**Process ID:** `run-all-tests-in-camunda-cloud-per-region`
| Inputs | Description | Type |
| ---------------------- | -------------------------------------------- | --------------------------
没有合适的资源?快使用搜索试试~ 我知道了~
zeebe-cluster-testbench:测试平台针对Zeebe集群运行测试
共167个文件
java:81个
bpmn:15个
sh:14个
需积分: 9 2 下载量 171 浏览量
2021-04-09
22:59:29
上传
评论
收藏 827KB ZIP 举报
温馨提示
Zeebe群集测试台 测试平台,可对Zeebe集群进行测试。 可用文件 用户指南 本文档描述了作为该项目的一部分部署的不同过程。 这些过程既可以直接启动(用于临时测试运行),也可以由Zeebe作为定期测试协议之一(例如Daily Test )的一部分启动。 该文档还包含可用工人的列表。 鼓励用户使用这些工作程序,并根据这些构建基块定义和部署其他流程。 洋葱原理 通过首先学习“洋葱原理”,将更容易理解该文档: 本文档(和该项目)在不同的详细级别上定义了流程: 测试-这是最低的详细程度。 测试过程执行给定的测试例程。 假定已经为测试设置了测试环境,然后将其清理。 因此,它可以完全专注于执行特定的测试 测试过程-这是下一级别的细节。 该层负责: 如果需要,为测试生成不同的变体(例如,在不同的集群计划中运行测试;使用不同的参数运行相同的测试) 为测试准备测试环境 调用测试过程 记录测试
资源推荐
资源详情
资源评论
收起资源包目录
zeebe-cluster-testbench:测试平台针对Zeebe集群运行测试 (167个子文件)
daily-test-protocol.bpmn 14KB
run-all-tests-in-camunda-cloud.bpmn 11KB
run-test-in-camunda-cloud.bpmn 10KB
prepare-zeebe-cluster-in-camunda-cloud.bpmn 8KB
qa-protocol.bpmn 7KB
warmup.bpmn 7KB
clean-up-generation.bpmn 7KB
external-tool-integration.bpmn 6KB
analyse-cluster.bpmn 5KB
run-all-tests-in-camunda-cloud-per-cluster-plan.bpmn 4KB
run-all-tests-in-camunda-cloud-per-region.bpmn 4KB
chaos-test.bpmn 2KB
main.bpmn 2KB
sequential-test.bpmn 2KB
secondary.bpmn 2KB
Dockerfile 1KB
Dockerfile 206B
.editorconfig 225B
.gitignore 392B
.gitignore 61B
.gitignore 12B
Launcher.java 14KB
CreateGenerationInCamundaCloudHandlerTest.java 11KB
ExceptionFilterBuilderTest.java 9KB
AggregateTestResultHandlerTest.java 8KB
MapNamesToUUIDsHandler.java 8KB
SequentialTestDriver.java 7KB
RecordTestResultHandler.java 7KB
CheckGenerationUsageHandlerTest.java 6KB
CreateGenerationInCamundaCloudHandler.java 6KB
CreateClusterInCamundaCloudHandler.java 5KB
TriggerMessageStartEventHandlerTest.java 5KB
BootstrapFromEnvVars.java 4KB
TestTimingContextTest.java 4KB
NotifyEngineersHandler.java 4KB
AggregateTestResultHandler.java 4KB
WarmUpClusterHandler.java 4KB
StringLookupTest.java 4KB
TriggerMessageStartEventHandlerIT.java 4KB
NotifyEngineersHandlerTest.java 4KB
DeleteGenerationInCamundaCloudHandlerTest.java 4KB
StubInternalCloudAPIClient.java 4KB
OAuthInterceptor.java 3KB
OAuthUserAccountTokenRequest.java 3KB
StringLookup.java 3KB
RecordTestResultHandlerTest.java 3KB
OAuthCredentials.java 3KB
SequentialTestHandler.java 3KB
ClusterInfo.java 2KB
CloudAPIClient.java 2KB
OAuthServiceAccountTokenRequest.java 2KB
ExceptionFilterBuilder.java 2KB
QueryClusterStateInCamundaCloudHandler.java 2KB
TestTimingContext.java 2KB
SequentialTestParameters.java 2KB
TriggerMessageStartEventHandler.java 2KB
CamundaCLoudAuthenticationDetailsImpl.java 2KB
TestReportImpl.java 2KB
CheckGenerationUsageHandler.java 2KB
TestReportDTO.java 2KB
ChannelInfo.java 2KB
ZeebeClientConnectiontInfo.java 2KB
ClusterMetadata.java 2KB
ProcessDeployer.java 1KB
ClusterStatus.java 1KB
OAuthUserAccountAuthenticationDetails.java 1KB
InternalCloudAPIClient.java 1KB
GatherInformationAboutClusterInCamundaCloudHandler.java 1KB
OAuthCredentialsTest.java 1KB
UpdateChannelRequest.java 1KB
InternalCloudAPIClientFactory.java 1KB
CreateClusterRequest.java 1KB
CloudAPIClientFactory.java 1KB
ParametersResponse.java 1KB
DeleteGenerationInCamundaCloudHandler.java 1KB
ClientConnectiontInfoTest.java 1KB
BadRequestResponseFilter.java 1KB
ZeebeClientInfo.java 1KB
OAuthServiceAccountAuthenticationDetails.java 1KB
DeleteClusterInCamundaCloudHandler.java 1003B
K8sContextInfo.java 997B
ClusterPlanTypeInfo.java 993B
RegionInfo.java 989B
RandomNameGenerator.java 978B
SlackNotificationService.java 929B
CreateGenerationRequest.java 921B
TestReportTest.java 889B
OAuthTokenRequestTest.java 887B
SequentialTestParametersTest.java 865B
GenerationInfo.java 850B
TestReport.java 825B
DurationDeserializer.java 788B
DurationSerializer.java 724B
CreateZeebeClientResponse.java 716B
OAuthClientFactory.java 691B
CreateZeebeClientRequest.java 612B
CreateClusterResponse.java 487B
OAuthClient.java 480B
NotificationService.java 359B
DummyIT.java 342B
共 167 条
- 1
- 2
资源评论
刘怒威
- 粉丝: 26
- 资源: 4651
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Screenshot_2024-05-21-17-06-42-64_2332cb9b27b851b548ba47a91682926c.jpg
- 毕业设计参考 - 基于树莓派、OpenCV及Python的人脸识别
- node-v18.20.2-linux-arm64
- 222222222222
- 16张相机标定图片,可复现本文畸变矫正
- dbeaver-ce-23.3.1-x86_64-setup.zip
- 基于X86 AVX2指令的快速卷积实现
- VMware-ESXi-7.0U3n-21930508-depot.zip文件
- MySQL 在 Windows 系统下的安装教程.zip
- Access文件数据库访问的客户端
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功