chore(autitest): start emqx 5.0

This commit is contained in:
mengzhenyu 2021-12-14 19:04:34 +08:00
parent efa7560a15
commit 47a27aa223
1 changed files with 359 additions and 358 deletions

View File

@ -5,7 +5,8 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
on: on:
workflow_dispatch: push:
# workflow_dispatch:
jobs: jobs:
build: build:
@ -107,364 +108,364 @@ jobs:
echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip3 }} echo ${{ steps.emqx_private_ip.outputs.emqx_node_ip3 }}
echo ${{ steps.emqx_private_ip.outputs.emqx_public_ip }} echo ${{ steps.emqx_private_ip.outputs.emqx_public_ip }}
xmeter_start: # xmeter_start:
runs-on: ubuntu-latest # runs-on: ubuntu-latest
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}
aws-region: ap-southeast-1
- name: Start Xmeter Services
run: |
aws ec2 start-instances --instance-ids i-0dd6d99916baaa1a8
aws ec2 start-instances --instance-ids i-05222103df01eb2d7
sleep 40;
aws ec2 start-instances --instance-ids i-0c5dccd394ed9be18
aws ec2 start-instances --instance-ids i-04c1c50b3e4952266
terraform_mysql:
runs-on: ubuntu-latest
outputs:
mysql_ip: ${{ steps.mysql_ip.outputs.mysql_ip }}
mysql_url: ${{ steps.mysql_url.outputs.mysql_url }}
steps:
- name: Checkout tf-test-automation
uses: actions/checkout@v2
with:
repository: emqx/tf-test-automation
ref: emqx-broker
path: tf-test-automation
- name: Setup Terraform
uses: hashicorp/setup-terraform@v1.3.2
with:
terraform_wrapper: false
- name: Terraform Init tf-test-automation
working-directory: ./tf-test-automation/services/mysql
id: init1
run: |
terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
- name: Terraform Validate tf-test-automation
working-directory: ./tf-test-automation/services/mysql
id: validate1
run: terraform validate -no-color
- name: Terraform Apply tf-test-automation
working-directory: ./tf-test-automation/services/mysql
id: mysql_url
run: |
terraform apply -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
echo "::set-output name=mysql_url::$(terraform output endpoint)"
- name: Rename and upload mysql tfstate
working-directory: ./tf-test-automation/services/mysql
run: |
mv ./terraform.tfstate ./mysql.tfstate
- uses: actions/upload-artifact@v2
if: always()
with:
name: tfstate
path: ./tf-test-automation/services/mysql/mysql.tfstate
- name: Show mysql url
id: mysql_ip
run: |
ip=`echo "${{ steps.mysql_url.outputs.mysql_url }}"|awk -F ':' '{print $1}'`
echo "::set-output name=mysql_ip::$ip"
- name: Show mysql ip
run: |
echo ${{ steps.mysql_url.outputs.mysql_url }}
echo ${{ steps.mysql_ip.outputs.mysql_ip }}
# #
terraform_redis: # steps:
runs-on: ubuntu-latest # - name: Configure AWS Credentials
# uses: aws-actions/configure-aws-credentials@v1
outputs: # with:
redis_ip: ${{ steps.redis_ip.outputs.redis_ip }} # aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}
steps: # aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}
- name: Checkout tf-test-automation # aws-region: ap-southeast-1
uses: actions/checkout@v2 # - name: Start Xmeter Services
with: # run: |
repository: emqx/tf-test-automation # aws ec2 start-instances --instance-ids i-0dd6d99916baaa1a8
ref: emqx-broker # aws ec2 start-instances --instance-ids i-05222103df01eb2d7
path: tf-test-automation # sleep 40;
- name: Setup Terraform # aws ec2 start-instances --instance-ids i-0c5dccd394ed9be18
uses: hashicorp/setup-terraform@v1.3.2 # aws ec2 start-instances --instance-ids i-04c1c50b3e4952266
with: #
terraform_wrapper: false # terraform_mysql:
- name: Terraform Init tf-test-automation # runs-on: ubuntu-latest
working-directory: ./tf-test-automation/services/redis #
id: init # outputs:
run: | # mysql_ip: ${{ steps.mysql_ip.outputs.mysql_ip }}
terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # mysql_url: ${{ steps.mysql_url.outputs.mysql_url }}
- name: Terraform Validate tf-test-automation # steps:
working-directory: ./tf-test-automation/services/redis # - name: Checkout tf-test-automation
id: validate # uses: actions/checkout@v2
run: terraform validate -no-color # with:
- name: Terraform Apply tf-test-automation # repository: emqx/tf-test-automation
working-directory: ./tf-test-automation/services/redis # ref: emqx-broker
id: redis_ip # path: tf-test-automation
run: | # - name: Setup Terraform
terraform apply -auto-approve -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}" # uses: hashicorp/setup-terraform@v1.3.2
echo "::set-output name=redis_ip::$(terraform output redis_private_ips)" # with:
- name: Rename and upload redis server tfstate # terraform_wrapper: false
working-directory: ./tf-test-automation/services/redis # - name: Terraform Init tf-test-automation
run: | # working-directory: ./tf-test-automation/services/mysql
mv ./terraform.tfstate ./redis.tfstate # id: init1
- uses: actions/upload-artifact@v2 # run: |
if: always() # terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
with: # - name: Terraform Validate tf-test-automation
name: tfstate # working-directory: ./tf-test-automation/services/mysql
path: ./tf-test-automation/services/redis/redis.tfstate # id: validate1
- name: Show redis ip # run: terraform validate -no-color
run: | # - name: Terraform Apply tf-test-automation
echo ${{ steps.redis_ip.outputs.redis_ip }} # working-directory: ./tf-test-automation/services/mysql
# id: mysql_url
terraform_pgsql: # run: |
runs-on: ubuntu-latest # terraform apply -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
# echo "::set-output name=mysql_url::$(terraform output endpoint)"
outputs: # - name: Rename and upload mysql tfstate
pgsql_url: ${{ steps.pgsql_url.outputs.pgsql_url }} # working-directory: ./tf-test-automation/services/mysql
pgsql_ip: ${{ steps.pgsql_ip.outputs.pgsql_ip }} # run: |
steps: # mv ./terraform.tfstate ./mysql.tfstate
- name: Checkout tf-test-automation # - uses: actions/upload-artifact@v2
uses: actions/checkout@v2 # if: always()
with: # with:
repository: emqx/tf-test-automation # name: tfstate
ref: emqx-broker # path: ./tf-test-automation/services/mysql/mysql.tfstate
path: tf-test-automation # - name: Show mysql url
- name: Setup Terraform # id: mysql_ip
uses: hashicorp/setup-terraform@v1.3.2 # run: |
with: # ip=`echo "${{ steps.mysql_url.outputs.mysql_url }}"|awk -F ':' '{print $1}'`
terraform_wrapper: false # echo "::set-output name=mysql_ip::$ip"
- name: Terraform Init tf-test-automation # - name: Show mysql ip
working-directory: ./tf-test-automation/services/pgsql # run: |
id: init # echo ${{ steps.mysql_url.outputs.mysql_url }}
run: | # echo ${{ steps.mysql_ip.outputs.mysql_ip }}
terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" ##
- name: Terraform Validate tf-test-automation # terraform_redis:
working-directory: ./tf-test-automation/services/pgsql # runs-on: ubuntu-latest
id: validate #
run: terraform validate -no-color # outputs:
- name: Terraform Apply tf-test-automation # redis_ip: ${{ steps.redis_ip.outputs.redis_ip }}
working-directory: ./tf-test-automation/services/pgsql # steps:
id: pgsql_url # - name: Checkout tf-test-automation
run: | # uses: actions/checkout@v2
terraform apply -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # with:
echo "::set-output name=pgsql_url::$(terraform output endpoint)" # repository: emqx/tf-test-automation
- name: Rename and upload pgsql server tfstate # ref: emqx-broker
working-directory: ./tf-test-automation/services/pgsql # path: tf-test-automation
run: | # - name: Setup Terraform
mv ./terraform.tfstate ./pgsql.tfstate # uses: hashicorp/setup-terraform@v1.3.2
- uses: actions/upload-artifact@v2 # with:
if: always() # terraform_wrapper: false
with: # - name: Terraform Init tf-test-automation
name: tfstate # working-directory: ./tf-test-automation/services/redis
path: ./tf-test-automation/services/pgsql/pgsql.tfstate # id: init
- name: Show pgsql url # run: |
id: pgsql_ip # terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
run: | # - name: Terraform Validate tf-test-automation
ip=`echo "${{ steps.pgsql_url.outputs.pgsql_url }}"|awk -F ':' '{print $1}'` # working-directory: ./tf-test-automation/services/redis
echo "::set-output name=pgsql_ip::$ip" # id: validate
- name: Show pgsql ip # run: terraform validate -no-color
run: | # - name: Terraform Apply tf-test-automation
echo ${{ steps.pgsql_url.outputs.pgsql_url }} # working-directory: ./tf-test-automation/services/redis
echo ${{ steps.pgsql_ip.outputs.pgsql_ip }} # id: redis_ip
# run: |
terraform_mongo: # terraform apply -auto-approve -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}"
runs-on: ubuntu-latest # echo "::set-output name=redis_ip::$(terraform output redis_private_ips)"
# - name: Rename and upload redis server tfstate
outputs: # working-directory: ./tf-test-automation/services/redis
mongo_ip: ${{ steps.mongo_ip.outputs.mongo_ip }} # run: |
steps: # mv ./terraform.tfstate ./redis.tfstate
- name: Checkout tf-test-automation # - uses: actions/upload-artifact@v2
uses: actions/checkout@v2 # if: always()
with: # with:
repository: emqx/tf-test-automation # name: tfstate
ref: emqx-broker # path: ./tf-test-automation/services/redis/redis.tfstate
path: tf-test-automation # - name: Show redis ip
- name: Setup Terraform # run: |
uses: hashicorp/setup-terraform@v1.3.2 # echo ${{ steps.redis_ip.outputs.redis_ip }}
with: #
terraform_wrapper: false # terraform_pgsql:
- name: Terraform Init tf-test-automation # runs-on: ubuntu-latest
working-directory: ./tf-test-automation/services/mongodb #
id: init # outputs:
run: | # pgsql_url: ${{ steps.pgsql_url.outputs.pgsql_url }}
terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # pgsql_ip: ${{ steps.pgsql_ip.outputs.pgsql_ip }}
- name: Terraform Validate tf-test-automation # steps:
working-directory: ./tf-test-automation/services/mongodb # - name: Checkout tf-test-automation
id: validate # uses: actions/checkout@v2
run: terraform validate -no-color # with:
- name: Terraform Apply tf-test-automation # repository: emqx/tf-test-automation
working-directory: ./tf-test-automation/services/mongodb # ref: emqx-broker
id: mongo_ip # path: tf-test-automation
run: | # - name: Setup Terraform
terraform apply -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}" # uses: hashicorp/setup-terraform@v1.3.2
echo "::set-output name=mongo_ip::$(terraform output mongo_private_ips)" # with:
- name: Rename and upload mongo server tfstate # terraform_wrapper: false
working-directory: ./tf-test-automation/services/mongodb # - name: Terraform Init tf-test-automation
run: | # working-directory: ./tf-test-automation/services/pgsql
mv ./terraform.tfstate ./mongo.tfstate # id: init
- uses: actions/upload-artifact@v2 # run: |
if: always() # terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
with: # - name: Terraform Validate tf-test-automation
name: tfstate # working-directory: ./tf-test-automation/services/pgsql
path: ./tf-test-automation/services/mongodb/mongo.tfstate # id: validate
- name: Show mongo ip # run: terraform validate -no-color
run: | # - name: Terraform Apply tf-test-automation
echo ${{ steps.mongo_ip.outputs.mongo_ip }} # working-directory: ./tf-test-automation/services/pgsql
# id: pgsql_url
master_control: # run: |
runs-on: ubuntu-latest # terraform apply -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
# echo "::set-output name=pgsql_url::$(terraform output endpoint)"
needs: [xmeter_start, terraform_emqx, terraform_mysql, terraform_redis, terraform_pgsql, terraform_mongo] # - name: Rename and upload pgsql server tfstate
steps: # working-directory: ./tf-test-automation/services/pgsql
- uses: actions/checkout@v2 # run: |
- uses: actions/setup-java@v1 # mv ./terraform.tfstate ./pgsql.tfstate
with: # - uses: actions/upload-artifact@v2
java-version: '8.0.282' # The JDK version to make available on the path. # if: always()
java-package: jdk # (jre, jdk, or jdk+fx) - defaults to jdk # with:
architecture: x64 # (x64 or x86) - defaults to x64 # name: tfstate
- name: install jmeter # path: ./tf-test-automation/services/pgsql/pgsql.tfstate
timeout-minutes: 10 # - name: Show pgsql url
env: # id: pgsql_ip
JMETER_VERSION: 5.3 # run: |
run: | # ip=`echo "${{ steps.pgsql_url.outputs.pgsql_url }}"|awk -F ':' '{print $1}'`
wget --no-verbose --no-check-certificate -O /tmp/apache-jmeter.tgz https://downloads.apache.org/jmeter/binaries/apache-jmeter-$JMETER_VERSION.tgz # echo "::set-output name=pgsql_ip::$ip"
cd /tmp && tar -xvf apache-jmeter.tgz # - name: Show pgsql ip
echo "jmeter.save.saveservice.output_format=xml" >> /tmp/apache-jmeter-$JMETER_VERSION/user.properties # run: |
echo "jmeter.save.saveservice.response_data.on_error=true" >> /tmp/apache-jmeter-$JMETER_VERSION/user.properties # echo ${{ steps.pgsql_url.outputs.pgsql_url }}
wget --no-verbose -O /tmp/apache-jmeter-$JMETER_VERSION/lib/ext/mqtt-xmeter-fuse-2.0.2-jar-with-dependencies.jar https://raw.githubusercontent.com/xmeter-net/mqtt-jmeter/master/Download/v2.0.2/mqtt-xmeter-fuse-2.0.2-jar-with-dependencies.jar # echo ${{ steps.pgsql_ip.outputs.pgsql_ip }}
ln -s /tmp/apache-jmeter-$JMETER_VERSION /opt/jmeter #
- name: install jmeter plugin # terraform_mongo:
run: | # runs-on: ubuntu-latest
wget --no-verbose -O "/opt/jmeter/lib/mysql-connector-java-8.0.16.jar" https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar #
- name: run jmeter # outputs:
run: | # mongo_ip: ${{ steps.mongo_ip.outputs.mongo_ip }}
/opt/jmeter/bin/jmeter.sh \ # steps:
-Jjmeter.save.saveservice.output_format=xml -n \ # - name: Checkout tf-test-automation
-t .ci/broker-performance-test-suite/broker_attestation_test.jmx \ # uses: actions/checkout@v2
-Demqx_ip=${{ needs.terraform_emqx.outputs.emqx_public_ip }} \ # with:
-Demqx_private_ip1=${{ needs.terraform_emqx.outputs.emqx_node_ip1 }} \ # repository: emqx/tf-test-automation
-Demqx_private_ip2=${{ needs.terraform_emqx.outputs.emqx_node_ip2 }} \ # ref: emqx-broker
-Demqx_private_ip3=${{ needs.terraform_emqx.outputs.emqx_node_ip3 }} \ # path: tf-test-automation
-Dmysql_ip=${{ needs.terraform_mysql.outputs.mysql_ip }} \ # - name: Setup Terraform
-Dpgsql_ip=${{ needs.terraform_pgsql.outputs.pgsql_ip }} \ # uses: hashicorp/setup-terraform@v1.3.2
-Dredis_ip=${{ needs.terraform_redis.outputs.redis_ip }} \ # with:
-Dmongo_ip=${{ needs.terraform_mongo.outputs.mongo_ip }} \ # terraform_wrapper: false
-Dxmeter_ip=${{ secrets.XMETER_IP }} \ # - name: Terraform Init tf-test-automation
-Dplugins_path="/opt/jmeter/lib/ext" \ # working-directory: ./tf-test-automation/services/mongodb
-Dxmeter_user=${{ secrets.XMETER_USER }} \ # id: init
-Dxmeter_pwd=${{ secrets.XMETER_PWD }} \ # run: |
-Dscripts_path=".ci/performance-test-suite" \ # terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
-Dreport_file="jmeter_logs/report.txt" \ # - name: Terraform Validate tf-test-automation
-l jmeter_logs/xmeter_process.jtl \ # working-directory: ./tf-test-automation/services/mongodb
-j jmeter_logs/xmeter_process.log # id: validate
- name: check logs # run: terraform validate -no-color
run: | # - name: Terraform Apply tf-test-automation
if cat jmeter_logs/xmeter_process.jtl | grep -e '<failure>true</failure>' > /dev/null 2>&1; then # working-directory: ./tf-test-automation/services/mongodb
echo "check logs filed" # id: mongo_ip
fi # run: |
- name: check report # terraform apply -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}"
run: | # echo "::set-output name=mongo_ip::$(terraform output mongo_private_ips)"
if cat jmeter_logs/report.txt | grep -e 'err_report_id' > /dev/null 2>&1; then # - name: Rename and upload mongo server tfstate
echo "check report filed" # working-directory: ./tf-test-automation/services/mongodb
exit 1 # run: |
fi # mv ./terraform.tfstate ./mongo.tfstate
- uses: actions/upload-artifact@v2 # - uses: actions/upload-artifact@v2
if: always() # if: always()
with: # with:
name: jmeter_logs_report # name: tfstate
path: ./jmeter_logs # path: ./tf-test-automation/services/mongodb/mongo.tfstate
# - name: Show mongo ip
terraform_destroy: # run: |
runs-on: ubuntu-latest # echo ${{ steps.mongo_ip.outputs.mongo_ip }}
#
needs: [master_control] # master_control:
steps: # runs-on: ubuntu-latest
- name: Checkout tf-test-automation #
uses: actions/checkout@v2 # needs: [xmeter_start, terraform_emqx, terraform_mysql, terraform_redis, terraform_pgsql, terraform_mongo]
with: # steps:
repository: emqx/tf-test-automation # - uses: actions/checkout@v2
ref: cluster # - uses: actions/setup-java@v1
path: tf-test-automation # with:
- name: Setup Terraform # java-version: '8.0.282' # The JDK version to make available on the path.
uses: hashicorp/setup-terraform@v1.3.2 # java-package: jdk # (jre, jdk, or jdk+fx) - defaults to jdk
with: # architecture: x64 # (x64 or x86) - defaults to x64
terraform_wrapper: false # - name: install jmeter
- uses: actions/download-artifact@v2 # timeout-minutes: 10
with: # env:
name: tfstate # JMETER_VERSION: 5.3
path: ./tf-test-automation/services # run: |
- name: Terraform Init mysql # wget --no-verbose --no-check-certificate -O /tmp/apache-jmeter.tgz https://downloads.apache.org/jmeter/binaries/apache-jmeter-$JMETER_VERSION.tgz
working-directory: ./tf-test-automation/services # cd /tmp && tar -xvf apache-jmeter.tgz
run: | # echo "jmeter.save.saveservice.output_format=xml" >> /tmp/apache-jmeter-$JMETER_VERSION/user.properties
cp mysql.tfstate ./mysql/terraform.tfstate # echo "jmeter.save.saveservice.response_data.on_error=true" >> /tmp/apache-jmeter-$JMETER_VERSION/user.properties
cd ./mysql # wget --no-verbose -O /tmp/apache-jmeter-$JMETER_VERSION/lib/ext/mqtt-xmeter-fuse-2.0.2-jar-with-dependencies.jar https://raw.githubusercontent.com/xmeter-net/mqtt-jmeter/master/Download/v2.0.2/mqtt-xmeter-fuse-2.0.2-jar-with-dependencies.jar
terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # ln -s /tmp/apache-jmeter-$JMETER_VERSION /opt/jmeter
- name: Terraform Destroy mysql # - name: install jmeter plugin
working-directory: ./tf-test-automation/services/mysql # run: |
run: | # wget --no-verbose -O "/opt/jmeter/lib/mysql-connector-java-8.0.16.jar" https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar
terraform destroy -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # - name: run jmeter
- name: Terraform Init emqx # run: |
working-directory: ./tf-test-automation/services # /opt/jmeter/bin/jmeter.sh \
run: | # -Jjmeter.save.saveservice.output_format=xml -n \
cp emqx.tfstate ./emqx/terraform.tfstate # -t .ci/broker-performance-test-suite/broker_attestation_test.jmx \
cd ./emqx # -Demqx_ip=${{ needs.terraform_emqx.outputs.emqx_public_ip }} \
terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # -Demqx_private_ip1=${{ needs.terraform_emqx.outputs.emqx_node_ip1 }} \
- name: Terraform Destroy emqx # -Demqx_private_ip2=${{ needs.terraform_emqx.outputs.emqx_node_ip2 }} \
working-directory: ./tf-test-automation/services/emqx # -Demqx_private_ip3=${{ needs.terraform_emqx.outputs.emqx_node_ip3 }} \
run: | # -Dmysql_ip=${{ needs.terraform_mysql.outputs.mysql_ip }} \
terraform destroy -auto-approve -var="region=ap-southeast-1" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # -Dpgsql_ip=${{ needs.terraform_pgsql.outputs.pgsql_ip }} \
- name: Terraform Init redis # -Dredis_ip=${{ needs.terraform_redis.outputs.redis_ip }} \
working-directory: ./tf-test-automation/services # -Dmongo_ip=${{ needs.terraform_mongo.outputs.mongo_ip }} \
run: | # -Dxmeter_ip=${{ secrets.XMETER_IP }} \
cp redis.tfstate ./redis/terraform.tfstate # -Dplugins_path="/opt/jmeter/lib/ext" \
cd ./redis # -Dxmeter_user=${{ secrets.XMETER_USER }} \
terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # -Dxmeter_pwd=${{ secrets.XMETER_PWD }} \
- name: Terraform Destroy redis # -Dscripts_path=".ci/performance-test-suite" \
working-directory: ./tf-test-automation/services/redis # -Dreport_file="jmeter_logs/report.txt" \
run: | # -l jmeter_logs/xmeter_process.jtl \
terraform destroy -auto-approve -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}" # -j jmeter_logs/xmeter_process.log
- name: Terraform Init pgsql # - name: check logs
working-directory: ./tf-test-automation/services # run: |
run: | # if cat jmeter_logs/xmeter_process.jtl | grep -e '<failure>true</failure>' > /dev/null 2>&1; then
cp pgsql.tfstate ./pgsql/terraform.tfstate # echo "check logs filed"
cd ./pgsql # fi
terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # - name: check report
- name: Terraform Destroy pgsql # run: |
working-directory: ./tf-test-automation/services/pgsql # if cat jmeter_logs/report.txt | grep -e 'err_report_id' > /dev/null 2>&1; then
run: | # echo "check report filed"
terraform destroy -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # exit 1
- name: Terraform Init mongo # fi
working-directory: ./tf-test-automation/services # - uses: actions/upload-artifact@v2
run: | # if: always()
cp mongo.tfstate ./mongodb/terraform.tfstate # with:
cd ./mongodb # name: jmeter_logs_report
terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" # path: ./jmeter_logs
- name: Terraform Destroy mongo #
working-directory: ./tf-test-automation/services/mongodb # terraform_destroy:
run: | # runs-on: ubuntu-latest
terraform destroy -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" #
# needs: [master_control]
xmeter_stop: # steps:
runs-on: ubuntu-latest # - name: Checkout tf-test-automation
# uses: actions/checkout@v2
needs: [terraform_destroy] # with:
steps: # repository: emqx/tf-test-automation
- name: Configure AWS Credentials # ref: cluster
uses: aws-actions/configure-aws-credentials@v1 # path: tf-test-automation
with: # - name: Setup Terraform
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }} # uses: hashicorp/setup-terraform@v1.3.2
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }} # with:
aws-region: ap-southeast-1 # terraform_wrapper: false
- name: Start Xmeter Services # - uses: actions/download-artifact@v2
run: | # with:
aws ec2 stop-instances --instance-ids i-0dd6d99916baaa1a8 # name: tfstate
aws ec2 stop-instances --instance-ids i-05222103df01eb2d7 # path: ./tf-test-automation/services
aws ec2 stop-instances --instance-ids i-0c5dccd394ed9be18 # - name: Terraform Init mysql
aws ec2 stop-instances --instance-ids i-04c1c50b3e4952266 # working-directory: ./tf-test-automation/services
# run: |
# cp mysql.tfstate ./mysql/terraform.tfstate
# cd ./mysql
# terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
# - name: Terraform Destroy mysql
# working-directory: ./tf-test-automation/services/mysql
# run: |
# terraform destroy -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
# - name: Terraform Init emqx
# working-directory: ./tf-test-automation/services
# run: |
# cp emqx.tfstate ./emqx/terraform.tfstate
# cd ./emqx
# terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
# - name: Terraform Destroy emqx
# working-directory: ./tf-test-automation/services/emqx
# run: |
# terraform destroy -auto-approve -var="region=ap-southeast-1" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
# - name: Terraform Init redis
# working-directory: ./tf-test-automation/services
# run: |
# cp redis.tfstate ./redis/terraform.tfstate
# cd ./redis
# terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
# - name: Terraform Destroy redis
# working-directory: ./tf-test-automation/services/redis
# run: |
# terraform destroy -auto-approve -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}" -var="private_key=${{ secrets.CI_SSH_PRIVATE_KEY }}"
# - name: Terraform Init pgsql
# working-directory: ./tf-test-automation/services
# run: |
# cp pgsql.tfstate ./pgsql/terraform.tfstate
# cd ./pgsql
# terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
# - name: Terraform Destroy pgsql
# working-directory: ./tf-test-automation/services/pgsql
# run: |
# terraform destroy -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
# - name: Terraform Init mongo
# working-directory: ./tf-test-automation/services
# run: |
# cp mongo.tfstate ./mongodb/terraform.tfstate
# cd ./mongodb
# terraform init --backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" --backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
# - name: Terraform Destroy mongo
# working-directory: ./tf-test-automation/services/mongodb
# run: |
# terraform destroy -auto-approve -var="db_password=public123" -var="access_key=${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}" -var="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}"
#
# xmeter_stop:
# runs-on: ubuntu-latest
#
# needs: [terraform_destroy]
# steps:
# - name: Configure AWS Credentials
# uses: aws-actions/configure-aws-credentials@v1
# with:
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_FOR_PERFORMANCE_TESTING }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_FOR_PERFORMANCE_TESTING }}
# aws-region: ap-southeast-1
# - name: Start Xmeter Services
# run: |
# aws ec2 stop-instances --instance-ids i-0dd6d99916baaa1a8
# aws ec2 stop-instances --instance-ids i-05222103df01eb2d7
# aws ec2 stop-instances --instance-ids i-0c5dccd394ed9be18
# aws ec2 stop-instances --instance-ids i-04c1c50b3e4952266