From 47679132945b2745a67e5ddb0c6ecd4d7bc2bcbc Mon Sep 17 00:00:00 2001 From: Bilal A Date: Mon, 8 Apr 2019 11:28:58 -0400 Subject: [PATCH] Adds basic performance tests for Policy API Includes 1) Basic health and stats tests 2) Log analysis script Change-Id: I239ad1fbb4793873a82cd804da5408f968fce875 Issue-ID: POLICY-1458 Signed-off-by: Bilal A --- testsuites/performance/pom.xml | 50 ++++ testsuites/performance/src/assembly/assembly.xml | 42 +++ .../src/main/resources/testplans/perf.jmx | 301 +++++++++++++++++++++ .../src/main/resources/testplans/results.sh | 34 +++ testsuites/pom.xml | 1 + 5 files changed, 428 insertions(+) create mode 100644 testsuites/performance/pom.xml create mode 100644 testsuites/performance/src/assembly/assembly.xml create mode 100644 testsuites/performance/src/main/resources/testplans/perf.jmx create mode 100755 testsuites/performance/src/main/resources/testplans/results.sh diff --git a/testsuites/performance/pom.xml b/testsuites/performance/pom.xml new file mode 100644 index 00000000..e0051f6c --- /dev/null +++ b/testsuites/performance/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + org.onap.policy.api + testsuites + 2.0.0-SNAPSHOT + + performance + + + + org.apache.maven.plugins + maven-assembly-plugin + + + create-distribution + package + + single + + + + src/assembly/assembly.xml + + + + + + + + \ No newline at end of file diff --git a/testsuites/performance/src/assembly/assembly.xml b/testsuites/performance/src/assembly/assembly.xml new file mode 100644 index 00000000..191aba58 --- /dev/null +++ b/testsuites/performance/src/assembly/assembly.xml @@ -0,0 +1,42 @@ + + + performance + + zip + + /policy-api/performance + + + ${project.basedir}/src/main/resources/testplans/ + tests/testplans + + *.jmx + *.sh + + unix + 0644 + true + + + diff --git a/testsuites/performance/src/main/resources/testplans/perf.jmx b/testsuites/performance/src/main/resources/testplans/perf.jmx new file mode 100644 index 00000000..affddd5e --- /dev/null +++ b/testsuites/performance/src/main/resources/testplans/perf.jmx @@ -0,0 +1,301 @@ + + + + + Policy API Performance Tests + false + true + true + + + + POLICY_API_HOST + ${__P(host,127.0.0.1)} + = + + + DURATION + ${__P(duration, 5)} + = + + + USERS + ${__P(users, 1)} + = + + + PORT + ${__P(port, 6969)} + = + + + + + + + + continue + + false + -1 + + ${USERS} + 1 + true + ${DURATION} + 1 + + + + + + + ${POLICY_API_HOST} + 6969 + https + + policy/api/v1/healthcheck + GET + true + false + true + false + + + + Basic Health Check + + + + + 200 + + + Assertion.response_code + false + 1 + + + + groovy + + + true + import groovy.json.JsonSlurper; + +def res = []; +if (prev.getResponseCode() == '200') { + def jsonSlurper = new JsonSlurper(); + res = jsonSlurper.parseText(prev.getResponseDataAsString()); + + assert res instanceof Map; + assert res.code == 200; + assert res.name == "Policy API"; + assert res.healthy==true; + assert res.message=="alive"; + +} + + + + + + + Accept + application/json + + + Content-Type + application/json + + + + + + + + https://${POLICY_API_HOST}:6969/policy/api/v1/healthcheck + healthcheck + zb!XztG34 + + + + + true + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + /tmp/api_perf_health.log + + + + + continue + + false + -1 + + ${USERS} + 1 + true + ${DURATION} + 1 + + + + + + + ${POLICY_API_HOST} + 6969 + https + + policy/api/v1/statistics + GET + true + false + true + false + + + + Basic Health Check + + + + + 200 + + + Assertion.response_code + false + 1 + + + + groovy + + + true + import groovy.json.JsonSlurper; + +def res = []; +if (prev.getResponseCode() == '200') { + def jsonSlurper = new JsonSlurper(); + res = jsonSlurper.parseText(prev.getResponseDataAsString()); + + assert res instanceof Map; + assert res.code == 200; + assert res.totalApiCallCount == 0; + assert res.apiCallSuccessCount==0; + assert res.apiCallFailureCount==0; + assert res.totalPolicyGetCount==0; + assert res.totalPolicyPostCount==0; + assert res.policyGetSuccessCount==0; + assert res.policyGetFailureCount==0; + + +} + + + + + + + Accept + application/json + + + Content-Type + application/json + + + + + + + + https://${POLICY_API_HOST}:6969/policy/api/v1/statistics + healthcheck + zb!XztG34 + + + + + true + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + /tmp/api_perf_stats.log + + + + + + diff --git a/testsuites/performance/src/main/resources/testplans/results.sh b/testsuites/performance/src/main/resources/testplans/results.sh new file mode 100755 index 00000000..3e74bb4e --- /dev/null +++ b/testsuites/performance/src/main/resources/testplans/results.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +#============LICENSE_START======================================================= +#ONAP Policy API Performance +#================================================================================ +#Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. +#================================================================================ +#Licensed under the Apache License, Version 2.0 (the "License"); +#you may not use this file except in compliance with the License. +#You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +#Unless required by applicable law or agreed to in writing, software +#distributed under the License is distributed on an "AS IS" BASIS, +#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#See the License for the specific language governing permissions and +#limitations under the License. +#============LICENSE_END========================================================= + +LOGFILE=$1 +if [[ ! -f $LOGFILE ]]; then + echo "The file '$LOGFILE' in not provided." + echo "Please provide log file to process." + exit 1 +fi + +echo "File being processed: " $LOGFILE +RES=$(awk -F "," 'NR>1 { total += $15 } END { print total/NR }' $LOGFILE) +echo "Average Latency: " $RES +LC=$(awk 'END{print NR}' $LOGFILE) +echo "Total Requests:" $LC +echo "Requests/sec:" $((LC/5)) + diff --git a/testsuites/pom.xml b/testsuites/pom.xml index 7978315a..4713f377 100644 --- a/testsuites/pom.xml +++ b/testsuites/pom.xml @@ -28,5 +28,6 @@ pom stability + performance \ No newline at end of file -- 2.16.6