|
@@ -21,7 +21,7 @@ jobs:
|
|
|
java-version: '8' # The JDK version to make available on the path.
|
|
|
java-package: jdk # (jre, jdk, or jdk+fx) - defaults to jdk
|
|
|
architecture: x64 # (x64 or x86) - defaults to x64
|
|
|
- - name: set up jmeter
|
|
|
+ - name: install jmeter
|
|
|
timeout-minutes: 10
|
|
|
env:
|
|
|
JMETER_VERSION: 5.2.1
|
|
@@ -60,7 +60,7 @@ jobs:
|
|
|
with:
|
|
|
name: jmeter_logs_with_edgex
|
|
|
path: ./jmeter_logs
|
|
|
- - name: checkout out
|
|
|
+ - name: check logs
|
|
|
run: |
|
|
|
sudo apt update && sudo apt install -y libxml2-utils
|
|
|
cd jmeter_logs
|
|
@@ -82,7 +82,7 @@ jobs:
|
|
|
java-version: '8' # The JDK version to make available on the path.
|
|
|
java-package: jdk # (jre, jdk, or jdk+fx) - defaults to jdk
|
|
|
architecture: x64 # (x64 or x86) - defaults to x64
|
|
|
- - name: set up jmeter
|
|
|
+ - name: install jmeter
|
|
|
timeout-minutes: 10
|
|
|
env:
|
|
|
JMETER_VERSION: 5.2.1
|
|
@@ -121,7 +121,7 @@ jobs:
|
|
|
with:
|
|
|
name: jmeter_logs_without_edgex
|
|
|
path: ./jmeter_logs
|
|
|
- - name: checkout out
|
|
|
+ - name: check logs
|
|
|
run: |
|
|
|
sudo apt update && sudo apt install -y libxml2-utils
|
|
|
cd jmeter_logs
|
|
@@ -129,4 +129,126 @@ jobs:
|
|
|
echo -e "---------------------------------------------\n"
|
|
|
echo "FVT tests error"
|
|
|
exit 1
|
|
|
- fi
|
|
|
+ fi
|
|
|
+
|
|
|
+ fvt_tests_for_container_in_helm:
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v2
|
|
|
+ - uses: actions/setup-java@v1
|
|
|
+ with:
|
|
|
+ java-version: '8' # The JDK version to make available on the path.
|
|
|
+ java-package: jdk # (jre, jdk, or jdk+fx) - defaults to jdk
|
|
|
+ architecture: x64 # (x64 or x86) - defaults to x64
|
|
|
+ - name: install jmeter
|
|
|
+ timeout-minutes: 10
|
|
|
+ env:
|
|
|
+ JMETER_VERSION: 5.2.1
|
|
|
+ run: |
|
|
|
+ wget -O /tmp/apache-jmeter.tgz http://us.mirrors.quenda.co/apache//jmeter/binaries/apache-jmeter-$JMETER_VERSION.tgz
|
|
|
+ cd /tmp && tar -xvf apache-jmeter.tgz
|
|
|
+ echo "jmeter.save.saveservice.output_format=xml" >> /tmp/apache-jmeter-$JMETER_VERSION/user.properties
|
|
|
+ echo "jmeter.save.saveservice.response_data.on_error=true" >> /tmp/apache-jmeter-$JMETER_VERSION/user.properties
|
|
|
+ wget -O /tmp/apache-jmeter-$JMETER_VERSION/lib/ext/mqtt-xmeter-1.13-jar-with-dependencies.jar https://github.com/emqx/mqtt-jmeter/raw/master/Download/v1.13.0/mqtt-xmeter-1.13-jar-with-dependencies.jar
|
|
|
+ ln -s /tmp/apache-jmeter-$JMETER_VERSION /opt/jmeter
|
|
|
+ - name: setup jmeter
|
|
|
+ timeout-minutes: 10
|
|
|
+ run: |
|
|
|
+ wget -O "/opt/jmeter/lib/json-lib-2.4-jdk15.jar" https://repo1.maven.org/maven2/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar
|
|
|
+ wget -O "/opt/jmeter/lib/commons-beanutils-1.8.0.jar" https://repo1.maven.org/maven2/commons-beanutils/commons-beanutils/1.8.0/commons-beanutils-1.8.0.jar
|
|
|
+ wget -O "/opt/jmeter/lib/commons-collections-3.2.1.jar" https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
|
|
|
+ wget -O "/opt/jmeter/lib/commons-lang-2.5.jar" https://repo1.maven.org/maven2/commons-lang/commons-lang/2.5/commons-lang-2.5.jar
|
|
|
+ wget -O "/opt/jmeter/lib/commons-logging-1.1.1.jar" https://repo1.maven.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
|
|
|
+ wget -O "/opt/jmeter/lib/ezmorph-1.0.6.jar" https://repo1.maven.org/maven2/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6.jar
|
|
|
+ - name: install docker
|
|
|
+ run: |
|
|
|
+ sudo apt-get remove docker docker-engine docker.io containerd runc
|
|
|
+ sudo apt-get update
|
|
|
+ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
|
|
|
+ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
|
|
+ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
|
|
|
+ sudo apt-get update
|
|
|
+ sudo apt-get install docker-ce docker-ce-cli containerd.io
|
|
|
+ - name: install k3s
|
|
|
+ env:
|
|
|
+ KUBECONFIG: "/etc/rancher/k3s/k3s.yaml"
|
|
|
+ run: |
|
|
|
+ sudo sh -c "echo \"127.0.0.1 $(hostname)\" >> /etc/hosts"
|
|
|
+ curl -sfL https://get.k3s.io | sh -
|
|
|
+ sudo chmod 644 /etc/rancher/k3s/k3s.yaml
|
|
|
+ kubectl cluster-info
|
|
|
+ - name: install helm
|
|
|
+ run: |
|
|
|
+ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
|
|
|
+ sudo chmod 700 get_helm.sh
|
|
|
+ sudo ./get_helm.sh
|
|
|
+ helm version
|
|
|
+ - name: build kuiper for docker
|
|
|
+ run: make docker
|
|
|
+ - name: run emqx on chart
|
|
|
+ env:
|
|
|
+ KUBECONFIG: "/etc/rancher/k3s/k3s.yaml"
|
|
|
+ timeout-minutes: 5
|
|
|
+ run: |
|
|
|
+ helm repo add emqx https://repos.emqx.io/charts
|
|
|
+ helm repo update
|
|
|
+ helm install emqx --set replicaCount=1 emqx/emqx
|
|
|
+ while [ "$(kubectl get StatefulSet -l app.kubernetes.io/name=emqx -o jsonpath='{.items[0].status.replicas}')" \
|
|
|
+ != "$(kubectl get StatefulSet -l app.kubernetes.io/name=emqx -o jsonpath='{.items[0].status.readyReplicas}')" ]; do
|
|
|
+ echo "waiting emqx started"
|
|
|
+ sleep 10
|
|
|
+ done
|
|
|
+ - name: run kuiper for chart
|
|
|
+ env:
|
|
|
+ KUBECONFIG: "/etc/rancher/k3s/k3s.yaml"
|
|
|
+ timeout-minutes: 5
|
|
|
+ run: |
|
|
|
+ version=$(git describe --tags --always)
|
|
|
+ emqx_address=$(kubectl get svc --namespace default emqx -o jsonpath="{.spec.clusterIP}")
|
|
|
+
|
|
|
+ sudo docker save emqx/kuiper:$version -o kuier.tar.gz
|
|
|
+ sudo k3s ctr image import kuier.tar.gz
|
|
|
+
|
|
|
+ sed -i -r "s/^appVersion: .*$/appVersion: ${version}/g" deploy/chart/kuiper/Chart.yaml
|
|
|
+ sed -i -r 's/ pullPolicy: .*$/ pullPolicy: Never/g' deploy/chart/kuiper/values.yaml
|
|
|
+ sed -i -r "s/ servers: \[.*\]$/ servers: \[tcp:\/\/${emqx_address}:1883\]/g" deploy/chart/kuiper/values.yaml
|
|
|
+
|
|
|
+ helm install kuiper deploy/chart/kuiper
|
|
|
+ while [ "$(kubectl get StatefulSet -l app.kubernetes.io/name=kuiper -o jsonpath='{.items[0].status.replicas}')" \
|
|
|
+ != "$(kubectl get StatefulSet -l app.kubernetes.io/name=kuiper -o jsonpath='{.items[0].status.readyReplicas}')" ]; do
|
|
|
+ echo "waiting kuiper started"
|
|
|
+ sleep 10
|
|
|
+ done
|
|
|
+ kuiper_address=$(kubectl get svc --namespace default kuiper -o jsonpath="{.spec.clusterIP}")
|
|
|
+ if [ $(curl -w %{http_code} -fsSL -o /dev/null $kuiper_address:9081/rules) != 200 ];then exit 1; fi
|
|
|
+ kubectl exec kuiper-0 -- cat /kuiper/etc/mqtt_source.yaml
|
|
|
+ - name: check kuiper
|
|
|
+ env:
|
|
|
+ KUBECONFIG: "/etc/rancher/k3s/k3s.yaml"
|
|
|
+ timeout-minutes: 5
|
|
|
+ run: |
|
|
|
+ emqx_address=$(kubectl get svc --namespace default emqx -o jsonpath="{.spec.clusterIP}")
|
|
|
+ kuiper_address=$(kubectl get svc --namespace default kuiper -o jsonpath="{.spec.clusterIP}")
|
|
|
+ /opt/jmeter/bin/jmeter.sh -Jjmeter.save.saveservice.output_format=xml -n -t fvt_scripts/select_aggr_rule.jmx -Dsrv=${kuiper_address} -Dmqtt_srv=${emqx_address} -l jmeter_logs/select_aggr_rule.jtl -j jmeter_logs/select_aggr_rule.log
|
|
|
+ mkdir -p kuiper_logs
|
|
|
+ kubectl exec kuiper-0 -- cat /kuiper/log/stream.log > kuiper_logs/stream.log
|
|
|
+ - uses: actions/upload-artifact@v1
|
|
|
+ if: always()
|
|
|
+ with:
|
|
|
+ name: kuiper_logs_with_helm
|
|
|
+ path: ./kuiper_logs
|
|
|
+ - uses: actions/upload-artifact@v1
|
|
|
+ if: always()
|
|
|
+ with:
|
|
|
+ name: jmeter_logs_with_helm
|
|
|
+ path: ./jmeter_logs
|
|
|
+ - name: check logs
|
|
|
+ run: |
|
|
|
+ sudo apt update && sudo apt install -y libxml2-utils
|
|
|
+ cd jmeter_logs
|
|
|
+ if [ "$(xmllint --format --xpath '/testResults/sample/@rc' $(ls *.jtl) | sed -r 's/ /\n/g;' | sort -u | grep -E 'rc=\"[45][0-9][0-9]\"|rc=\"\"')" != "" ]; then
|
|
|
+ echo -e "---------------------------------------------\n"
|
|
|
+ echo "FVT tests error"
|
|
|
+ exit 1
|
|
|
+ fi
|