├── diagrams
└── EI_Performance_Deployment.jpg
├── components
└── perftest-capp
│ ├── src
│ └── main
│ │ └── capp
│ │ ├── EchoProxy
│ │ ├── artifact.xml
│ │ └── EchoApi-1.0.0.xml
│ │ ├── DirectAPI_1.0.0
│ │ ├── artifact.xml
│ │ └── DirectAPI-1.0.0.xml
│ │ ├── CBRProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── CBRProxy-1.0.0.xml
│ │ ├── DMPerfTest_1.0.0
│ │ ├── artifact.xml
│ │ ├── registry-info.xml
│ │ └── resources
│ │ │ └── DMPerfTest.dmc
│ │ ├── XSLTProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── XSLTProxy-1.0.0.xml
│ │ ├── RealService_1.0.0
│ │ ├── artifact.xml
│ │ └── RealService-1.0.0.xml
│ │ ├── proxy_wsdl_1.0.0
│ │ └── artifact.xml
│ │ ├── DirectProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── DirectProxy-1.0.0.xml
│ │ ├── SecureProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── SecureProxy-1.0.0.xml
│ │ ├── XSLT_Datatransform_1.0.0
│ │ ├── artifact.xml
│ │ ├── registry-info.xml
│ │ └── resources
│ │ │ └── XSLT_Datatransform.xslt
│ │ ├── xslt_transform_1.0.0
│ │ ├── artifact.xml
│ │ └── xslt_transform-1.0.0.xml
│ │ ├── DMPerfTest_inputSchema_1.0.0
│ │ ├── artifact.xml
│ │ ├── registry-info.xml
│ │ └── resources
│ │ │ └── DMPerfTest_inputSchema.json
│ │ ├── DatamapperProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── DatamapperProxy-1.0.0.xml
│ │ ├── JsonToSOAPProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── JsonToSOAPProxy-1.0.0.xml
│ │ ├── security_policy_1.0.0
│ │ ├── artifact.xml
│ │ └── security_policy-1.0.0.xml
│ │ ├── DMPerfTest_outputSchema_1.0.0
│ │ ├── artifact.xml
│ │ ├── registry-info.xml
│ │ └── resources
│ │ │ └── DMPerfTest_outputSchema.json
│ │ ├── XSLTEnhancedProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── XSLTEnhancedProxy-1.0.0.xml
│ │ ├── fastxslt_transform_1.0.0
│ │ ├── artifact.xml
│ │ └── fastxslt_transform-1.0.0.xml
│ │ ├── CBRSOAPHeaderProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── CBRSOAPHeaderProxy-1.0.0.xml
│ │ ├── DMPerfTest_xsltStyleSheet_1.0.0
│ │ ├── artifact.xml
│ │ ├── registry-info.xml
│ │ └── resources
│ │ │ └── DMPerfTest_xsltStyleSheet.xml
│ │ ├── XSLTTransformProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── XSLTTransformProxy-1.0.0.xml
│ │ ├── MessageBuildingProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── MessageBuildingProxy-1.0.0.xml
│ │ ├── xslt_transform_reverse_1.0.0
│ │ ├── artifact.xml
│ │ └── xslt_transform_reverse-1.0.0.xml
│ │ ├── CBRTransportHeaderProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── CBRTransportHeaderProxy-1.0.0.xml
│ │ ├── EnrichBackAndForthProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── EnrichBackAndForthProxy-1.0.0.xml
│ │ ├── IterateAndAggregateProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── IterateAndAggregateProxy-1.0.0.xml
│ │ ├── fastxslt_transform_reverse_1.0.0
│ │ ├── artifact.xml
│ │ └── fastxslt_transform_reverse-1.0.0.xml
│ │ ├── PayloadFactoryWith100ElementsProxy_1.0.0
│ │ └── artifact.xml
│ │ ├── PayloadFactoryWith20ElementsProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── PayloadFactoryWith20ElementsProxy-1.0.0.xml
│ │ ├── PayloadFactoryWith50ElementsProxy_1.0.0
│ │ └── artifact.xml
│ │ ├── CloneAndAggregateWithFourBackendProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── CloneAndAggregateWithFourBackendProxy-1.0.0.xml
│ │ ├── CloneAndAggregateWithTwoBackendProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── CloneAndAggregateWithTwoBackendProxy-1.0.0.xml
│ │ ├── CloneAndAggregateWithEightBackendProxy_1.0.0
│ │ ├── artifact.xml
│ │ └── CloneAndAggregateWithEightBackendProxy-1.0.0.xml
│ │ └── artifacts.xml
│ ├── build.xml
│ └── pom.xml
├── .github
└── CODEOWNERS
├── .gitignore
├── distribution
├── scripts
│ ├── jmeter
│ │ ├── requests
│ │ │ ├── 500B_buyStocks.xml
│ │ │ ├── payload-creator-script
│ │ │ │ ├── README.md
│ │ │ │ ├── payload-creator-with-iterations
│ │ │ │ ├── payload-creator-json
│ │ │ │ └── payload-creator
│ │ │ ├── 5Elements_buyStocks.xml
│ │ │ ├── 500B_JSONPayload.json
│ │ │ ├── 1000B_buyStocks.xml
│ │ │ ├── 10Elements_buyStocks.xml
│ │ │ ├── 1000B_JSONPayload.json
│ │ │ ├── 20Elements_buyStocks.xml
│ │ │ ├── 50Elements_buyStocks.xml
│ │ │ └── 100Elements_buyStocks.xml
│ │ ├── run-ei-performance-tests.sh
│ │ ├── run-mi-docker-performance-tests.sh
│ │ ├── templates
│ │ │ └── summary.md
│ │ ├── ei-test-json.jmx
│ │ ├── ei-test-without-soap.jmx
│ │ ├── ei-test.jmx
│ │ └── performance-test-scenarios.sh
│ ├── ei
│ │ ├── mi-docker-stop.sh
│ │ ├── mi-start.sh
│ │ ├── ei-start.sh
│ │ └── mi-docker-start.sh
│ ├── setup
│ │ ├── setup-mi-docker.sh
│ │ ├── setup-mi.sh
│ │ └── setup-ei.sh
│ └── cloudformation
│ │ ├── templates
│ │ ├── mi_docker_perf_test_cfn.yaml
│ │ ├── mi_perf_test_cfn.yaml
│ │ └── ei_perf_test_cfn.yaml
│ │ ├── run-mi-docker-performance-tests.sh
│ │ ├── run-ei-performance-tests.sh
│ │ └── run-mi-performance-tests.sh
├── bin.xml
└── pom.xml
├── issue_template.md
├── pull_request_template.md
├── pom.xml
└── README.md
/diagrams/EI_Performance_Deployment.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wso2/performance-ei/HEAD/diagrams/EI_Performance_Deployment.jpg
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/EchoProxy/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | EchoApi-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DirectAPI_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | DirectAPI-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CBRProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | CBRProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | registry-info.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/XSLTProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | XSLTProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/RealService_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | RealService-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/proxy_wsdl_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | proxy_wsdl-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DirectProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | DirectProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/SecureProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | SecureProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/XSLT_Datatransform_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | registry-info.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/xslt_transform_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | xslt_transform-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_inputSchema_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | registry-info.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DatamapperProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | DatamapperProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/JsonToSOAPProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | JsonToSOAPProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/security_policy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | security_policy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # Lines starting with '#' are comments.
2 | # Each line is a file pattern followed by one or more owners.
3 |
4 | # See: https://help.github.com/articles/about-codeowners/
5 |
6 | # These owners will be the default owners for everything in the repo.
7 | * @arunans23
8 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_outputSchema_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | registry-info.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/XSLTEnhancedProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | XSLTEnhancedProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/XSLT_Datatransform_1.0.0/registry-info.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 | XSLT_Datatransform.xslt
4 | /_system/config
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/fastxslt_transform_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | fastxslt_transform-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CBRSOAPHeaderProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | CBRSOAPHeaderProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_xsltStyleSheet_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | registry-info.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/XSLTTransformProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | XSLTTransformProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/MessageBuildingProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | MessageBuildingProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/xslt_transform_reverse_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | xslt_transform_reverse-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CBRTransportHeaderProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | CBRTransportHeaderProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_1.0.0/registry-info.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 | DMPerfTest.dmc
4 | /_system/governance/datamapper
5 | text/plain
6 |
7 |
8 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/EnrichBackAndForthProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | EnrichBackAndForthProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/IterateAndAggregateProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | IterateAndAggregateProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/fastxslt_transform_reverse_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | fastxslt_transform_reverse-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_inputSchema_1.0.0/registry-info.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 | DMPerfTest_inputSchema.json
4 | /_system/governance/datamapper
5 | text/plain
6 |
7 |
8 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_outputSchema_1.0.0/registry-info.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 | DMPerfTest_outputSchema.json
4 | /_system/governance/datamapper
5 | text/plain
6 |
7 |
8 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_xsltStyleSheet_1.0.0/registry-info.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 | DMPerfTest_xsltStyleSheet.xml
4 | /_system/governance/datamapper
5 | text/plain
6 |
7 |
8 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/PayloadFactoryWith100ElementsProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | PayloadFactoryWith100ElementsProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/PayloadFactoryWith20ElementsProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | PayloadFactoryWith20ElementsProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/PayloadFactoryWith50ElementsProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | PayloadFactoryWith50ElementsProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CloneAndAggregateWithFourBackendProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | CloneAndAggregateWithFourBackendProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CloneAndAggregateWithTwoBackendProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | CloneAndAggregateWithTwoBackendProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CloneAndAggregateWithEightBackendProxy_1.0.0/artifact.xml:
--------------------------------------------------------------------------------
1 |
2 | CloneAndAggregateWithEightBackendProxy-1.0.0.xml
3 |
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Log file
2 | *.log
3 |
4 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
5 | hs_err_pid*
6 |
7 | #Idea files
8 | .idea
9 | *.iml
10 |
11 | # Maven Target
12 | target
13 |
14 | # Generated POM
15 | dependency-reduced-pom.xml
16 |
17 | # Logs
18 | logs
19 |
20 | # Python Cache
21 | __pycache__
22 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DirectAPI_1.0.0/DirectAPI-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/500B_buyStocks.xml:
--------------------------------------------------------------------------------
1 |
2 | xadmin;server1;community#1.0##
3 |
4 | SUNindika14.56500
5 | MSFTdoe23.568030
6 |
7 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/XSLTTransformProxy_1.0.0/XSLTTransformProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/payload-creator-script/README.md:
--------------------------------------------------------------------------------
1 | # Execution
2 |
3 | ./payload-creator {size_In_Bytes}
4 |
5 | eg: ./payload-creator 512
6 |
7 | Output:
8 |
9 | Creating file ...
10 | File Name : 512B_buyStocks.xml
11 | Size requested : 512 bytes
12 | Size created : 499 bytes
13 | Difference : 13 bytes
14 |
15 |
16 | ./payload-creator-with-iterations {no._of_iterations}
17 |
18 | eg: ./payload-creator-with-iterations 12
19 |
20 | Creating file ...
21 | File Name : 12Elements_buyStocks.xml
22 | No. of elements : 12
23 |
24 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/5Elements_buyStocks.xml:
--------------------------------------------------------------------------------
1 |
2 | IBMjohn140.345
3 | IBMjohn140.344
4 | IBMjohn140.343
5 | IBMjohn140.342
6 | IBMjohn140.341
7 |
8 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/500B_JSONPayload.json:
--------------------------------------------------------------------------------
1 | {
2 | "payload": {
3 | "symbol": [
4 | "json",
5 | "json",
6 | "json",
7 | "json",
8 | "json",
9 | "json",
10 | "json",
11 | "json",
12 | "json",
13 | "json",
14 | "json",
15 | "json",
16 | "json",
17 | "json",
18 | "json",
19 | "json",
20 | "json",
21 | "json",
22 | "json",
23 | "json",
24 | "json",
25 | "json"
26 | ]
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/XSLT_Datatransform_1.0.0/resources/XSLT_Datatransform.xslt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | XYZdoe23.568030
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DatamapperProxy_1.0.0/DatamapperProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/MessageBuildingProxy_1.0.0/MessageBuildingProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | $1
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/issue_template.md:
--------------------------------------------------------------------------------
1 | **Description:**
2 |
3 |
4 | **Suggested Labels:**
5 |
6 |
7 | **Suggested Assignees:**
8 |
9 |
10 | **Affected Product Version:**
11 |
12 | **OS, DB, other environment details and versions:**
13 |
14 | **Steps to reproduce:**
15 |
16 |
17 | **Related Issues:**
18 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/payload-creator-script/payload-creator-with-iterations:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 |
4 | writeHead(){
5 | echo "" > $1
6 | }
7 |
8 | writeTail() {
9 | echo "" >> $1
10 | }
11 |
12 | writeIBM(){
13 | echo "IBMjohn140.34$2" >> $1
14 | }
15 |
16 | #################### START ###########################
17 |
18 | iterations=$1
19 | file_name=$1Elements_buyStocks.xml
20 |
21 | echo "Creating file ..."
22 |
23 | writeHead "$file_name"
24 |
25 | loop=$iterations
26 |
27 | while [ "$loop" != "0" ]
28 | do
29 | writeIBM "$file_name" "$loop"
30 | loop=`expr $loop - 1`
31 | done
32 |
33 | writeTail "$file_name"
34 |
35 | echo "File Name : $file_name"
36 | echo "No. of elements : $iterations"
37 |
38 | #################### END ###########################
39 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/1000B_buyStocks.xml:
--------------------------------------------------------------------------------
1 |
2 | xadmin;server1;community#1.0##
3 |
4 | Nn1.01
5 | SUNindika14.56500
6 | MSFTdoe23.568030
7 | IBMjohn140.342000
8 | Nn1.01
9 | SUNindika14.56500
10 | MSFTdoe23.568030
11 |
12 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/EchoProxy/EchoApi-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/EnrichBackAndForthProxy_1.0.0/EnrichBackAndForthProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | world
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/10Elements_buyStocks.xml:
--------------------------------------------------------------------------------
1 |
2 | IBMjohn140.3410
3 | IBMjohn140.349
4 | IBMjohn140.348
5 | IBMjohn140.347
6 | IBMjohn140.346
7 | IBMjohn140.345
8 | IBMjohn140.344
9 | IBMjohn140.343
10 | IBMjohn140.342
11 | IBMjohn140.341
12 |
13 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CloneAndAggregateWithTwoBackendProxy_1.0.0/CloneAndAggregateWithTwoBackendProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/distribution/scripts/ei/mi-docker-stop.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright 2019 WSO2 Inc. (http://wso2.org)
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | # ----------------------------------------------------------------------------
17 | # Stop WSO2 Enterprise Micro Integrator
18 | # ----------------------------------------------------------------------------
19 | container_id=$(docker ps -f name=microei -q -a)
20 | if [[ -n "$container_id" ]]; then
21 | echo "Stopping docker container: $container_id"
22 | docker stop ${container_id}
23 | echo "Removing docker container: $container_id"
24 | docker rm ${container_id}
25 | fi
26 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DirectProxy_1.0.0/DirectProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/JsonToSOAPProxy_1.0.0/JsonToSOAPProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | $1
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CloneAndAggregateWithFourBackendProxy_1.0.0/CloneAndAggregateWithFourBackendProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/1000B_JSONPayload.json:
--------------------------------------------------------------------------------
1 | {
2 | "payload": {
3 | "symbol": [
4 | "json",
5 | "json",
6 | "json",
7 | "json",
8 | "json",
9 | "json",
10 | "json",
11 | "json",
12 | "json",
13 | "json",
14 | "json",
15 | "json",
16 | "json",
17 | "json",
18 | "json",
19 | "json",
20 | "json",
21 | "json",
22 | "json",
23 | "json",
24 | "json",
25 | "json",
26 | "json",
27 | "json",
28 | "json",
29 | "json",
30 | "json",
31 | "json",
32 | "json",
33 | "json",
34 | "json",
35 | "json",
36 | "json",
37 | "json",
38 | "json",
39 | "json",
40 | "json",
41 | "json",
42 | "json",
43 | "json",
44 | "json",
45 | "json",
46 | "json",
47 | "json",
48 | "json",
49 | "json",
50 | "json"
51 | ]
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/IterateAndAggregateProxy_1.0.0/IterateAndAggregateProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/XSLTProxy_1.0.0/XSLTProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/components/perftest-capp/build.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/XSLTEnhancedProxy_1.0.0/XSLTEnhancedProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/RealService_1.0.0/RealService-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 | 30000
21 | fault
22 |
23 |
24 | -1
25 | 1.0
26 |
27 |
28 | -1
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_xsltStyleSheet_1.0.0/resources/DMPerfTest_xsltStyleSheet.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CloneAndAggregateWithEightBackendProxy_1.0.0/CloneAndAggregateWithEightBackendProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/SecureProxy_1.0.0/SecureProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/payload-creator-script/payload-creator-json:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # 59 bytes
4 | writeHead(){
5 | echo "{
6 | \"payload\": {
7 | \"symbol\": [
8 | \"json\"," > $1
9 | }
10 |
11 | # 96-59 bytes
12 | writeTail() {
13 | echo " \"json\"
14 | ]
15 | }
16 | }" >> $1
17 | }
18 |
19 | # 20 bytes
20 | writeJSON(){
21 | echo " \"json\"," >> $1
22 | }
23 |
24 |
25 | writeSymbol(){
26 |
27 | writeJSON "$2"
28 | accumulatedSize=`expr $accumulatedSize + $JSON`
29 | }
30 |
31 | #################### START ###########################
32 |
33 | size=$1
34 | file_name=$1B_JSONPayload.json
35 | headAndTail=96
36 | JSON=20
37 | minPayloadSymbolSize=20 ## Avg size
38 | reamainingSize=`expr $size - $headAndTail`
39 | minPayloadSize=`expr $minPayloadSymbolSize + $headAndTail`
40 | accumulatedSize=$headAndTail
41 |
42 | if [[ "$reamainingSize" -lt "$minPayloadSymbolSize" ]]; then
43 | echo "Provided size is less than minimum payload size $minPayloadSize bytes"
44 | exit 0
45 | fi
46 |
47 | symbol_repetition=`expr $reamainingSize / $minPayloadSymbolSize`
48 |
49 | echo "Creating file ..."
50 |
51 | writeHead "$file_name"
52 |
53 | while [ "$symbol_repetition" != "0" ]
54 | do
55 | writeSymbol "$symbol_repetition" "$file_name"
56 | symbol_repetition=`expr $symbol_repetition - 1`
57 | done
58 |
59 | writeTail "$file_name"
60 |
61 | mv $file_name ../$file_name
62 |
63 | echo "File Name : $file_name"
64 | echo "Size requested : $size bytes"
65 | echo "Size created : $accumulatedSize bytes"
66 | echo "Difference : `expr $size - $accumulatedSize` bytes"
67 |
68 | #################### END ###########################
69 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_1.0.0/resources/DMPerfTest.dmc:
--------------------------------------------------------------------------------
1 | map_S_Envelope_S_Envelope = function(){
2 | var outputsoapenv_Envelope={};
3 |
4 | var count_i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d = 0;
5 | outputsoapenv_Envelope = {};
6 | outputsoapenv_Envelope.soapenv_Header = {};
7 | outputsoapenv_Envelope.soapenv_Header.routing = {};
8 | outputsoapenv_Envelope.soapenv_Header.routing.content = inputsoapenv_Envelope.soapenv_Header.routing.content;
9 | outputsoapenv_Envelope.soapenv_Body = {};
10 | outputsoapenv_Envelope.soapenv_Body.m_buyStocks = {};
11 | outputsoapenv_Envelope.soapenv_Body.m_buyStocks.order = [];
12 |
13 | for(i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d in inputsoapenv_Envelope.soapenv_Body.m_buyStocks.order){
14 | outputsoapenv_Envelope.soapenv_Body.m_buyStocks.order[count_i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d] = {};
15 | outputsoapenv_Envelope.soapenv_Body.m_buyStocks.order[count_i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d].symbol = 'XYZ';
16 | outputsoapenv_Envelope.soapenv_Body.m_buyStocks.order[count_i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d].buyerID = inputsoapenv_Envelope.soapenv_Body.m_buyStocks.order[i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d].buyerID;
17 | outputsoapenv_Envelope.soapenv_Body.m_buyStocks.order[count_i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d].price = inputsoapenv_Envelope.soapenv_Body.m_buyStocks.order[i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d].price;
18 | outputsoapenv_Envelope.soapenv_Body.m_buyStocks.order[count_i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d].volume = inputsoapenv_Envelope.soapenv_Body.m_buyStocks.order[i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d].volume;
19 |
20 | count_i_order_4d726c35_c54d_4cc6_a302_2c9fc981f93d++;
21 | }
22 | return outputsoapenv_Envelope;
23 | };
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/distribution/bin.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | false
19 | performance-ei
20 |
21 | tar.gz
22 |
23 |
24 |
25 |
26 |
27 | org.wso2.performance.common:performance-common-distribution:tar.gz
28 |
29 | true
30 | false
31 | true
32 | .
33 |
34 |
35 |
36 |
37 |
38 | ../components/perftest-capp/target/EIPerformanceTestArtifacts-1.0.0.car
39 | ei/capp
40 |
41 |
42 |
43 |
44 |
45 | scripts
46 | .
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CBRProxy_1.0.0/CBRProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CBRTransportHeaderProxy_1.0.0/CBRTransportHeaderProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/CBRSOAPHeaderProxy_1.0.0/CBRSOAPHeaderProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/20Elements_buyStocks.xml:
--------------------------------------------------------------------------------
1 |
2 | IBMjohn140.3420
3 | IBMjohn140.3419
4 | IBMjohn140.3418
5 | IBMjohn140.3417
6 | IBMjohn140.3416
7 | IBMjohn140.3415
8 | IBMjohn140.3414
9 | IBMjohn140.3413
10 | IBMjohn140.3412
11 | IBMjohn140.3411
12 | IBMjohn140.3410
13 | IBMjohn140.349
14 | IBMjohn140.348
15 | IBMjohn140.347
16 | IBMjohn140.346
17 | IBMjohn140.345
18 | IBMjohn140.344
19 | IBMjohn140.343
20 | IBMjohn140.342
21 | IBMjohn140.341
22 |
23 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/xslt_transform_1.0.0/xslt_transform-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/fastxslt_transform_1.0.0/fastxslt_transform-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/components/perftest-capp/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
22 |
23 | org.wso2.performance.ei
24 | performance-ei
25 | 0.1.0-SNAPSHOT
26 | ../../pom.xml
27 |
28 |
29 | 4.0.0
30 | perftest-capp
31 | pom
32 |
33 |
34 |
35 |
36 | maven-antrun-plugin
37 |
38 |
39 | process-resources
40 |
41 |
42 |
43 |
44 |
45 |
46 | run
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/xslt_transform_reverse_1.0.0/xslt_transform_reverse-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/fastxslt_transform_reverse_1.0.0/fastxslt_transform_reverse-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/distribution/scripts/setup/setup-mi-docker.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright 2019 WSO2 Inc. (http://wso2.org)
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | # ----------------------------------------------------------------------------
17 | # Setup WSO2 Enterprise Integrator
18 | # ----------------------------------------------------------------------------
19 | # Make sure the script is running as root.
20 | if [ "$UID" -ne "0" ]; then
21 | echo "You must be root to run $0. Try following"
22 | echo "sudo $0"
23 | exit 9
24 | fi
25 |
26 | export script_dir=$(dirname "$0")
27 | export micro_ei_docker_image=""
28 | export user=""
29 | export netty_host=""
30 |
31 | function usageHelp() {
32 | echo "-n: The hostname of Netty Service."
33 | echo "-u: General user of the OS."
34 | }
35 | export -f usageHelp
36 |
37 | while getopts "n:u:h" opt; do
38 | case "${opt}" in
39 | n)
40 | netty_host=${OPTARG}
41 | ;;
42 | u)
43 | user=${OPTARG}
44 | ;;
45 | h)
46 | usageHelp
47 | exit 0
48 | ;;
49 | *)
50 | opts+=("-${opt}")
51 | [[ -n "$OPTARG" ]] && opts+=("$OPTARG")
52 | ;;
53 | esac
54 | done
55 | shift "$((OPTIND - 1))"
56 |
57 | # Validating input parameters
58 | validate() {
59 | if [[ -z $netty_host ]]; then
60 | echo "Please provide netty host."
61 | exit 1
62 | fi
63 |
64 | if [[ -z $user ]]; then
65 | echo "Please provide the username of the general os user"
66 | exit 1
67 | fi
68 | }
69 | export -f validate
70 |
71 | function setup() {
72 | $script_dir/../docker/install-docker.sh -u $user
73 | echo "$netty_host netty" >>/etc/hosts
74 | }
75 | export -f setup
76 |
77 | $script_dir/../setup/setup-common.sh "${opts[@]}" "$@" -p curl -p jq -p unzip
78 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/run-ei-performance-tests.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright (c) 2018, WSO2 Inc. (http://wso2.org) All Rights Reserved.
3 | #
4 | # WSO2 Inc. licenses this file to you under the Apache License,
5 | # Version 2.0 (the "License"); you may not use this file except
6 | # in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # ----------------------------------------------------------------------------
19 | # Run WSO2 Enterprise Integrator Performance Tests
20 | # ----------------------------------------------------------------------------
21 | script_dir=$(dirname "$0")
22 | # Execute common script
23 | . $script_dir/perf-test-common.sh "${ARGS[@]}"
24 |
25 | function initialize() {
26 | export ei_ssh_host=ei
27 | export ei_host=$(get_ssh_hostname $ei_ssh_host)
28 | }
29 | export -f initialize
30 |
31 | # Include Test Scenarios
32 | . $script_dir/performance-test-scenarios.sh
33 |
34 | function before_execute_test_scenario() {
35 | local service_path=${scenario[path]}
36 | local protocol=${scenario[protocol]}
37 | local response_pattern="soapenv:Body"
38 |
39 | jmeter_params+=("host=$ei_host" "path=$service_path" "response_pattern=${response_pattern}")
40 | jmeter_params+=("response_size=${msize}B" "protocol=$protocol")
41 |
42 | if [[ "${scenario[name]}" == "SecureProxy" ]]; then
43 | jmeter_params+=("port=8243")
44 | jmeter_params+=("payload=$HOME/jmeter/requests/${msize}B_buyStocks_secure.xml")
45 | else
46 | jmeter_params+=("port=8280")
47 | jmeter_params+=("payload=$HOME/jmeter/requests/${msize}B_buyStocks.xml")
48 | fi
49 |
50 | echo "Starting Enterprise Integrator..."
51 | ssh $ei_ssh_host "./ei/ei-start.sh -m $heap"
52 | }
53 |
54 | function after_execute_test_scenario() {
55 | write_server_metrics ei $ei_ssh_host carbon
56 | download_file $ei_ssh_host wso2ei/repository/logs/wso2carbon.log wso2carbon.log
57 | download_file $ei_ssh_host wso2ei/repository/logs/gc.log ei_gc.log
58 | }
59 |
60 | test_scenarios
61 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_inputSchema_1.0.0/resources/DMPerfTest_inputSchema.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema" : "http://wso2.org/json-schema/wso2-data-mapper-v5.0.0/schema#",
3 | "inputType" : "XML",
4 | "id" : "http://wso2jsonschema.org",
5 | "title" : "soapenv:Envelope",
6 | "type" : "object",
7 | "properties" : {
8 | "soapenv:Header" : {
9 | "id" : "http://wso2jsonschema.org/soapenv:Header",
10 | "type" : "object",
11 | "properties" : {
12 | "routing" : {
13 | "id" : "http://wso2jsonschema.org/soapenv:Header/routing",
14 | "type" : "object",
15 | "properties" : {
16 | "content" : {
17 | "id" : "http://wso2jsonschema.org/soapenv:Header/routing/content",
18 | "type" : "string"
19 | }
20 | }
21 | }
22 | }
23 | },
24 | "soapenv:Body" : {
25 | "id" : "http://wso2jsonschema.org/soapenv:Body",
26 | "type" : "object",
27 | "properties" : {
28 | "m:buyStocks" : {
29 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks",
30 | "type" : "object",
31 | "properties" : {
32 | "order" : {
33 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order",
34 | "type" : "array",
35 | "items" : [ {
36 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order/0",
37 | "type" : "object",
38 | "properties" : {
39 | "symbol" : {
40 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order/0/symbol",
41 | "type" : "string"
42 | },
43 | "buyerID" : {
44 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order/0/buyerID",
45 | "type" : "string"
46 | },
47 | "price" : {
48 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order/0/price",
49 | "type" : "number"
50 | },
51 | "volume" : {
52 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order/0/volume",
53 | "type" : "number"
54 | }
55 | }
56 | } ]
57 | }
58 | }
59 | }
60 | }
61 | }
62 | },
63 | "namespaces" : [ {
64 | "prefix" : "soapenv",
65 | "url" : "http://schemas.xmlsoap.org/soap/envelope/"
66 | }, {
67 | "prefix" : "m",
68 | "url" : "http://services.samples/xsd"
69 | }, {
70 | "prefix" : "axis2ns5",
71 | "url" : "http://someuri"
72 | } ]
73 | }
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/DMPerfTest_outputSchema_1.0.0/resources/DMPerfTest_outputSchema.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema" : "http://wso2.org/json-schema/wso2-data-mapper-v5.0.0/schema#",
3 | "outputType" : "XML",
4 | "id" : "http://wso2jsonschema.org",
5 | "title" : "soapenv:Envelope",
6 | "type" : "object",
7 | "properties" : {
8 | "soapenv:Header" : {
9 | "id" : "http://wso2jsonschema.org/soapenv:Header",
10 | "type" : "object",
11 | "properties" : {
12 | "routing" : {
13 | "id" : "http://wso2jsonschema.org/soapenv:Header/routing",
14 | "type" : "object",
15 | "properties" : {
16 | "content" : {
17 | "id" : "http://wso2jsonschema.org/soapenv:Header/routing/content",
18 | "type" : "string"
19 | }
20 | }
21 | }
22 | }
23 | },
24 | "soapenv:Body" : {
25 | "id" : "http://wso2jsonschema.org/soapenv:Body",
26 | "type" : "object",
27 | "properties" : {
28 | "m:buyStocks" : {
29 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks",
30 | "type" : "object",
31 | "properties" : {
32 | "order" : {
33 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order",
34 | "type" : "array",
35 | "items" : [ {
36 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order/0",
37 | "type" : "object",
38 | "properties" : {
39 | "symbol" : {
40 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order/0/symbol",
41 | "type" : "string"
42 | },
43 | "buyerID" : {
44 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order/0/buyerID",
45 | "type" : "string"
46 | },
47 | "price" : {
48 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order/0/price",
49 | "type" : "number"
50 | },
51 | "volume" : {
52 | "id" : "http://wso2jsonschema.org/soapenv:Body/m:buyStocks/order/0/volume",
53 | "type" : "number"
54 | }
55 | }
56 | } ]
57 | }
58 | }
59 | }
60 | }
61 | }
62 | },
63 | "namespaces" : [ {
64 | "prefix" : "soapenv",
65 | "url" : "http://schemas.xmlsoap.org/soap/envelope/"
66 | }, {
67 | "prefix" : "m",
68 | "url" : "http://services.samples/xsd"
69 | }, {
70 | "prefix" : "axis2ns6",
71 | "url" : "http://someuri"
72 | } ]
73 | }
--------------------------------------------------------------------------------
/pull_request_template.md:
--------------------------------------------------------------------------------
1 | ## Purpose
2 | > Describe the problems, issues, or needs driving this feature/fix and include links to related issues in the following format: Resolves issue1, issue2, etc.
3 |
4 | ## Goals
5 | > Describe the solutions that this feature/fix will introduce to resolve the problems described above
6 |
7 | ## Approach
8 | > Describe how you are implementing the solutions. Include an animated GIF or screenshot if the change affects the UI (email documentation@wso2.com to review all UI text). Include a link to a Markdown file or Google doc if the feature write-up is too long to paste here.
9 |
10 | ## User stories
11 | > Summary of user stories addressed by this change>
12 |
13 | ## Release note
14 | > Brief description of the new feature or bug fix as it will appear in the release notes
15 |
16 | ## Documentation
17 | > Link(s) to product documentation that addresses the changes of this PR. If no doc impact, enter “N/A” plus brief explanation of why there’s no doc impact
18 |
19 | ## Training
20 | > Link to the PR for changes to the training content in https://github.com/wso2/WSO2-Training, if applicable
21 |
22 | ## Certification
23 | > Type “Sent” when you have provided new/updated certification questions, plus four answers for each question (correct answer highlighted in bold), based on this change. Certification questions/answers should be sent to certification@wso2.com and NOT pasted in this PR. If there is no impact on certification exams, type “N/A” and explain why.
24 |
25 | ## Marketing
26 | > Link to drafts of marketing content that will describe and promote this feature, including product page changes, technical articles, blog posts, videos, etc., if applicable
27 |
28 | ## Automation tests
29 | - Unit tests
30 | > Code coverage information
31 | - Integration tests
32 | > Details about the test cases and coverage
33 |
34 | ## Security checks
35 | - Followed secure coding standards in http://wso2.com/technical-reports/wso2-secure-engineering-guidelines? yes/no
36 | - Ran FindSecurityBugs plugin and verified report? yes/no
37 | - Confirmed that this PR doesn't commit any keys, passwords, tokens, usernames, or other secrets? yes/no
38 |
39 | ## Samples
40 | > Provide high-level details about the samples related to this feature
41 |
42 | ## Related PRs
43 | > List any other related PRs
44 |
45 | ## Migrations (if applicable)
46 | > Describe migration steps and platforms on which migration has been tested
47 |
48 | ## Test environment
49 | > List all JDK versions, operating systems, databases, and browser/versions on which this feature/fix was tested
50 |
51 | ## Learning
52 | > Describe the research phase and any blog posts, patterns, libraries, or add-ons you used to solve the problem.
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/payload-creator-script/payload-creator:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # 249 bytes
4 | writeHead(){
5 | echo "
6 | xadmin;server1;community#1.0##
7 | " > $1
8 | }
9 |
10 | # 47 bytes
11 | writeTail() {
12 | echo "" >> $1
13 | }
14 |
15 | # 101 bytes
16 | writeIBM(){
17 | echo "IBMjohn140.342000" >> $1
18 | }
19 |
20 | # 100 bytes
21 | writeMSFT(){
22 | echo "MSFTdoe23.568030" >> $1
23 | }
24 |
25 | # 101 bytes
26 | writeSUN(){
27 | echo "SUNindika14.56500" >> $1
28 | }
29 |
30 | # 90 bytes
31 | writeSimple(){
32 | echo "Nn1.01" >> $1
33 | }
34 |
35 | writeSymbol(){
36 |
37 | mod=`expr $1 % 4`
38 | #echo "mod value ========= $mod"
39 | if [ $mod -eq 0 ]
40 | then
41 | writeIBM "$2"
42 | accumulatedSize=`expr $accumulatedSize + $IBM`
43 | elif [ $mod -eq 1 ]
44 | then
45 | writeMSFT "$2"
46 | accumulatedSize=`expr $accumulatedSize + $MSFT`
47 | elif [ $mod -eq 2 ]
48 | then
49 | writeSUN "$2"
50 | accumulatedSize=`expr $accumulatedSize + $SUN`
51 | else
52 | writeSimple "$2"
53 | accumulatedSize=`expr $accumulatedSize + $Simple`
54 | fi
55 | }
56 |
57 | #################### START ###########################
58 |
59 | size=$1
60 | file_name=$1B_buyStocks.xml
61 | headAndTail=298
62 | IBM=101
63 | MSFT=100
64 | SUN=101
65 | Simple=90
66 | minPayloadSymbolSize=98 ## Avg size
67 | reamainingSize=`expr $size - $headAndTail`
68 | minPayloadSize=`expr $minPayloadSymbolSize + $headAndTail`
69 | accumulatedSize=$headAndTail
70 |
71 | if [[ "$reamainingSize" -lt "$minPayloadSymbolSize" ]]; then
72 | echo "Provided size is less than minimum payload size $minPayloadSize bytes"
73 | exit 0
74 | fi
75 |
76 | symbol_repetition=`expr $reamainingSize / $minPayloadSymbolSize`
77 |
78 | echo "Creating file ..."
79 |
80 | writeHead "$file_name"
81 |
82 | while [ "$symbol_repetition" != "0" ]
83 | do
84 | writeSymbol "$symbol_repetition" "$file_name"
85 | symbol_repetition=`expr $symbol_repetition - 1`
86 | done
87 |
88 | writeTail "$file_name"
89 |
90 | echo "File Name : $file_name"
91 | echo "Size requested : $size bytes"
92 | echo "Size created : $accumulatedSize bytes"
93 | echo "Difference : `expr $size - $accumulatedSize` bytes"
94 |
95 | #################### END ###########################
96 |
--------------------------------------------------------------------------------
/distribution/scripts/cloudformation/templates/mi_docker_perf_test_cfn.yaml:
--------------------------------------------------------------------------------
1 | {#
2 | # Copyright (c) 2019, WSO2 Inc. (http://wso2.org) All Rights Reserved.
3 | #
4 | # WSO2 Inc. licenses this file to you under the Apache License,
5 | # Version 2.0 (the "License"); you may not use this file except
6 | # in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | #}
18 | {% extends "common_perf_test_cfn.yaml" %}
19 | {% block parameters -%}
20 | WSO2MicroIntegratorInstanceType:
21 | Description: MI EC2 instance type
22 | Type: String
23 | BackendInstanceType:
24 | Description: Backend EC2 instance type
25 | Type: String
26 | {%- endblock %}
27 | {% block ec2instances -%}
28 | # JMeter Client
29 | {% call ec2instance('JMeterClientInstance', 'jmeter-client', '!Ref JMeterClientInstanceType',
30 | files=[{'name': 'apache-jmeter.tgz', 'ref': 'JMeterDistributionName'}, {'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}],
31 | public=True, volume_size=100) -%}
32 | /home/ubuntu/setup/setup-jmeter-client.sh -g -k /home/ubuntu/private_key.pem \
33 | -i /home/ubuntu \
34 | -d /home/ubuntu/jdk-8-linux-x64.tar.gz \
35 | -f /home/ubuntu/apache-jmeter.tgz \
36 | -c /home/ubuntu \
37 | {%- if jmeter_servers >= 2 %}
38 | {%- for i in range(1, jmeter_servers+1) %}
39 | -a jmeter{{ i }} -n ${JMeterServer{{ i }}Instance.PrivateIp} \
40 | {%- endfor %}
41 | {%- endif %}
42 | -a mi -n ${WSO2MicroIntegratorInstance.PrivateIp} \
43 | -a netty -n ${BackendInstance.PrivateIp}
44 | {%- endcall %}
45 | {%- if jmeter_servers >= 2 %}
46 | # JMeter Servers
47 | {%- for i in range(1, jmeter_servers+1) -%}
48 | {% call ec2instance('JMeterServer' + i|string + 'Instance', 'jmeter-server-' + i|string, '!Ref JMeterServerInstanceType',
49 | files = [{'name': 'apache-jmeter.tgz', 'ref': 'JMeterDistributionName'}, {'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}]) -%}
50 | /home/ubuntu/setup/setup-jmeter.sh -g -i /home/ubuntu -d /home/ubuntu/jdk-8-linux-x64.tar.gz -f /home/ubuntu/apache-jmeter.tgz
51 | {%- endcall %}
52 | {% endfor -%}
53 | {%- endif %}
54 | # MI
55 | {% call ec2instance('WSO2MicroIntegratorInstance', 'mi', '!Ref WSO2MicroIntegratorInstanceType',
56 | files=[{'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}]) -%}
57 | /home/ubuntu/setup/setup-mi-docker.sh -n ${BackendInstance.PrivateIp} -u ubuntu
58 | {%- endcall %}
59 | # Backend
60 | {% call ec2instance('BackendInstance', 'backend', '!Ref BackendInstanceType',
61 | files=[{'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}]) -%}
62 | /home/ubuntu/setup/setup-netty.sh -g -d /home/ubuntu/jdk-8-linux-x64.tar.gz
63 | {%- endcall %}
64 | {%- endblock %}
65 | {% block outputs %}
66 | JMeterClientPublicIP:
67 | Description: JMeter Client Public IP
68 | Value: !GetAtt JMeterClientInstance.PublicIp
69 | {% endblock %}
70 |
--------------------------------------------------------------------------------
/distribution/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 | org.wso2.performance.ei
21 | performance-ei
22 | 0.1.0-SNAPSHOT
23 | ../pom.xml
24 |
25 |
26 | 4.0.0
27 | performance-ei-distribution
28 | pom
29 | Performance EI Distribution
30 | Package for all scripts
31 |
32 |
33 |
34 | org.wso2.performance.common
35 | performance-common-distribution
36 | tar.gz
37 |
38 |
39 |
40 |
41 |
42 |
43 | org.apache.maven.plugins
44 | maven-assembly-plugin
45 |
46 |
47 | distribution
48 | package
49 |
50 | single
51 |
52 |
53 |
54 | ${basedir}/bin.xml
55 |
56 | false
57 |
58 |
59 |
60 |
61 |
62 | org.apache.maven.plugins
63 | maven-clean-plugin
64 |
65 |
66 |
67 | scripts
68 |
69 | **/target
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/distribution/scripts/cloudformation/templates/mi_perf_test_cfn.yaml:
--------------------------------------------------------------------------------
1 | {#
2 | # Copyright (c) 2020, WSO2 Inc. (http://wso2.org) All Rights Reserved.
3 | #
4 | # WSO2 Inc. licenses this file to you under the Apache License,
5 | # Version 2.0 (the "License"); you may not use this file except
6 | # in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | #}
18 | {% extends "common_perf_test_cfn.yaml" %}
19 | {% block parameters -%}
20 | WSO2MicroIntegratorDistributionName:
21 | Description: The name of the 'WSO2 Micro Integrator Distribution' in S3 Bucket
22 | Type: String
23 | ConstraintDescription: must be a valid zip package
24 | AllowedPattern: ^.*\.(zip|docker)$
25 | WSO2MicroIntegratorInstanceType:
26 | Description: MI EC2 instance type
27 | Type: String
28 | BackendInstanceType:
29 | Description: Backend EC2 instance type
30 | Type: String
31 | {%- endblock %}
32 | {% block ec2instances -%}
33 | # JMeter Client
34 | {% call ec2instance('JMeterClientInstance', 'jmeter-client', '!Ref JMeterClientInstanceType',
35 | files=[{'name': 'apache-jmeter.tgz', 'ref': 'JMeterDistributionName'}, {'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}],
36 | public=True, volume_size=100) -%}
37 | /home/ubuntu/setup/setup-jmeter-client.sh -g -k /home/ubuntu/private_key.pem \
38 | -i /home/ubuntu \
39 | -d /home/ubuntu/jdk-8-linux-x64.tar.gz \
40 | -f /home/ubuntu/apache-jmeter.tgz \
41 | -c /home/ubuntu \
42 | {%- if jmeter_servers >= 2 %}
43 | {%- for i in range(1, jmeter_servers+1) %}
44 | -a jmeter{{ i }} -n ${JMeterServer{{ i }}Instance.PrivateIp} \
45 | {%- endfor %}
46 | {%- endif %}
47 | -a mi -n ${WSO2MicroIntegratorInstance.PrivateIp} \
48 | -a netty -n ${BackendInstance.PrivateIp}
49 | {%- endcall %}
50 | {%- if jmeter_servers >= 2 %}
51 | # JMeter Servers
52 | {%- for i in range(1, jmeter_servers+1) -%}
53 | {% call ec2instance('JMeterServer' + i|string + 'Instance', 'jmeter-server-' + i|string, '!Ref JMeterServerInstanceType',
54 | files = [{'name': 'apache-jmeter.tgz', 'ref': 'JMeterDistributionName'}, {'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}]) -%}
55 | /home/ubuntu/setup/setup-jmeter.sh -g -i /home/ubuntu -d /home/ubuntu/jdk-8-linux-x64.tar.gz -f /home/ubuntu/apache-jmeter.tgz
56 | {%- endcall %}
57 | {% endfor -%}
58 | {%- endif %}
59 | # MI
60 | {% call ec2instance('WSO2MicroIntegratorInstance', 'mi', '!Ref WSO2MicroIntegratorInstanceType',
61 | files=[{'name': 'wso2mi.zip', 'ref': 'WSO2MicroIntegratorDistributionName'}, {'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}]) -%}
62 | /home/ubuntu/setup/setup-mi.sh -d /home/ubuntu/wso2mi.zip -n ${BackendInstance.PrivateIp} -u ubuntu -j /home/ubuntu/jdk-8-linux-x64.tar.gz
63 | {%- endcall %}
64 | # Backend
65 | {% call ec2instance('BackendInstance', 'backend', '!Ref BackendInstanceType',
66 | files=[{'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}]) -%}
67 | /home/ubuntu/setup/setup-netty.sh -g -d /home/ubuntu/jdk-8-linux-x64.tar.gz
68 | {%- endcall %}
69 | {%- endblock %}
70 | {% block outputs %}
71 | JMeterClientPublicIP:
72 | Description: JMeter Client Public IP
73 | Value: !GetAtt JMeterClientInstance.PublicIp
74 | {% endblock %}
75 |
--------------------------------------------------------------------------------
/distribution/scripts/cloudformation/run-mi-docker-performance-tests.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright (c) 2018, WSO2 Inc. (http://wso2.org) All Rights Reserved.
3 | #
4 | # WSO2 Inc. licenses this file to you under the Apache License,
5 | # Version 2.0 (the "License"); you may not use this file except
6 | # in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # ----------------------------------------------------------------------------
19 | # Run performance tests on AWS Cloudformation Stacks
20 | # ----------------------------------------------------------------------------
21 |
22 | export script_name="$0"
23 | export script_dir=$(dirname "$0")
24 |
25 | export aws_cloudformation_template_filename="mi_docker_perf_test_cfn.yaml"
26 |
27 | export application_name="WSO2 Micro Integrator"
28 | export product_version=""
29 | export ec2_instance_name="mi"
30 | export metrics_file_prefix="mi"
31 | export run_performance_tests_script_name="run-mi-docker-performance-tests.sh"
32 |
33 | export wso2mi_ec2_instance_type=""
34 |
35 | function usageCommand() {
36 | echo "-E -V "
37 | }
38 | export -f usageCommand
39 |
40 | function usageHelp() {
41 | echo "-E: Amazon EC2 Instance Type for $application_name."
42 | echo "-V: Product version for $application_name."
43 | }
44 | export -f usageHelp
45 |
46 | while getopts ":u:f:d:k:n:j:o:g:s:b:r:J:S:N:t:p:w:he:E:V:" opt; do
47 | case "${opt}" in
48 | E)
49 | wso2mi_ec2_instance_type=${OPTARG}
50 | ;;
51 | V)
52 | product_version=${OPTARG}
53 | ;;
54 | *)
55 | opts+=("-${opt}")
56 | [[ -n "$OPTARG" ]] && opts+=("$OPTARG")
57 | ;;
58 | esac
59 | done
60 | shift "$((OPTIND - 1))"
61 |
62 | function validate() {
63 | if [[ -z $wso2mi_ec2_instance_type ]]; then
64 | echo "Please provide the Amazon EC2 Instance Type for $application_name."
65 | exit 1
66 | fi
67 | if [[ -z $product_version ]]; then
68 | echo "Please provide the version for $application_name."
69 | exit 1
70 | fi
71 | }
72 | export -f validate
73 |
74 | export application_name=$application_name" "$product_version
75 |
76 | function get_test_metadata() {
77 | echo "wso2mi_ec2_instance_type=$wso2mi_ec2_instance_type"
78 | }
79 | export -f get_test_metadata
80 |
81 | function get_cf_parameters() {
82 | echo "WSO2MicroIntegratorInstanceType=$wso2mi_ec2_instance_type"
83 | }
84 | export -f get_cf_parameters
85 |
86 | function get_columns() {
87 | echo "Scenario Name"
88 | echo "Heap Size"
89 | echo "Concurrent Users"
90 | echo "Message Size (Bytes)"
91 | echo "Back-end Service Delay (ms)"
92 | echo "Error %"
93 | echo "Throughput (Requests/sec)"
94 | echo "Average Response Time (ms)"
95 | echo "Standard Deviation of Response Time (ms)"
96 | echo "99th Percentile of Response Time (ms)"
97 | echo "$application_name GC Throughput (%)"
98 | echo "Average $application_name Memory Footprint After Full GC (M)"
99 | }
100 | export -f get_columns
101 |
102 | $script_dir/cloudformation-common.sh "${opts[@]}" -- "$@"
103 |
--------------------------------------------------------------------------------
/distribution/scripts/cloudformation/templates/ei_perf_test_cfn.yaml:
--------------------------------------------------------------------------------
1 | {#
2 | # Copyright (c) 2018, WSO2 Inc. (http://wso2.org) All Rights Reserved.
3 | #
4 | # WSO2 Inc. licenses this file to you under the Apache License,
5 | # Version 2.0 (the "License"); you may not use this file except
6 | # in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | #}
18 | {% extends "common_perf_test_cfn.yaml" %}
19 | {% block parameters -%}
20 | WSO2EnterpriseIntegratorDistributionName:
21 | Description: The name of the 'WSO2 Enterprise Integrator Distribution' in S3 Bucket
22 | Type: String
23 | ConstraintDescription: must be a valid zip package
24 | AllowedPattern: ^.*\.(zip|docker)$
25 | WSO2EnterpriseIntegratorInstanceType:
26 | Description: EI EC2 instance type
27 | Type: String
28 | BackendInstanceType:
29 | Description: Backend EC2 instance type
30 | Type: String
31 | {%- endblock %}
32 | {% block ec2instances -%}
33 | # JMeter Client
34 | {% call ec2instance('JMeterClientInstance', 'jmeter-client', '!Ref JMeterClientInstanceType',
35 | files=[{'name': 'apache-jmeter.tgz', 'ref': 'JMeterDistributionName'}, {'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}],
36 | public=True, volume_size=100) -%}
37 | /home/ubuntu/setup/setup-jmeter-client.sh -g -k /home/ubuntu/private_key.pem \
38 | -i /home/ubuntu \
39 | -d /home/ubuntu/jdk-8-linux-x64.tar.gz \
40 | -f /home/ubuntu/apache-jmeter.tgz \
41 | -c /home/ubuntu \
42 | {%- if jmeter_servers >= 2 %}
43 | {%- for i in range(1, jmeter_servers+1) %}
44 | -a jmeter{{ i }} -n ${JMeterServer{{ i }}Instance.PrivateIp} \
45 | {%- endfor %}
46 | {%- endif %}
47 | -a ei -n ${WSO2EnterpriseIntegratorInstance.PrivateIp} \
48 | -a netty -n ${BackendInstance.PrivateIp}
49 | {%- endcall %}
50 | {%- if jmeter_servers >= 2 %}
51 | # JMeter Servers
52 | {%- for i in range(1, jmeter_servers+1) -%}
53 | {% call ec2instance('JMeterServer' + i|string + 'Instance', 'jmeter-server-' + i|string, '!Ref JMeterServerInstanceType',
54 | files = [{'name': 'apache-jmeter.tgz', 'ref': 'JMeterDistributionName'}, {'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}]) -%}
55 | /home/ubuntu/setup/setup-jmeter.sh -g -i /home/ubuntu -d /home/ubuntu/jdk-8-linux-x64.tar.gz -f /home/ubuntu/apache-jmeter.tgz
56 | {%- endcall %}
57 | {% endfor -%}
58 | {%- endif %}
59 | # EI
60 | {% call ec2instance('WSO2EnterpriseIntegratorInstance', 'ei', '!Ref WSO2EnterpriseIntegratorInstanceType',
61 | files=[{'name': 'wso2ei.zip', 'ref': 'WSO2EnterpriseIntegratorDistributionName'}, {'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}]) -%}
62 | /home/ubuntu/setup/setup-ei.sh -d /home/ubuntu/wso2ei.zip -n ${BackendInstance.PrivateIp} -u ubuntu -j /home/ubuntu/jdk-8-linux-x64.tar.gz
63 | {%- endcall %}
64 | # Backend
65 | {% call ec2instance('BackendInstance', 'backend', '!Ref BackendInstanceType',
66 | files=[{'name': 'jdk-8-linux-x64.tar.gz', 'ref': 'OracleJDKDistributionName'}]) -%}
67 | /home/ubuntu/setup/setup-netty.sh -g -d /home/ubuntu/jdk-8-linux-x64.tar.gz
68 | {%- endcall %}
69 | {%- endblock %}
70 | {% block outputs %}
71 | JMeterClientPublicIP:
72 | Description: JMeter Client Public IP
73 | Value: !GetAtt JMeterClientInstance.PublicIp
74 | {% endblock %}
75 |
--------------------------------------------------------------------------------
/distribution/scripts/ei/mi-start.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright 2018 WSO2 Inc. (http://wso2.org)
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | # ----------------------------------------------------------------------------
17 | # Start WSO2 Micro Integrator
18 | # ----------------------------------------------------------------------------
19 |
20 | default_heap_size="4G"
21 | heap_size="$default_heap_size"
22 |
23 | function usage() {
24 | echo ""
25 | echo "Usage: "
26 | echo "$0 [-m ] [-h]"
27 | echo "-m: The heap memory size of WSO2 Micro Integrator. Default: $default_heap_size."
28 | echo "-h: Display this help and exit."
29 | echo ""
30 | }
31 |
32 | while getopts "m:h" opt; do
33 | case "${opt}" in
34 | m)
35 | heap_size=${OPTARG}
36 | ;;
37 | h)
38 | usage
39 | exit 0
40 | ;;
41 | \?)
42 | usage
43 | exit 1
44 | ;;
45 | esac
46 | done
47 | shift "$((OPTIND - 1))"
48 |
49 | if [[ -z $heap_size ]]; then
50 | echo "Please provide the heap size for WSO2 Micro Integrator."
51 | exit 1
52 | fi
53 |
54 | jvm_dir=""
55 | for dir in /usr/lib/jvm/jdk1.8*; do
56 | [ -d "${dir}" ] && jvm_dir="${dir}" && break
57 | done
58 | export JAVA_HOME="${jvm_dir}"
59 |
60 | carbon_bootstrap_class=org.wso2.carbon.bootstrap.Bootstrap
61 | product_path=$HOME/wso2mi
62 | startup_script=$product_path/bin/micro-integrator.sh
63 |
64 | if [[ ! -f $startup_script ]]; then
65 | startup_script=$product_path/bin/wso2server.sh
66 | fi
67 |
68 | if pgrep -f "$carbon_bootstrap_class" >/dev/null; then
69 | echo "Shutting down Micro Integrator"
70 | $startup_script stop
71 |
72 | echo "Waiting for MI to stop"
73 | while true; do
74 | if ! pgrep -f "$carbon_bootstrap_class" >/dev/null; then
75 | echo "MI stopped"
76 | break
77 | else
78 | sleep 10
79 | fi
80 | done
81 | fi
82 |
83 | log_files=($product_path/repository/logs/*)
84 | if [ ${#log_files[@]} -gt 1 ]; then
85 | echo "Log files exists. Moving to /tmp"
86 | mv "${log_files[@]}" /tmp/
87 | fi
88 |
89 | echo "Setting Heap to ${heap_size}"
90 | export JVM_MEM_OPTS="-Xms${heap_size} -Xmx${heap_size}"
91 |
92 | echo "Enabling GC Logs"
93 | export JAVA_OPTS="-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$product_path/repository/logs/gc.log"
94 |
95 | echo "Starting MI"
96 | $startup_script start -DenablePrometheusApi=true
97 |
98 | echo "Waiting for MI to start"
99 |
100 | exit_status=100
101 |
102 | n=0
103 | until [ $n -ge 60 ]; do
104 | response_code=$(curl -s -w '%{http_code}' -o /dev/null http://localhost:9201/metric-service/metrics || echo "")
105 | if [ $response_code -eq 200 ]; then
106 | echo "MI is up and running"
107 | exit_status=0
108 | break
109 | fi
110 | sleep 5
111 | n=$(($n + 1))
112 | done
113 |
114 | # Wait for another 5 seconds to make sure that the server is ready to accept API requests.
115 | sleep 5
116 | exit $exit_status
117 |
--------------------------------------------------------------------------------
/distribution/scripts/ei/ei-start.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright 2018 WSO2 Inc. (http://wso2.org)
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | # ----------------------------------------------------------------------------
17 | # Start WSO2 Enterprise Integrator
18 | # ----------------------------------------------------------------------------
19 |
20 | default_heap_size="4G"
21 | heap_size="$default_heap_size"
22 |
23 | function usage() {
24 | echo ""
25 | echo "Usage: "
26 | echo "$0 [-m ] [-h]"
27 | echo "-m: The heap memory size of WSO2 Enterprise Integrator. Default: $default_heap_size."
28 | echo "-h: Display this help and exit."
29 | echo ""
30 | }
31 |
32 | while getopts "m:h" opt; do
33 | case "${opt}" in
34 | m)
35 | heap_size=${OPTARG}
36 | ;;
37 | h)
38 | usage
39 | exit 0
40 | ;;
41 | \?)
42 | usage
43 | exit 1
44 | ;;
45 | esac
46 | done
47 | shift "$((OPTIND - 1))"
48 |
49 | if [[ -z $heap_size ]]; then
50 | echo "Please provide the heap size for WSO2 Enterprise Integrator."
51 | exit 1
52 | fi
53 |
54 | jvm_dir=""
55 | for dir in /usr/lib/jvm/jdk1.8*; do
56 | [ -d "${dir}" ] && jvm_dir="${dir}" && break
57 | done
58 | export JAVA_HOME="${jvm_dir}"
59 |
60 | carbon_bootstrap_class=org.wso2.carbon.bootstrap.Bootstrap
61 | product_path=$HOME/wso2ei
62 | startup_script=$product_path/bin/integrator.sh
63 |
64 | if [[ ! -f $startup_script ]]; then
65 | startup_script=$product_path/bin/wso2server.sh
66 | fi
67 |
68 | if pgrep -f "$carbon_bootstrap_class" >/dev/null; then
69 | echo "Shutting down EI"
70 | $startup_script stop
71 |
72 | echo "Waiting for EI to stop"
73 | while true; do
74 | if ! pgrep -f "$carbon_bootstrap_class" >/dev/null; then
75 | echo "EI stopped"
76 | break
77 | else
78 | sleep 10
79 | fi
80 | done
81 | fi
82 |
83 | log_files=($product_path/repository/logs/*)
84 | if [ ${#log_files[@]} -gt 1 ]; then
85 | echo "Log files exists. Moving to /tmp"
86 | mv "${log_files[@]}" /tmp/
87 | fi
88 |
89 | echo "Setting Heap to ${heap_size}"
90 | export JVM_MEM_OPTS="-Xms${heap_size} -Xmx${heap_size}"
91 |
92 | echo "Enabling GC Logs"
93 | export JAVA_OPTS="-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$product_path/repository/logs/gc.log"
94 |
95 | echo "Starting EI"
96 | $startup_script start
97 |
98 | echo "Waiting for EI to start"
99 |
100 | exit_status=100
101 |
102 | n=0
103 | until [ $n -ge 60 ]; do
104 | response_code=$(curl -s -w '%{http_code}' -o /dev/null -d '1' -H 'Content-Type: application/soap+xml; charset=UTF-8; action="urn:echoInt"' http://localhost:8280/services/echo || echo "")
105 | if [ $response_code -eq 200 ]; then
106 | echo "EI started"
107 | exit_status=0
108 | break
109 | fi
110 | sleep 10
111 | n=$(($n + 1))
112 | done
113 |
114 | # Wait for another 10 seconds to make sure that the server is ready to accept API requests.
115 | sleep 10
116 | exit $exit_status
117 |
--------------------------------------------------------------------------------
/distribution/scripts/cloudformation/run-ei-performance-tests.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright (c) 2018, WSO2 Inc. (http://wso2.org) All Rights Reserved.
3 | #
4 | # WSO2 Inc. licenses this file to you under the Apache License,
5 | # Version 2.0 (the "License"); you may not use this file except
6 | # in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # ----------------------------------------------------------------------------
19 | # Run performance tests on AWS Cloudformation Stacks
20 | # ----------------------------------------------------------------------------
21 |
22 | export script_name="$0"
23 | export script_dir=$(dirname "$0")
24 |
25 | export aws_cloudformation_template_filename="ei_perf_test_cfn.yaml"
26 | export application_name="WSO2 Enterprise Integrator"
27 | export ec2_instance_name="ei"
28 | export metrics_file_prefix="ei"
29 | export run_performance_tests_script_name="run-ei-performance-tests.sh"
30 |
31 | export wso2ei_distribution=""
32 | export wso2ei_ec2_instance_type=""
33 |
34 | function usageCommand() {
35 | echo "-e -E "
36 | }
37 | export -f usageCommand
38 |
39 | function usageHelp() {
40 | echo "-e: $application_name Distribution."
41 | echo "-E: Amazon EC2 Instance Type for $application_name."
42 | }
43 | export -f usageHelp
44 |
45 | while getopts ":u:f:d:k:n:j:o:g:s:b:r:J:S:N:t:p:w:he:E:" opt; do
46 | case "${opt}" in
47 | e)
48 | wso2ei_distribution=${OPTARG}
49 | ;;
50 | E)
51 | wso2ei_ec2_instance_type=${OPTARG}
52 | ;;
53 | *)
54 | opts+=("-${opt}")
55 | [[ -n "$OPTARG" ]] && opts+=("$OPTARG")
56 | ;;
57 | esac
58 | done
59 | shift "$((OPTIND - 1))"
60 |
61 | function validate() {
62 | if [[ ! -f $wso2ei_distribution ]]; then
63 | echo "Please provide $application_name distribution."
64 | exit 1
65 | fi
66 |
67 | export wso2ei_distribution_filename=$(basename $wso2ei_distribution)
68 |
69 | if [[ ${wso2ei_distribution_filename: -4} != ".zip" ]]; then
70 | echo "$application_name distribution must have .zip extension"
71 | exit 1
72 | fi
73 |
74 | if [[ -z $wso2ei_ec2_instance_type ]]; then
75 | echo "Please provide the Amazon EC2 Instance Type for $application_name."
76 | exit 1
77 | fi
78 | }
79 | export -f validate
80 |
81 | function create_links() {
82 | wso2ei_distribution=$(realpath $wso2ei_distribution)
83 | ln -s $wso2ei_distribution $temp_dir/$wso2ei_distribution_filename
84 | }
85 | export -f create_links
86 |
87 | function get_test_metadata() {
88 | echo "wso2ei_ec2_instance_type=$wso2ei_ec2_instance_type"
89 | }
90 | export -f get_test_metadata
91 |
92 | function get_cf_parameters() {
93 | echo "WSO2EnterpriseIntegratorDistributionName=$wso2ei_distribution_filename"
94 | echo "WSO2EnterpriseIntegratorInstanceType=$wso2ei_ec2_instance_type"
95 | }
96 | export -f get_cf_parameters
97 |
98 | function get_columns() {
99 | echo "Scenario Name"
100 | echo "Heap Size"
101 | echo "Concurrent Users"
102 | echo "Message Size (Bytes)"
103 | echo "Back-end Service Delay (ms)"
104 | echo "Error %"
105 | echo "Throughput (Requests/sec)"
106 | echo "Average Response Time (ms)"
107 | echo "Standard Deviation of Response Time (ms)"
108 | echo "99th Percentile of Response Time (ms)"
109 | echo "$application_name GC Throughput (%)"
110 | echo "Average $application_name Memory Footprint After Full GC (M)"
111 | }
112 | export -f get_columns
113 |
114 | $script_dir/cloudformation-common.sh "${opts[@]}" -- "$@"
115 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/run-mi-docker-performance-tests.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright (c) 2019, WSO2 Inc. (http://wso2.org) All Rights Reserved.
3 | #
4 | # WSO2 Inc. licenses this file to you under the Apache License,
5 | # Version 2.0 (the "License"); you may not use this file except
6 | # in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # ----------------------------------------------------------------------------
19 | # Run WSO2 Enterprise Micro Integrator Performance Tests
20 | # ----------------------------------------------------------------------------
21 | script_dir=$(dirname "$0")
22 |
23 | export cpus
24 | export memory
25 | export wso2_mi_version
26 |
27 | function usageCommand() {
28 | echo "-c -r -v "
29 | }
30 | export -f usageCommand
31 |
32 | function usageHelp() {
33 | echo "-c: Number of CPU resources to be used by the WSO2 Micro Integrator container."
34 | echo "-r: The maximum amount of memory to be used by WSO2 Micro Integrator container."
35 | echo "-v: WSO2 Micro Integrator version."
36 | }
37 | export -f usageHelp
38 |
39 | while getopts ":u:b:s:m:d:w:n:j:k:l:i:e:tp:hc:r:v:" opt; do
40 | case "${opt}" in
41 | c)
42 | cpus=${OPTARG}
43 | ;;
44 | r)
45 | memory=${OPTARG}
46 | ;;
47 | v)
48 | wso2_mi_version=${OPTARG}
49 | ;;
50 | *)
51 | opts+=("-${opt}")
52 | [[ -n "$OPTARG" ]] && opts+=("$OPTARG")
53 | ;;
54 | esac
55 | done
56 | shift "$((OPTIND - 1))"
57 |
58 | function validate() {
59 | if [[ -z $cpus ]]; then
60 | echo "Please provide the number of CPU resources to be used by the container."
61 | exit 1
62 | fi
63 | if [[ -z $memory ]]; then
64 | echo "Please provide the maximum amount of memory the container can use."
65 | exit 1
66 | fi
67 | if [[ -z $wso2_mi_version ]]; then
68 | echo "Please provide WSO2 Micro Integrator version."
69 | exit 1
70 | fi
71 | }
72 | export -f validate
73 |
74 | # Execute common script
75 | . $script_dir/perf-test-common.sh "${opts[@]}"
76 |
77 | function initialize() {
78 | export mi_ssh_host=mi
79 | export mi_host=$(get_ssh_hostname $mi_ssh_host)
80 | }
81 | export -f initialize
82 |
83 | # Include Test Scenarios
84 | . $script_dir/performance-test-scenarios.sh
85 |
86 | function before_execute_test_scenario() {
87 | local service_path=${scenario[path]}
88 | local protocol=${scenario[protocol]}
89 | local response_pattern="soapenv:Body"
90 |
91 | jmeter_params+=("host=$mi_host" "path=$service_path" "response_pattern=${response_pattern}")
92 | jmeter_params+=("response_size=${msize}B" "protocol=$protocol")
93 |
94 | if [[ "${scenario[name]}" == "SecureProxy" ]]; then
95 | jmeter_params+=("port=8253")
96 | jmeter_params+=("payload=$HOME/jmeter/requests/${msize}B_buyStocks_secure.xml")
97 | else
98 | jmeter_params+=("port=8290")
99 | jmeter_params+=("payload=$HOME/jmeter/requests/${msize}B_buyStocks.xml")
100 | fi
101 |
102 | echo "Starting Micro Integrator Docker..."
103 | ssh $mi_ssh_host "./ei/mi-docker-start.sh -m $heap -c $cpus -r $memory -v $wso2_mi_version"
104 | }
105 |
106 | function after_execute_test_scenario() {
107 | ssh $mi_ssh_host docker stats --no-stream microei >${report_location}/docker_stats.txt
108 | write_server_metrics mi $mi_ssh_host carbon
109 | download_file $mi_ssh_host logs/wso2carbon.log wso2carbon.log
110 | download_file $mi_ssh_host logs/gc.log mi_gc.log
111 | ssh $mi_ssh_host "./ei/mi-docker-stop.sh"
112 | }
113 |
114 | test_scenarios
115 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/templates/summary.md:
--------------------------------------------------------------------------------
1 | # {{ parameters.application_name }} Performance Test Results
2 |
3 | During each release, we execute various automated performance test scenarios and publish the results.
4 |
5 | | Test Scenarios | Description |
6 | | --- | --- |
7 | {%- for test_scenario in parameters.test_scenarios %}
8 | | {{test_scenario.display_name}} | {{test_scenario.description}} |
9 | {%- endfor %}
10 |
11 | Our test client is [Apache JMeter](https://jmeter.apache.org/index.html). We test each scenario for a fixed duration of
12 | time. We split the test results into warmup and measurement parts and use the measurement part to compute the
13 | performance metrics.
14 |
15 | Test scenarios use a [Netty](https://netty.io/) based back-end service which echoes back any request
16 | posted to it after a specified period of time.
17 |
18 | We run the performance tests under different numbers of concurrent users, message sizes (payloads) and back-end service
19 | delays.
20 |
21 | The main performance metrics:
22 |
23 | 1. **Throughput**: The number of requests that the {{ parameters.application_name }} processes during a specific time interval (e.g. per second).
24 | 2. **Response Time**: The end-to-end latency for an operation of invoking a service in {{ parameters.application_name }} . The complete distribution of response times was recorded.
25 |
26 | In addition to the above metrics, we measure the load average and several memory-related metrics.
27 |
28 | The following are the test parameters.
29 |
30 | | Test Parameter | Description | Values |
31 | | --- | --- | --- |
32 | | Scenario Name | The name of the test scenario. | Refer to the above table. |
33 | | Heap Size | The amount of memory allocated to the application | {{ parameters.heap_sizes|join(', ') }} |
34 | | Concurrent Users | The number of users accessing the application at the same time. | {{ parameters.concurrent_users|join(', ') }} |
35 | | Message Size (Bytes) | The request payload size in Bytes. | {{ parameters.message_sizes|join(', ') }} |
36 | | Back-end Delay (ms) | The delay added by the Back-end service. | {{ parameters.backend_sleep_times|join(', ') }} |
37 |
38 | The duration of each test is **{{ parameters.test_duration }} seconds**. The warm-up period is **{{ parameters.warmup_time }} seconds**.
39 | The measurement results are collected after the warm-up period.
40 |
41 | The performance tests were executed on {{ parameters.number_of_stacks }} AWS CloudFormation stack{{ parameters.number_of_stacks|pluralize }}.
42 |
43 | {% for instance in instances %}
44 | System information for {{ parameters.application_name }} in {{ loop.index|humanize_ordinal }} AWS CloudFormation stack.
45 |
46 | | Class | Subclass | Description | Value |
47 | | --- | --- | --- | --- |
48 | {%- for system_info in instance.system_info %}
49 | | {{ system_info['class'] }} | {{ system_info['subclass'] }} | {{ system_info['description'] }} | {{ system_info['value'] }} |
50 | {%- endfor %}
51 |
52 | {%- endfor %}
53 |
54 |
55 | The following are the measurements collected from each performance test conducted for a given combination of
56 | test parameters.
57 |
58 | | Measurement | Description |
59 | | --- | --- |
60 | | Error % | Percentage of requests with errors |
61 | | Average Response Time (ms) | The average response time of a set of results |
62 | | Standard Deviation of Response Time (ms) | The “Standard Deviation” of the response time. |
63 | | 99th Percentile of Response Time (ms) | 99% of the requests took no more than this time. The remaining samples took at least as long as this |
64 | | Throughput (Requests/sec) | The throughput measured in requests per second. |
65 | | Average Memory Footprint After Full GC (M) | The average memory consumed by the application after a full garbage collection event. |
66 |
67 | The following is the summary of performance test results collected for the measurement period.
68 |
69 | | {% for column_name in column_names %} {{ column_name }} |{%- endfor %}
70 | | {%- for column_name in column_names %}---{% if not loop.first %}:{% endif%}|{%- endfor %}
71 | {%- for row in rows %}
72 | | {% for column_name in column_names %} {{ row[column_name] }} |{% endfor %}
73 | {%- endfor %}
74 |
--------------------------------------------------------------------------------
/distribution/scripts/setup/setup-mi.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright 2018 WSO2 Inc. (http://wso2.org)
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | # ----------------------------------------------------------------------------
17 | # Setup WSO2 Micro Integrator
18 | # ----------------------------------------------------------------------------
19 | # Make sure the script is running as root.
20 | if [ "$UID" -ne "0" ]; then
21 | echo "You must be root to run $0. Try following"
22 | echo "sudo $0"
23 | exit 9
24 | fi
25 |
26 | export script_dir=$(dirname "$0")
27 | export netty_host=""
28 | export mi_product=""
29 | export user=""
30 | export oracle_jdk_dist=""
31 | # Default value for product extraction directory
32 | export product_home="wso2mi"
33 |
34 | function usageHelp() {
35 | echo "-n: The hostname of Netty Service."
36 | echo "-d: MI distribution."
37 | echo "-u: General user of the OS."
38 | echo "-j: Oracle JDK distribution. (If not provided, OpenJDK will be installed)"
39 | }
40 | export -f usageHelp
41 |
42 | while getopts "hn:d:u:j:" opt; do
43 | case "${opt}" in
44 | n)
45 | netty_host=${OPTARG}
46 | ;;
47 | d)
48 | mi_product=${OPTARG}
49 | ;;
50 | u)
51 | user=${OPTARG}
52 | ;;
53 | j)
54 | oracle_jdk_dist=${OPTARG}
55 | ;;
56 | h)
57 | usageHelp
58 | exit 0
59 | ;;
60 | *)
61 | opts+=("-${opt}")
62 | [[ -n "$OPTARG" ]] && opts+=("$OPTARG")
63 | ;;
64 | esac
65 | done
66 | shift "$((OPTIND - 1))"
67 |
68 | # Validating input parameters
69 | validate() {
70 | if [[ -z $netty_host ]]; then
71 | echo "Please provide netty host."
72 | exit 1
73 | fi
74 |
75 | if [[ ! -f $mi_product ]]; then
76 | echo "Product not provided. Please provide the MI product."
77 | exit 1
78 | fi
79 |
80 | if [[ -z $user ]]; then
81 | echo "Please provide the username of the general os user"
82 | exit 1
83 | fi
84 | }
85 | export -f validate
86 |
87 | function setup() {
88 | install_dir=/home/$user
89 | if [[ -f $oracle_jdk_dist ]]; then
90 | $script_dir/../java/install-java.sh -f $oracle_jdk_dist
91 | fi
92 |
93 | pushd ${install_dir}
94 |
95 | #Remove Micro Integrator if it is already there
96 | if [[ -d wso2mi ]]; then
97 | sudo -u $user rm -rf wso2mi
98 | fi
99 |
100 | #Extract the downloaded zip
101 | echo "Extracting WSO2 Micro Integrator"
102 | dirname=$(unzip -Z -1 $mi_product | head -1 | sed -e 's@/.*@@')
103 | sudo -u $user unzip -q -o $mi_product
104 | sudo -u $user mv -v $dirname wso2mi
105 | echo "Enterprise Integrator is extracted"
106 |
107 | # Sample CAPP location
108 | capp_file=$script_dir/../ei/capp/EIPerformanceTestArtifacts-1.0.0.car
109 |
110 | if [ -f $capp_file ]; then
111 | echo "Deploying CAPP.."
112 | sudo -u $user cp -v $capp_file wso2mi/repository/deployment/server/carbonapps/
113 | echo "CAPP Deployed.."
114 | else
115 | echo "CAPP is not available."
116 | exit 1
117 | fi
118 |
119 | # Add Netty Host to /etc/hosts
120 | echo "$netty_host netty" >>/etc/hosts
121 |
122 | popd
123 | echo "Completed Micro Integrator setup..."
124 | }
125 | export -f setup
126 |
127 | if [[ ! -f $oracle_jdk_dist ]]; then
128 | SETUP_COMMON_ARGS+="-p openjdk-8-jdk"
129 | fi
130 |
131 | $script_dir/../setup/setup-common.sh "${opts[@]}" "$@" -p curl -p jq -p unzip $SETUP_COMMON_ARGS
132 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/artifacts.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/distribution/scripts/setup/setup-ei.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright 2018 WSO2 Inc. (http://wso2.org)
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | # ----------------------------------------------------------------------------
17 | # Setup WSO2 Enterprise Integrator
18 | # ----------------------------------------------------------------------------
19 | # Make sure the script is running as root.
20 | if [ "$UID" -ne "0" ]; then
21 | echo "You must be root to run $0. Try following"
22 | echo "sudo $0"
23 | exit 9
24 | fi
25 |
26 | export script_dir=$(dirname "$0")
27 | export netty_host=""
28 | export ei_product=""
29 | export user=""
30 | export oracle_jdk_dist=""
31 | # Default value for product extraction directory
32 | export product_home="wso2ei"
33 |
34 | function usageHelp() {
35 | echo "-n: The hostname of Netty Service."
36 | echo "-d: EI distribution."
37 | echo "-u: General user of the OS."
38 | echo "-j: Oracle JDK distribution. (If not provided, OpenJDK will be installed)"
39 | }
40 | export -f usageHelp
41 |
42 | while getopts "hn:d:u:j:" opt; do
43 | case "${opt}" in
44 | n)
45 | netty_host=${OPTARG}
46 | ;;
47 | d)
48 | ei_product=${OPTARG}
49 | ;;
50 | u)
51 | user=${OPTARG}
52 | ;;
53 | j)
54 | oracle_jdk_dist=${OPTARG}
55 | ;;
56 | h)
57 | usageHelp
58 | exit 0
59 | ;;
60 | *)
61 | opts+=("-${opt}")
62 | [[ -n "$OPTARG" ]] && opts+=("$OPTARG")
63 | ;;
64 | esac
65 | done
66 | shift "$((OPTIND - 1))"
67 |
68 | # Validating input parameters
69 | validate() {
70 | if [[ -z $netty_host ]]; then
71 | echo "Please provide netty host."
72 | exit 1
73 | fi
74 |
75 | if [[ ! -f $ei_product ]]; then
76 | echo "Product not provided. Please provide the EI product."
77 | exit 1
78 | fi
79 |
80 | if [[ -z $user ]]; then
81 | echo "Please provide the username of the general os user"
82 | exit 1
83 | fi
84 | }
85 | export -f validate
86 |
87 | function setup() {
88 | install_dir=/home/$user
89 | if [[ -f $oracle_jdk_dist ]]; then
90 | $script_dir/../java/install-java.sh -f $oracle_jdk_dist
91 | fi
92 |
93 | pushd ${install_dir}
94 |
95 | #Remove Enterprise Integrator if it is already there
96 | if [[ -d wso2ei ]]; then
97 | sudo -u $user rm -rf wso2ei
98 | fi
99 |
100 | #Extract the downloaded zip
101 | echo "Extracting WSO2 Enterprise Integrator"
102 | dirname=$(unzip -Z -1 $ei_product | head -1 | sed -e 's@/.*@@')
103 | sudo -u $user unzip -q -o $ei_product
104 | sudo -u $user mv -v $dirname wso2ei
105 | echo "Enterprise Integrator is extracted"
106 |
107 | # Sample CAPP location
108 | capp_file=$script_dir/../ei/capp/EIPerformanceTestArtifacts-1.0.0.car
109 |
110 | if [ -f $capp_file ]; then
111 | echo "Deploying CAPP.."
112 | sudo -u $user cp -v $capp_file wso2ei/repository/deployment/server/carbonapps/
113 | echo "CAPP Deployed.."
114 | else
115 | echo "CAPP is not available."
116 | exit 1
117 | fi
118 |
119 | # Add Netty Host to /etc/hosts
120 | echo "$netty_host netty" >>/etc/hosts
121 |
122 | popd
123 | echo "Completed Enterprise Integrator setup..."
124 | }
125 | export -f setup
126 |
127 | if [[ ! -f $oracle_jdk_dist ]]; then
128 | SETUP_COMMON_ARGS+="-p openjdk-8-jdk"
129 | fi
130 |
131 | $script_dir/../setup/setup-common.sh "${opts[@]}" "$@" -p curl -p jq -p unzip $SETUP_COMMON_ARGS
132 |
--------------------------------------------------------------------------------
/distribution/scripts/ei/mi-docker-start.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright 2019 WSO2 Inc. (http://wso2.org)
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | # ----------------------------------------------------------------------------
17 | # Start WSO2 Micro Integrator Docker
18 | # ----------------------------------------------------------------------------
19 | script_dir=$(dirname "$0")
20 | default_heap_size="1G"
21 | heap_size="$default_heap_size"
22 | cpus=""
23 | memory=""
24 | wso2_mi_version=""
25 |
26 | function usage() {
27 | echo ""
28 | echo "Usage: "
29 | echo "$0 -c -r -v [-m ] [-h]"
30 | echo "-c: Number of CPU resources to be used by the container."
31 | echo "-r: The maximum amount of memory the container can use."
32 | echo "-v: WSO2 Micro Integrator Integrator version."
33 | echo "-m: The heap memory size of Micro Integrator. Default: $default_heap_size."
34 | echo "-h: Display this help and exit."
35 | echo ""
36 | }
37 |
38 | while getopts "c:r:v:m:h" opt; do
39 | case "${opt}" in
40 | c)
41 | cpus=${OPTARG}
42 | ;;
43 | r)
44 | memory=${OPTARG}
45 | ;;
46 | v)
47 | wso2_mi_version=${OPTARG}
48 | ;;
49 | m)
50 | heap_size=${OPTARG}
51 | ;;
52 | h)
53 | usage
54 | exit 0
55 | ;;
56 | \?)
57 | usage
58 | exit 1
59 | ;;
60 | esac
61 | done
62 | shift "$((OPTIND - 1))"
63 |
64 | if [[ -z $cpus ]]; then
65 | echo "Please provide the number of CPU resources to be used by the container."
66 | exit 1
67 | fi
68 |
69 | if [[ -z $memory ]]; then
70 | echo "Please provide the maximum amount of memory the container can use."
71 | exit 1
72 | fi
73 |
74 | if [[ -z $wso2_mi_version ]]; then
75 | echo "Please provide WSO2 Micro Integrator version."
76 | exit 1
77 | fi
78 |
79 | if [[ -z $heap_size ]]; then
80 | echo "Please provide the heap size for Micro Integrator."
81 | exit 1
82 | fi
83 |
84 | netty_host=$(getent hosts netty | awk '{ print $1 }')
85 |
86 | echo "Setting Heap to ${heap_size}"
87 | JVM_MEM_OPTS="JVM_MEM_OPTS=-Xms${heap_size} -Xmx${heap_size}"
88 |
89 | echo "Enabling GC Logs"
90 | JAVA_OPTS="JAVA_OPTS=-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/wso2carbon/wso2mi-${wso2_mi_version}/repository/logs/gc.log"
91 |
92 | if [[ ! -d ${HOME}/logs ]]; then
93 | mkdir -p ${HOME}/logs
94 | chmod -R 777 ${HOME}/logs
95 | fi
96 |
97 | echo -n >${HOME}/logs/wso2carbon.log
98 | echo -n >${HOME}/logs/gc.log
99 | chmod o+w ${HOME}/logs/wso2carbon.log
100 | chmod o+w ${HOME}/logs/gc.log
101 |
102 | # Sample CAPP location
103 | capp_dir=$script_dir/capp/
104 |
105 | set -x
106 | docker run --name=microei -d -p 8290:8290 -p 9201:9201 -p 8253:8253 --add-host=netty:$netty_host --cpus=${cpus} --memory=${memory} \
107 | --volume $(realpath $capp_dir):/home/wso2carbon/wso2mi-${wso2_mi_version}/repository/deployment/server/carbonapps \
108 | --volume ${HOME}/logs/wso2carbon.log:/home/wso2carbon/wso2mi-${wso2_mi_version}/repository/logs/wso2carbon.log \
109 | --volume ${HOME}/logs/gc.log:/home/wso2carbon/wso2mi-${wso2_mi_version}/repository/logs/gc.log \
110 | -e "${JVM_MEM_OPTS}" -e "${JAVA_OPTS}" wso2/wso2mi:${wso2_mi_version}
111 |
112 | echo "Waiting for MI to start."
113 |
114 | exit_status=100
115 | n=0
116 | until [ $n -ge 60 ]; do
117 | response_code=$(curl -s -w '%{http_code}' -o /dev/null http://localhost:9201/healthz || echo "")
118 | if [ $response_code -eq 200 ]; then
119 | echo "MI container is up and running"
120 | exit_status=0
121 | break
122 | fi
123 | sleep 5
124 | n=$(($n + 1))
125 | done
126 |
127 | # Wait for 5 seconds to make sure that the server is ready to accept API requests.
128 | sleep 5
129 | exit $exit_status
130 |
--------------------------------------------------------------------------------
/distribution/scripts/cloudformation/run-mi-performance-tests.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright (c) 2018, WSO2 Inc. (http://wso2.org) All Rights Reserved.
3 | #
4 | # WSO2 Inc. licenses this file to you under the Apache License,
5 | # Version 2.0 (the "License"); you may not use this file except
6 | # in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # ----------------------------------------------------------------------------
19 | # Run performance tests on AWS Cloudformation Stacks
20 | # ----------------------------------------------------------------------------
21 |
22 | export script_name="$0"
23 | export script_dir=$(dirname "$0")
24 |
25 | export aws_cloudformation_template_filename="mi_perf_test_cfn.yaml"
26 | export application_name="WSO2 Micro Integrator"
27 | export product_version=""
28 | export ec2_instance_name="mi"
29 | export metrics_file_prefix="mi"
30 | export run_performance_tests_script_name="run-mi-performance-tests.sh"
31 |
32 | export wso2mi_distribution=""
33 | export wso2mi_ec2_instance_type=""
34 |
35 | function usageCommand() {
36 | echo "-e -E "
37 | }
38 | export -f usageCommand
39 |
40 | function usageHelp() {
41 | echo "-e: $application_name Distribution."
42 | echo "-E: Amazon EC2 Instance Type for $application_name."
43 | echo "-V: Product version for $application_name."
44 | }
45 | export -f usageHelp
46 |
47 | while getopts ":u:f:d:k:n:j:o:g:s:b:r:J:S:N:t:p:w:he:E:V:" opt; do
48 | case "${opt}" in
49 | e)
50 | wso2mi_distribution=${OPTARG}
51 | ;;
52 | E)
53 | wso2mi_ec2_instance_type=${OPTARG}
54 | ;;
55 | V)
56 | product_version=${OPTARG}
57 | ;;
58 | *)
59 | opts+=("-${opt}")
60 | [[ -n "$OPTARG" ]] && opts+=("$OPTARG")
61 | ;;
62 | esac
63 | done
64 | shift "$((OPTIND - 1))"
65 |
66 | function validate() {
67 | if [[ ! -f $wso2mi_distribution ]]; then
68 | echo "Please provide $application_name distribution."
69 | exit 1
70 | fi
71 |
72 | export wso2mi_distribution_filename=$(basename $wso2mi_distribution)
73 |
74 | if [[ ${wso2mi_distribution_filename: -4} != ".zip" ]]; then
75 | echo "$application_name distribution must have .zip extension"
76 | exit 1
77 | fi
78 |
79 | if [[ -z $wso2mi_ec2_instance_type ]]; then
80 | echo "Please provide the Amazon EC2 Instance Type for $application_name."
81 | exit 1
82 | fi
83 |
84 | if [[ -z $product_version ]]; then
85 | echo "Please provide the version for $application_name."
86 | exit 1
87 | fi
88 | }
89 | export -f validate
90 |
91 | export application_name=$application_name" "$product_version
92 |
93 | function create_links() {
94 | wso2mi_distribution=$(realpath $wso2mi_distribution)
95 | ln -s $wso2mi_distribution $temp_dir/$wso2mi_distribution_filename
96 | }
97 | export -f create_links
98 |
99 | function get_test_metadata() {
100 | echo "wso2mi_ec2_instance_type=$wso2mi_ec2_instance_type"
101 | }
102 | export -f get_test_metadata
103 |
104 | function get_cf_parameters() {
105 | echo "WSO2MicroIntegratorDistributionName=$wso2mi_distribution_filename"
106 | echo "WSO2MicroIntegratorInstanceType=$wso2mi_ec2_instance_type"
107 | }
108 | export -f get_cf_parameters
109 |
110 | function get_columns() {
111 | echo "Scenario Name"
112 | echo "Heap Size"
113 | echo "Concurrent Users"
114 | echo "Message Size (Bytes)"
115 | echo "Back-end Service Delay (ms)"
116 | echo "Error %"
117 | echo "Throughput (Requests/sec)"
118 | echo "Average Response Time (ms)"
119 | echo "Standard Deviation of Response Time (ms)"
120 | echo "99th Percentile of Response Time (ms)"
121 | echo "$application_name GC Throughput (%)"
122 | echo "Average $application_name Memory Footprint After Full GC (M)"
123 | }
124 | export -f get_columns
125 |
126 | $script_dir/cloudformation-common.sh "${opts[@]}" -- "$@"
127 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/50Elements_buyStocks.xml:
--------------------------------------------------------------------------------
1 |
2 | IBMjohn140.3450
3 | IBMjohn140.3449
4 | IBMjohn140.3448
5 | IBMjohn140.3447
6 | IBMjohn140.3446
7 | IBMjohn140.3445
8 | IBMjohn140.3444
9 | IBMjohn140.3443
10 | IBMjohn140.3442
11 | IBMjohn140.3441
12 | IBMjohn140.3440
13 | IBMjohn140.3439
14 | IBMjohn140.3438
15 | IBMjohn140.3437
16 | IBMjohn140.3436
17 | IBMjohn140.3435
18 | IBMjohn140.3434
19 | IBMjohn140.3433
20 | IBMjohn140.3432
21 | IBMjohn140.3431
22 | IBMjohn140.3430
23 | IBMjohn140.3429
24 | IBMjohn140.3428
25 | IBMjohn140.3427
26 | IBMjohn140.3426
27 | IBMjohn140.3425
28 | IBMjohn140.3424
29 | IBMjohn140.3423
30 | IBMjohn140.3422
31 | IBMjohn140.3421
32 | IBMjohn140.3420
33 | IBMjohn140.3419
34 | IBMjohn140.3418
35 | IBMjohn140.3417
36 | IBMjohn140.3416
37 | IBMjohn140.3415
38 | IBMjohn140.3414
39 | IBMjohn140.3413
40 | IBMjohn140.3412
41 | IBMjohn140.3411
42 | IBMjohn140.3410
43 | IBMjohn140.349
44 | IBMjohn140.348
45 | IBMjohn140.347
46 | IBMjohn140.346
47 | IBMjohn140.345
48 | IBMjohn140.344
49 | IBMjohn140.343
50 | IBMjohn140.342
51 | IBMjohn140.341
52 |
53 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/ei-test-json.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | continue
16 |
17 | false
18 | -1
19 |
20 | ${__P(users)}
21 | ${__P(rampUpPeriod,60)}
22 | 1492579439000
23 | 1491462821000
24 | true
25 | ${__P(duration)}
26 |
27 |
28 |
29 |
30 |
31 |
32 | Content-Type
33 | application/json
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | ${__P(payload)}
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | ${__P(host,localhost)}
52 | ${__P(port,8243)}
53 | ${__P(protocol,https)}
54 |
55 | ${__P(path)}
56 | POST
57 | true
58 | false
59 | true
60 | false
61 |
62 | HttpClient4
63 | 120000
64 | 120000
65 |
66 |
67 |
68 |
69 | ${__P(response_pattern)}
70 |
71 | Assertion.response_data
72 | false
73 | 16
74 | Test failed!
75 |
76 |
77 |
78 |
79 |
80 | true
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/ei-test-without-soap.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | continue
16 |
17 | false
18 | -1
19 |
20 | ${__P(users)}
21 | ${__P(rampUpPeriod,60)}
22 | 1492579439000
23 | 1491462821000
24 | true
25 | ${__P(duration)}
26 |
27 |
28 |
29 |
30 |
31 |
32 | Content-Type
33 | text/xml
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | ${__P(payload)}
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | ${__P(host,localhost)}
52 | ${__P(port,8243)}
53 | ${__P(protocol,https)}
54 |
55 | ${__P(path)}
56 | POST
57 | true
58 | false
59 | true
60 | false
61 |
62 | HttpClient4
63 | 120000
64 | 120000
65 |
66 |
67 |
68 |
69 | ${__P(response_pattern)}
70 |
71 | Assertion.response_data
72 | false
73 | 16
74 | Test failed!
75 |
76 |
77 |
78 |
79 |
80 | true
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/ei-test.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | continue
16 |
17 | false
18 | -1
19 |
20 | ${__P(users)}
21 | ${__P(rampUpPeriod,60)}
22 | 1492579439000
23 | 1491462821000
24 | true
25 | ${__P(duration)}
26 |
27 |
28 |
29 |
30 |
31 |
32 | SOAPAction
33 | urn:buyStocks
34 |
35 |
36 | routing
37 | xadmin;server1;community#1.0##
38 |
39 |
40 | Content-Type
41 | text/xml
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | ${__P(payload)}
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | ${__P(host,localhost)}
60 | ${__P(port,8243)}
61 | ${__P(protocol,https)}
62 |
63 | ${__P(path)}
64 | POST
65 | true
66 | false
67 | true
68 | false
69 |
70 | HttpClient4
71 | 120000
72 | 120000
73 |
74 |
75 |
76 |
77 | ${__P(response_pattern)}
78 |
79 | Assertion.response_data
80 | false
81 | 16
82 | Test failed!
83 |
84 |
85 |
86 |
87 |
88 | true
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/security_policy_1.0.0/security_policy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 | wso2carbon
83 | useReqSigCert
84 | true
85 | 300
86 | 300
87 | false
88 | org.wso2.carbon.security.util.SecurityTokenStore
89 |
90 | 300
91 |
92 |
94 | wso2carbon
95 | wso2carbon.jks
96 | -1234
97 | wso2carbon.jks
98 | wso2carbon
99 |
100 |
101 |
102 |
104 | wso2carbon
105 | wso2carbon.jks
106 | -1234
107 | wso2carbon.jks
108 | wso2carbon
109 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/components/perftest-capp/src/main/capp/PayloadFactoryWith20ElementsProxy_1.0.0/PayloadFactoryWith20ElementsProxy-1.0.0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | $1
10 | john
11 | 140.34
12 | 1
13 |
14 |
15 | $1
16 | john
17 | 140.34
18 | 1
19 |
20 |
21 | $1
22 | john
23 | 140.34
24 | 1
25 |
26 |
27 | $1
28 | john
29 | 140.34
30 | 1
31 |
32 |
33 | $1
34 | john
35 | 140.34
36 | 1
37 |
38 |
39 | $1
40 | john
41 | 140.34
42 | 1
43 |
44 |
45 | $1
46 | john
47 | 140.34
48 | 1
49 |
50 |
51 | $1
52 | john
53 | 140.34
54 | 1
55 |
56 |
57 | $1
58 | john
59 | 140.34
60 | 1
61 |
62 |
63 | $1
64 | john
65 | 140.34
66 | 1
67 |
68 |
69 | $1
70 | john
71 | 140.34
72 | 1
73 |
74 |
75 | $1
76 | john
77 | 140.34
78 | 1
79 |
80 |
81 | $1
82 | john
83 | 140.34
84 | 1
85 |
86 |
87 | $1
88 | john
89 | 140.34
90 | 1
91 |
92 |
93 | $1
94 | john
95 | 140.34
96 | 1
97 |
98 |
99 | $1
100 | john
101 | 140.34
102 | 1
103 |
104 |
105 | $1
106 | john
107 | 140.34
108 | 1
109 |
110 |
111 | $1
112 | john
113 | 140.34
114 | 1
115 |
116 |
117 | $1
118 | john
119 | 140.34
120 | 1
121 |
122 |
123 | $1
124 | john
125 | 140.34
126 | 1
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 | org.wso2
21 | wso2
22 | 5
23 |
24 |
25 | 4.0.0
26 | org.wso2.performance.ei
27 | performance-ei
28 | 0.1.0-SNAPSHOT
29 | pom
30 | Artifacts for WSO2 Enterprise Integrator Performance Tests
31 | 2018
32 | http://wso2.com
33 |
34 |
35 |
36 | The Apache Software License, Version 2.0
37 | http://www.apache.org/licenses/LICENSE-2.0.txt
38 | repo
39 |
40 |
41 |
42 |
43 | https://github.com/wso2/performance-ei.git
44 | scm:git:https://github.com/wso2/performance-ei.git
45 | scm:git:https://github.com/wso2/performance-ei.git
46 | HEAD
47 |
48 |
49 |
50 | components/perftest-capp
51 | distribution
52 |
53 |
54 |
55 |
56 |
57 | org.wso2.performance.common
58 | performance-common-distribution
59 | ${performance.common.version}
60 | tar.gz
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 | org.apache.maven.plugins
69 | maven-release-plugin
70 | ${maven.release.plugin.version}
71 |
72 | clean install
73 | true
74 |
75 |
76 |
77 | org.apache.maven.plugins
78 | maven-deploy-plugin
79 | ${maven.deploy.plugin.version}
80 |
81 |
82 | org.apache.maven.plugins
83 | maven-compiler-plugin
84 | ${maven.compiler.plugin.version}
85 |
86 | 1.8
87 | 1.8
88 | -Xlint:unchecked
89 |
90 |
91 |
92 | org.apache.maven.plugins
93 | maven-javadoc-plugin
94 | ${maven.javadoc.plugin.version}
95 |
96 |
97 | org.apache.maven.plugins
98 | maven-source-plugin
99 | ${maven.source.plugin.version}
100 |
101 |
102 | org.codehaus.mojo
103 | findbugs-maven-plugin
104 | ${findbugs.maven.plugin.version}
105 |
106 | Max
107 | Low
108 | true
109 | ${project.parent.basedir}/findbugs-exclude.xml
110 |
111 |
112 |
113 |
114 | check
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 | pedantic
125 |
126 |
127 |
128 | org.apache.rat
129 | apache-rat-plugin
130 | ${apache.rat.plugin.version}
131 |
132 |
133 | **/*.md
134 | **/*.jmx
135 | **/dependency-reduced-pom.xml
136 |
137 |
138 |
139 |
140 | verify
141 |
142 | check
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 | UTF-8
154 | 0.1.0-SNAPSHOT
155 | 0.4.6-SNAPSHOT
156 |
157 | 2.5.3
158 | 2.8.2
159 | 3.6.1
160 | 2.10.4
161 | 3.0.1
162 | 3.1.1
163 | 0.12
164 | 3.0.4
165 |
166 |
167 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Artifacts for WSO2 Enterprise Integrator Performance Tests
2 |
3 | ---
4 | | Branch | Build Status |
5 | | :------ |:------------ |
6 | | master | [](https://wso2.org/jenkins/job/platform-builds/job/performance-ei/) |
7 | ---
8 |
9 | This repository has artifacts to be used for WSO2 Enterprise Integrator Performance Tests.
10 |
11 | The [distribution](distribution) directory has the scripts and the Maven project to build the final distribution package
12 | to be used for performance tests.
13 |
14 | The package (**performance-ei-distribution-${version}.tar.gz**) built by the distribution maven module is the
15 | package required for Enterprise Integrator performance tests from this repository.
16 |
17 | The (**performance-common-distribution-${version}.tar.gz**) package is also required for performance tests.
18 |
19 | The scripts in this repository depend on the scripts in
20 | "[performance-common](https://github.com/wso2/performance-common/)" repository.
21 |
22 | **Note:** The scripts are only compatible with **WSO2 Enterprise Integrator 6.x.x**.
23 |
24 | Following is the recommended deployment for performance testing.
25 |
26 | 
27 |
28 | ## Package contents
29 |
30 | Following is the tree view of the contents inside distribution package.
31 |
32 | ```
33 | |-- ei
34 | | |-- capp
35 | | | `-- ESBPerformanceTestArtifacts_1.0.0.car
36 | | |-- ei-start.sh
37 | | `-- setup.sh
38 | `-- jmeter
39 | |-- ei-test.jmx
40 | |-- requests
41 | | |-- 100K_buyStocks_secure.xml
42 | | |-- 100K_buyStocks.xml
43 | | |-- 10K_buyStocks_secure.xml
44 | | |-- 10K_buyStocks.xml
45 | | |-- 1K_buyStocks_secure.xml
46 | | |-- 1K_buyStocks.xml
47 | | |-- 200K_buyStocks.xml
48 | | |-- 500B_buyStocks_secure.xml
49 | | |-- 500B_buyStocks.xml
50 | | |-- 500K_buyStocks_secure.xml
51 | | |-- 500K_buyStocks.xml
52 | | |-- 5K_buyStocks_secure.xml
53 | | `-- 5K_buyStocks.xml
54 | `-- run-performance-test.sh
55 | ```
56 |
57 | Each directory has executable scripts.
58 |
59 | This package must be extracted in user home directory of all JMeter nodes and the Enterprise Integrator node used for the
60 | performance tests.
61 |
62 | In addition, please make sure to extract the "performance-common" package to all nodes and install Java, JMeter, and SAR
63 | to all nodes by using scripts provided.
64 |
65 | **Note:** These scripts will work only on Debian based systems like Ubuntu.
66 |
67 | See following sections for more details.
68 |
69 | ### WSO2 Enterprise Integrator
70 |
71 | The "ei" directory has the scripts related to WSO2 Enterprise Integrator and the configurations. These scripts must be run in
72 | WSO2 Enterprise Integrator node.
73 |
74 | Following sections have more details about each script.
75 |
76 | #### setup.sh
77 |
78 | The `setup.sh` script extracts WSO2 Enterprise Integrator to user home directory and copies the CAPP containing the services.
79 |
80 | How to run:
81 |
82 | `./setup.sh netty_host`
83 |
84 | #### ei-start.sh
85 |
86 | This script starts the WSO2 Enterprise Integrator with the given Java heap size and enable Garbage Collection (GC) logs in the
87 | server.
88 |
89 | How to run:
90 |
91 | `./ei-start.sh wso2ei-6.1.1 4`
92 |
93 | Above example will start the Enterprise Integrator version 6.1.1 with 4GB of heap.
94 |
95 | **Note:** This script is called from `setup.sh` and the performance test script.
96 |
97 | ### Apache JMeter
98 |
99 | Inside "jmeter", directory there are scripts to run the performance tests and create a summary CSV from the JMeter
100 | results.
101 |
102 | #### run-performance-test.sh
103 |
104 | The `run-performance-test.sh` script runs the performance tests for different test scenarios. This script must be used
105 | in the JMeter client node and it uses the two JMeter servers to load test WSO2 Enterprise Integrator
106 |
107 | This script is using ssh config to connect with other nodes from JMeter client and get server metrics and log files.
108 | Therefore, it is important use a configuration as follows in `~/.ssh/config`
109 |
110 | ```
111 | Host jmeter1
112 | HostName x.x.x.1
113 | User ubuntu
114 | IdentityFile ~/keys/ei.pem
115 |
116 | Host jmeter2
117 | HostName x.x.x.2
118 | User ubuntu
119 | IdentityFile ~/keys/ei.pem
120 |
121 | Host ei
122 | HostName x.x.x.3
123 | User ubuntu
124 | IdentityFile ~/keys/ei.pem
125 |
126 | Host netty
127 | HostName x.x.x.4
128 | User ubuntu
129 | IdentityFile ~/keys/ei.pem
130 | ```
131 |
132 | There are multiple parameters inside the script and the values should be changed as required.
133 |
134 | Parameter | Description
135 | ------------ | -------------
136 | concurrent_users | The different number of concurrent users. This an array and the brackets are important.
137 | backend_sleep_time | The different backend sleep times in milliseconds. This is an array.
138 | proxy_types | Different proxy types used for tests. Default `proxy_types=(DirectProxy CBRProxy CBRSOAPHeaderProxy CBRTransportHeaderProxy SecureProxy XSLTEnhancedProxy XSLTProxy`)
139 | request_payloads | Payloads used for proxy types excepts for SecureProxy
140 | secure_payloads | Payloads used for SecureProxy
141 | ei_host | The Enterprise Integrator IP
142 | ei_ssh_host | The ssh host for the API Manager node
143 | backend_ssh_host | The ssh host for the node with Netty HTTP Echo Service
144 | netty_port | The port of Netty HTTP Echo Service. Default: 9000
145 | test_duration | Duration of the test in seconds.
146 | warmup_time | The warmup time in minutes. This is used for JTL Splitter, which is from `performance-common`
147 | jmeter1_host | The hostname or IP of the JMeter Server 01
148 | jmeter2_host | The hostname or IP of the JMeter Server 02
149 | jmeter1_ssh_host | The ssh host for the JMeter Server 01
150 | jmeter2_ssh_host | The ssh host for the JMeter Server 02
151 | heap_size | Heap Size in GBs
152 |
153 | After changing parameters, the performance tests can be started from the script in the JMeter Client node as shown in
154 | above diagram. It's recommended to run the tests in `nohup` mode.
155 |
156 | For example:
157 |
158 | `nohup ./run-performance-test.sh > test.out 2>&1 &`
159 |
160 | The results of performance tests will be saved in `results` directory.
161 |
162 | #### create-summary-csv.sh
163 |
164 | After the performance tests are completed, a summary CSV for all results can be created using this script file.
165 |
166 | The script expects the [GCViewer](https://github.com/chewiebug/GCViewer) jar file to analyze GC logs. The latest
167 | GCViewer JAR file can be downloaded from [Maven](http://repo1.maven.org/maven2/com/github/chewiebug/gcviewer/)
168 |
169 | The script must be run inside the results directory.
170 |
171 | How to run:
172 |
173 | `~/jmeter/create-summary-csv.sh /path/to/gcviewer*.jar`
174 |
175 | ## Steps to run performance tests
176 |
177 | Following are the high-level steps to run the performance tests.
178 |
179 | * Copy the `performance-ei` and `performance-common` packages to all servers.
180 | * Extract the packages in user home directory
181 | * Download latest Oracle JDK 8 to all servers.
182 | * Download latest Apache JMeter to all JMeter servers.
183 | * Download WSO2 Enterprise Integrator product to EI server.
184 | * Install Java in all servers using the `install-java.sh` script inside `java` directory.
185 | * Install 'System Activity Report' in all servers using the `install-sar.sh` script inside `sar` directory.
186 | * Install 'Apache JMeter' in all JMeter servers using the `install-jmeter.sh` script inside `jmeter` directory
187 | * Setup WSO2 Enterprise Integrator in EI server using `setup.sh` script.
188 | * Run the performance test using `run-performance-test.sh` script.
189 | * Use `create-summary-csv.sh` to generate a summary.csv file from the test results.
190 |
191 | ## License
192 |
193 | Copyright 2018 WSO2 Inc. (http://wso2.com)
194 |
195 | Licensed under the Apache License, Version 2.0
196 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/performance-test-scenarios.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | # Copyright (c) 2018, WSO2 Inc. (http://wso2.org) All Rights Reserved.
3 | #
4 | # WSO2 Inc. licenses this file to you under the Apache License,
5 | # Version 2.0 (the "License"); you may not use this file except
6 | # in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | #
18 | # ----------------------------------------------------------------------------
19 | # Performance Test Scenarios
20 | # ----------------------------------------------------------------------------
21 |
22 | # Message Sizes in bytes for sample payloads
23 | declare -a available_message_sizes=("500" "1000" "10000" "100000" "200000" "500000" "1000000")
24 | declare -a available_message_iterations=("5" "10" "20" "50" "100")
25 |
26 | # Verifying if payloads for each message size exists in the 'requests' directory
27 | function verifyRequestPayloads() {
28 | for i in "$@"; do
29 | if ! ls $script_dir/requests/${i}B_buyStocks*.xml 1>/dev/null 2>&1; then
30 | echo "ERROR: Payload file for $i bytes is missing!"
31 | exit 1
32 | fi
33 | done
34 | }
35 |
36 | # Verifying if payloads for each message size exists in the 'requests' directory
37 | function verifyIteratePayloads() {
38 | for i in "$@"; do
39 | if ! ls $script_dir/requests/${i}Elements_buyStocks*.xml 1>/dev/null 2>&1; then
40 | echo "ERROR: Payload file for $i elements is missing!"
41 | exit 1
42 | fi
43 | done
44 | }
45 |
46 | verifyRequestPayloads "${available_message_sizes[@]}"
47 | verifyRequestPayloads "${message_sizes_array[@]}"
48 |
49 | verifyIteratePayloads "${message_iteratations_array[@]}"
50 | verifyIteratePayloads "${message_iteratations_array[@]}"
51 |
52 | # Test scenarios
53 | declare -A test_scenario0=(
54 | [name]="DirectProxy"
55 | [display_name]="Direct Proxy"
56 | [description]="Passthrough proxy service"
57 | [path]="/services/DirectProxy/buyStocksOperation"
58 | [jmx]="ei-test.jmx"
59 | [protocol]="http"
60 | [use_backend]=true
61 | [skip]=false
62 | )
63 | declare -A test_scenario1=(
64 | [name]="CBRProxy"
65 | [display_name]="CBR Proxy"
66 | [description]="Routing the message based on the content of the message body"
67 | [path]="/services/CBRProxy/buyStocksOperation"
68 | [jmx]="ei-test.jmx"
69 | [protocol]="http"
70 | [use_backend]=true
71 | [skip]=false
72 | )
73 | declare -A test_scenario2=(
74 | [name]="CBRSOAPHeaderProxy"
75 | [display_name]="CBR SOAP Header Proxy"
76 | [description]="Routing the message based on a SOAP header in the message payload"
77 | [path]="/services/CBRSOAPHeaderProxy/buyStocksOperation"
78 | [jmx]="ei-test.jmx"
79 | [protocol]="http"
80 | [use_backend]=true
81 | [skip]=false
82 | )
83 | declare -A test_scenario3=(
84 | [name]="CBRTransportHeaderProxy"
85 | [display_name]="CBR Transport Header Proxy"
86 | [description]="Routing the message based on an HTTP header in the message"
87 | [path]="/services/CBRTransportHeaderProxy/buyStocksOperation"
88 | [jmx]="ei-test.jmx"
89 | [protocol]="http"
90 | [use_backend]=true
91 | [skip]=false
92 | )
93 | declare -A test_scenario4=(
94 | [name]="SecureProxy"
95 | [display_name]="Secure Proxy"
96 | [description]="Secured proxy service"
97 | [path]="/services/SecureProxy/buyStocksOperation"
98 | [jmx]="ei-test.jmx"
99 | [protocol]="https"
100 | [use_backend]=true
101 | [skip]=false
102 | )
103 | declare -A test_scenario5=(
104 | [name]="XSLTEnhancedProxy"
105 | [display_name]="XSLT Enhanced Proxy"
106 | [description]="Having enhanced, Fast XSLT transformations in request and response paths"
107 | [path]="/services/XSLTEnhancedProxy/buyStocksOperation"
108 | [jmx]="ei-test.jmx"
109 | [protocol]="http"
110 | [use_backend]=true
111 | [skip]=false
112 | )
113 | declare -A test_scenario10=(
114 | [name]="XSLTProxy"
115 | [display_name]="XSLT Proxy"
116 | [description]="Having XSLT transformations in request and response paths"
117 | [path]="/services/XSLTProxy/buyStocksOperation"
118 | [jmx]="ei-test.jmx"
119 | [protocol]="http"
120 | [use_backend]=true
121 | [skip]=false
122 | )
123 | declare -A test_scenario11=(
124 | [name]="DirectAPI"
125 | [display_name]="Direct API"
126 | [description]="Passthrough API service"
127 | [path]="/directApi"
128 | [jmx]="ei-test.jmx"
129 | [protocol]="http"
130 | [use_backend]=true
131 | [skip]=false
132 | )
133 | declare -A test_scenario12=(
134 | [name]="MessageBuildingProxy"
135 | [display_name]="Message Building Proxy"
136 | [description]="Message Building Proxy service"
137 | [path]="/services/MessageBuildingProxy"
138 | [jmx]="ei-test.jmx"
139 | [protocol]="http"
140 | [use_backend]=true
141 | [skip]=false
142 | )
143 | declare -A test_scenario14=(
144 | [name]="CloneAndAggregateWithTwoBackendProxy"
145 | [display_name]="Clone & Aggregate With 2 Backend Proxy"
146 | [description]="Clone payload and send to 2 backends and aggregate the response back"
147 | [path]="/services/CloneAndAggregateWithTwoBackendProxy"
148 | [jmx]="ei-test.jmx"
149 | [protocol]="http"
150 | [use_backend]=true
151 | [skip]=false
152 | )
153 | declare -A test_scenario15=(
154 | [name]="CloneAndAggregateWithFourBackendProxy"
155 | [display_name]="Clone & Aggregate With 4 Backend Proxy"
156 | [description]="Clone payload and send to 4 backends and aggregate the response back"
157 | [path]="/services/CloneAndAggregateWithTwoBackendProxy"
158 | [jmx]="ei-test.jmx"
159 | [protocol]="http"
160 | [use_backend]=true
161 | [skip]=false
162 | )
163 | declare -A test_scenario16=(
164 | [name]="CloneAndAggregateWithEightBackendProxy"
165 | [display_name]="Clone & Aggregate With 8 Backend Proxy"
166 | [description]="Clone payload and send to 8 backends and aggregate the response back"
167 | [path]="/services/CloneAndAggregateWithTwoBackendProxy"
168 | [jmx]="ei-test.jmx"
169 | [protocol]="http"
170 | [use_backend]=true
171 | [skip]=false
172 | )
173 | declare -A test_scenario17=(
174 | [name]="EnrichBackAndForthProxy"
175 | [display_name]="Enrich Back & Forth Proxy"
176 | [description]="Enrich payload to a property and enrich back in the response"
177 | [path]="/services/EnrichBackAndForthProxy"
178 | [jmx]="ei-test.jmx"
179 | [protocol]="http"
180 | [use_backend]=true
181 | [skip]=false
182 | )
183 | declare -A test_scenario18=(
184 | [name]="IterateAndAggregateProxy"
185 | [display_name]="Iterate and Aggregate Proxy"
186 | [description]="Iterate over a payload and call backend and aggregate the response"
187 | [path]="/services/IterateAndAggregateProxy"
188 | [jmx]="ei-test-without-soap.jmx"
189 | [protocol]="http"
190 | [use_backend]=true
191 | [skip]=false
192 | )
193 | declare -A test_scenario19=(
194 | [name]="XSLTTransformProxy"
195 | [display_name]="XSLT Transform Proxy"
196 | [description]="Do a XSLT Transformation"
197 | [path]="/services/XSLTTransformProxy"
198 | [jmx]="ei-test-without-soap.jmx"
199 | [protocol]="http"
200 | [use_backend]=true
201 | [skip]=false
202 | )
203 | declare -A test_scenario20=(
204 | [name]="DatamapperProxy"
205 | [display_name]="Datamapper Transform Proxy"
206 | [description]="Do a XML transformation same as XSLTTransformProxy"
207 | [path]="/services/DatamapperProxy"
208 | [jmx]="ei-test-without-soap.jmx"
209 | [protocol]="http"
210 | [use_backend]=true
211 | [skip]=false
212 | )
213 | declare -A test_scenario21=(
214 | [name]="PayloadFactoryWith20ElementsProxy"
215 | [display_name]="PayloadFactory with 20 Elements Proxy"
216 | [description]="Do a XML transformation same as XSLTTransformProxy"
217 | [path]="/services/PayloadFactoryWith20ElementsProxy"
218 | [jmx]="ei-test-without-soap.jmx"
219 | [protocol]="http"
220 | [use_backend]=true
221 | [skip]=false
222 | )
223 | declare -A test_scenario22=(
224 | [name]="PayloadFactoryWith50ElementsProxy"
225 | [display_name]="PayloadFactory with 50 Elements Proxy"
226 | [description]="Do a XML transformation same as XSLTTransformProxy"
227 | [path]="/services/PayloadFactoryWith50ElementsProxy"
228 | [jmx]="ei-test-without-soap.jmx"
229 | [protocol]="http"
230 | [use_backend]=true
231 | [skip]=false
232 | )
233 | declare -A test_scenario23=(
234 | [name]="PayloadFactoryWith100ElementsProxy"
235 | [display_name]="PayloadFactory with 100 Elements Proxy"
236 | [description]="Do a XML transformation same as XSLTTransformProxy"
237 | [path]="/services/PayloadFactoryWith100ElementsProxy"
238 | [jmx]="ei-test-without-soap.jmx"
239 | [protocol]="http"
240 | [use_backend]=true
241 | [skip]=false
242 | )
243 | declare -A test_scenario24=(
244 | [name]="JsonToSOAPProxy"
245 | [display_name]="JSON to SOAP Transformation"
246 | [description]="Convert JSON payload to SOAP format and send to the back end"
247 | [path]="/services/JsonToSOAPProxy"
248 | [jmx]="ei-test-json.jmx"
249 | [protocol]="http"
250 | [use_backend]=true
251 | [skip]=false
252 | )
253 | declare -A test_scenario25=(
254 | [name]="DirectHTTPSAPI"
255 | [display_name]="Direct HTTPS API"
256 | [description]="Passthrough API HTTPS service"
257 | [path]="/directApi"
258 | [jmx]="ei-test.jmx"
259 | [protocol]="https"
260 | [use_backend]=true
261 | [skip]=false
262 | )
263 |
264 |
--------------------------------------------------------------------------------
/distribution/scripts/jmeter/requests/100Elements_buyStocks.xml:
--------------------------------------------------------------------------------
1 |
2 | IBMjohn140.34100
3 | IBMjohn140.3499
4 | IBMjohn140.3498
5 | IBMjohn140.3497
6 | IBMjohn140.3496
7 | IBMjohn140.3495
8 | IBMjohn140.3494
9 | IBMjohn140.3493
10 | IBMjohn140.3492
11 | IBMjohn140.3491
12 | IBMjohn140.3490
13 | IBMjohn140.3489
14 | IBMjohn140.3488
15 | IBMjohn140.3487
16 | IBMjohn140.3486
17 | IBMjohn140.3485
18 | IBMjohn140.3484
19 | IBMjohn140.3483
20 | IBMjohn140.3482
21 | IBMjohn140.3481
22 | IBMjohn140.3480
23 | IBMjohn140.3479
24 | IBMjohn140.3478
25 | IBMjohn140.3477
26 | IBMjohn140.3476
27 | IBMjohn140.3475
28 | IBMjohn140.3474
29 | IBMjohn140.3473
30 | IBMjohn140.3472
31 | IBMjohn140.3471
32 | IBMjohn140.3470
33 | IBMjohn140.3469
34 | IBMjohn140.3468
35 | IBMjohn140.3467
36 | IBMjohn140.3466
37 | IBMjohn140.3465
38 | IBMjohn140.3464
39 | IBMjohn140.3463
40 | IBMjohn140.3462
41 | IBMjohn140.3461
42 | IBMjohn140.3460
43 | IBMjohn140.3459
44 | IBMjohn140.3458
45 | IBMjohn140.3457
46 | IBMjohn140.3456
47 | IBMjohn140.3455
48 | IBMjohn140.3454
49 | IBMjohn140.3453
50 | IBMjohn140.3452
51 | IBMjohn140.3451
52 | IBMjohn140.3450
53 | IBMjohn140.3449
54 | IBMjohn140.3448
55 | IBMjohn140.3447
56 | IBMjohn140.3446
57 | IBMjohn140.3445
58 | IBMjohn140.3444
59 | IBMjohn140.3443
60 | IBMjohn140.3442
61 | IBMjohn140.3441
62 | IBMjohn140.3440
63 | IBMjohn140.3439
64 | IBMjohn140.3438
65 | IBMjohn140.3437
66 | IBMjohn140.3436
67 | IBMjohn140.3435
68 | IBMjohn140.3434
69 | IBMjohn140.3433
70 | IBMjohn140.3432
71 | IBMjohn140.3431
72 | IBMjohn140.3430
73 | IBMjohn140.3429
74 | IBMjohn140.3428
75 | IBMjohn140.3427
76 | IBMjohn140.3426
77 | IBMjohn140.3425
78 | IBMjohn140.3424
79 | IBMjohn140.3423
80 | IBMjohn140.3422
81 | IBMjohn140.3421
82 | IBMjohn140.3420
83 | IBMjohn140.3419
84 | IBMjohn140.3418
85 | IBMjohn140.3417
86 | IBMjohn140.3416
87 | IBMjohn140.3415
88 | IBMjohn140.3414
89 | IBMjohn140.3413
90 | IBMjohn140.3412
91 | IBMjohn140.3411
92 | IBMjohn140.3410
93 | IBMjohn140.349
94 | IBMjohn140.348
95 | IBMjohn140.347
96 | IBMjohn140.346
97 | IBMjohn140.345
98 | IBMjohn140.344
99 | IBMjohn140.343
100 | IBMjohn140.342
101 | IBMjohn140.341
102 |
103 |
--------------------------------------------------------------------------------