+# ============LICENSE_START=======================================================
+# Copyright (C) 2024 Nordix Foundation. 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
name: policy-apex-performance-test
on:
uses: actions/upload-artifact@v4
with:
name: policy-apex-s3p-results
- path: ${{ github.workspace }}/testsuites/automate-performance/s3pTestResults.jtl
+ path: ${{ github.workspace }}/testsuites/automate-s3p-test/s3pTestResults.jtl
+
+ - name: Archive JMeter logs
+ uses: actions/upload-artifact@v4
+ with:
+ name: policy-apex-s3p-results
+ path: ${{ github.workspace }}/testsuites/automate-s3p-test/jmeter.log
--- /dev/null
+# ============LICENSE_START=======================================================
+# Copyright (C) 2024 Nordix Foundation. 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+name: policy-apex-stability-test
+
+on:
+ workflow_dispatch:
+ # For Branch-Protection check. Only the default branch is supported. See
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
+ inputs:
+ GERRIT_BRANCH:
+ description: 'Branch that change is against'
+ required: true
+ type: string
+ GERRIT_CHANGE_ID:
+ description: 'The ID for the change'
+ required: true
+ type: string
+ GERRIT_CHANGE_NUMBER:
+ description: 'The Gerrit number'
+ required: true
+ type: string
+ GERRIT_CHANGE_URL:
+ description: 'URL to the change'
+ required: true
+ type: string
+ GERRIT_EVENT_TYPE:
+ description: 'Gerrit event type'
+ required: true
+ type: string
+ GERRIT_PATCHSET_NUMBER:
+ description: 'The patch number for the change'
+ required: true
+ type: string
+ GERRIT_PATCHSET_REVISION:
+ description: 'The revision sha'
+ required: true
+ type: string
+ GERRIT_PROJECT:
+ description: 'Project in Gerrit'
+ required: true
+ type: string
+ GERRIT_REFSPEC:
+ description: 'Gerrit refspec of change'
+ required: true
+ type: string
+ branch_protection_rule:
+ # To guarantee Maintained check is occasionally updated. See
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
+
+ # Run every Monday at 16:30 UTC
+ schedule:
+ - cron: '30 16 * * 1'
+
+jobs:
+ run-s3p-tests:
+ runs-on: ubuntu-22.04
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Run S3P script
+ working-directory: ${{ github.workspace }}/testsuites
+ run: sudo bash ./run-s3p-test.sh run stability
+
+ - name: Archive result jtl
+ uses: actions/upload-artifact@v4
+ with:
+ name: policy-apex-s3p-results
+ path: ${{ github.workspace }}/testsuites/automate-s3p-test/s3pTestResults.jtl
+
+ - name: Archive JMeter logs
+ uses: actions/upload-artifact@v4
+ with:
+ name: policy-apex-s3p-results
+ path: ${{ github.workspace }}/testsuites/automate-s3p-test/jmeter.log
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables">
<collectionProp name="Arguments.arguments"/>
</elementProp>
+ <boolProp name="TestPlan.functional_mode">false</boolProp>
</TestPlan>
<hashTree>
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager">
</elementProp>
</SetupThreadGroup>
<hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="CreatePolicy-ApexExample">
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="CreatePolicy-ApexExample" enabled="true">
<intProp name="HTTPSampler.concurrentPool">6</intProp>
<stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
<stringProp name="HTTPSampler.port">${API_PORT}</stringProp>
<hashTree>
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
<collectionProp name="Asserion.test_strings">
- <stringProp name="49586">200</stringProp>
+ <stringProp name="49587">201</stringProp>
</collectionProp>
<stringProp name="Assertion.custom_message"></stringProp>
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
</ResponseAssertion>
<hashTree/>
</hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="CreatePolicy-SimpleCL">
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="CreatePolicy-SimpleCL" enabled="true">
<intProp name="HTTPSampler.concurrentPool">6</intProp>
<stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
<stringProp name="HTTPSampler.port">${API_PORT}</stringProp>
<hashTree>
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
<collectionProp name="Asserion.test_strings">
- <stringProp name="49586">200</stringProp>
+ <stringProp name="49587">201</stringProp>
</collectionProp>
<stringProp name="Assertion.custom_message"></stringProp>
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
<hashTree>
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
<collectionProp name="Asserion.test_strings">
- <stringProp name="49588">202</stringProp>
+ <stringProp name="49587">201</stringProp>
</collectionProp>
<stringProp name="Assertion.custom_message"></stringProp>
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
</ConstantTimer>
<hashTree/>
</hashTree>
- <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group">
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
<stringProp name="ThreadGroup.num_threads">${threads}</stringProp>
<intProp name="ThreadGroup.ramp_time">1</intProp>
<longProp name="ThreadGroup.duration">259200</longProp>
</ResponseAssertion>
<hashTree/>
</hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Prometheus Metrics">
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Prometheus Metrics" enabled="true">
<intProp name="HTTPSampler.concurrentPool">6</intProp>
<stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
<stringProp name="HTTPSampler.port">${APEX_PORT}</stringProp>
import org.apache.kafka.common.serialization.StringSerializer
def props = new Properties()
-props.put("bootstrap.servers", "kafka:9092")
-props.put("group.id", "new-group")
+props.put("bootstrap.servers", "localhost:9092")
props.put("acks", "all")
props.put("retries", 0)
props.put("batch.size", 16384)
// Consumer properties
def props = new Properties()
-props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka:9092") // Adjust to your Kafka bootstrap server
+props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092") // Adjust to your Kafka bootstrap server
props.put(ConsumerConfig.GROUP_ID_CONFIG, "apex-group")
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName())
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName())
</JSR223Sampler>
<hashTree/>
</hashTree>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test example policy - success"/>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test example policy - success" enabled="false"/>
<hashTree>
- <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler">
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true">
<stringProp name="scriptLanguage">groovy</stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="filename"></stringProp>
</stringProp>
</JSR223Sampler>
<hashTree/>
- <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success">
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success" enabled="true">
<stringProp name="scriptLanguage">groovy</stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="filename"></stringProp>
</JSR223Sampler>
<hashTree/>
</hashTree>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test simple-cl policy - failure"/>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test simple-cl policy - failure" enabled="false"/>
<hashTree>
- <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Send Trigger Event - simple-cl failure">
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Send Trigger Event - simple-cl failure" enabled="true">
<stringProp name="cacheKey">true</stringProp>
<stringProp name="filename"></stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="scriptLanguage">groovy</stringProp>
</JSR223Sampler>
<hashTree/>
- <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success">
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success" enabled="true">
<stringProp name="scriptLanguage">groovy</stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="filename"></stringProp>
</JSR223Sampler>
<hashTree/>
</hashTree>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test example policy - failure"/>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test example policy - failure" enabled="false"/>
<hashTree>
- <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Send Trigger Event - example failure">
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Send Trigger Event - example failure" enabled="true">
<stringProp name="cacheKey">true</stringProp>
<stringProp name="filename"></stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="scriptLanguage">groovy</stringProp>
</JSR223Sampler>
<hashTree/>
- <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success">
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success" enabled="true">
<stringProp name="scriptLanguage">groovy</stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="filename"></stringProp>
<hashTree/>
</hashTree>
</hashTree>
- <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group">
+ <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
<intProp name="ThreadGroup.num_threads">1</intProp>
<intProp name="ThreadGroup.ramp_time">1</intProp>
<boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
</ResponseAssertion>
<hashTree/>
</hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Policy">
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Policy" enabled="true">
<intProp name="HTTPSampler.concurrentPool">6</intProp>
<stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
<stringProp name="HTTPSampler.port">${API_PORT}</stringProp>
<stringProp name="filename">/home/wayne/dev/s3ps/apex-pdp/testsuites/apex-pdp-stability/src/main/resources/s3pTestResults.jtl</stringProp>
</ResultCollector>
<hashTree/>
- <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table">
+ <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
<boolProp name="ResultCollector.error_logging">false</boolProp>
<objProp>
<name>saveConfig</name>
<stringProp name="HTTPSampler.implementation"></stringProp>
</ConfigTestElement>
<hashTree/>
- <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables">
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments">
<elementProp name="threads" elementType="Argument">
<stringProp name="Argument.name">threads</stringProp>
</collectionProp>
</Arguments>
<hashTree/>
- <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager">
+ <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
<collectionProp name="AuthManager.auth_list">
<elementProp name="" elementType="Authorization">
<stringProp name="Authorization.url">http://${HOSTNAME}:${API_PORT}</stringProp>
<boolProp name="AuthManager.controlledByThreadGroup">false</boolProp>
</AuthManager>
<hashTree/>
- <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group">
+ <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
<intProp name="ThreadGroup.num_threads">1</intProp>
<intProp name="ThreadGroup.ramp_time">1</intProp>
<boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
</elementProp>
</SetupThreadGroup>
<hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="CreatePolicy-ApexExample" enabled="true">
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="CreatePolicy-ApexExample">
<intProp name="HTTPSampler.concurrentPool">6</intProp>
<stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
<stringProp name="HTTPSampler.port">${API_PORT}</stringProp>
</elementProp>
</HTTPSamplerProxy>
<hashTree>
- <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion">
<collectionProp name="Asserion.test_strings">
- <stringProp name="49586">200</stringProp>
+ <stringProp name="49587">201</stringProp>
</collectionProp>
<stringProp name="Assertion.custom_message"></stringProp>
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
</elementProp>
</HTTPSamplerProxy>
<hashTree>
- <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion">
<collectionProp name="Asserion.test_strings">
- <stringProp name="49586">200</stringProp>
+ <stringProp name="49587">201</stringProp>
</collectionProp>
<stringProp name="Assertion.custom_message"></stringProp>
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
</ConstantTimer>
<hashTree/>
</hashTree>
- <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group">
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
<stringProp name="ThreadGroup.num_threads">${threads}</stringProp>
<intProp name="ThreadGroup.ramp_time">1</intProp>
<longProp name="ThreadGroup.duration">7200</longProp>
</elementProp>
</ThreadGroup>
<hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Health Check">
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Health Check" enabled="true">
<intProp name="HTTPSampler.concurrentPool">6</intProp>
<stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
<stringProp name="HTTPSampler.port">${APEX_PORT}</stringProp>
</ResponseAssertion>
<hashTree/>
</hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Prometheus Metrics">
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Prometheus Metrics" enabled="true">
<intProp name="HTTPSampler.concurrentPool">6</intProp>
<stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
<stringProp name="HTTPSampler.port">${APEX_PORT}</stringProp>
</hashTree>
<GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test simple-cl policy - success" enabled="true"/>
<hashTree>
- <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Send Trigger Event - simple-cl success" enabled="true">
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Send Trigger Event - simple-cl success">
<stringProp name="cacheKey">true</stringProp>
<stringProp name="filename"></stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="scriptLanguage">groovy</stringProp>
</JSR223Sampler>
<hashTree/>
- <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success" enabled="true">
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success">
<stringProp name="scriptLanguage">groovy</stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="filename"></stringProp>
</JSR223Sampler>
<hashTree/>
</hashTree>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test example policy - success" enabled="true"/>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test example policy - success" enabled="false"/>
<hashTree>
<JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true">
<stringProp name="scriptLanguage">groovy</stringProp>
</JSR223Sampler>
<hashTree/>
</hashTree>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test simple-cl policy - failure" enabled="true"/>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test simple-cl policy - failure" enabled="false"/>
<hashTree>
<JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Send Trigger Event - simple-cl failure" enabled="true">
<stringProp name="cacheKey">true</stringProp>
<stringProp name="scriptLanguage">groovy</stringProp>
</JSR223Sampler>
<hashTree/>
- <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success">
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success" enabled="true">
<stringProp name="scriptLanguage">groovy</stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="filename"></stringProp>
</JSR223Sampler>
<hashTree/>
</hashTree>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test example policy - failure"/>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test example policy - failure" enabled="false"/>
<hashTree>
<JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Send Trigger Event - example failure" enabled="true">
<stringProp name="cacheKey">true</stringProp>
<stringProp name="scriptLanguage">groovy</stringProp>
</JSR223Sampler>
<hashTree/>
- <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success">
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Read notification events - simplecl success" enabled="true">
<stringProp name="scriptLanguage">groovy</stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="filename"></stringProp>
<hashTree/>
</hashTree>
</hashTree>
- <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group">
+ <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
<intProp name="ThreadGroup.num_threads">1</intProp>
<intProp name="ThreadGroup.ramp_time">1</intProp>
<boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
#!/bin/bash
# ============LICENSE_START=======================================================
-# Copyright (C) 2023 Nordix Foundation. All rights reserved.
+# Copyright (C) 2023-2024 Nordix Foundation. 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.
if [ $1 == "run" ]
then
- mkdir automate-performance;cd automate-performance;
+ mkdir automate-s3p-test;cd automate-s3p-test;
git clone "https://gerrit.onap.org/r/policy/docker"
cd docker/csit
else
echo "Invalid arguments provided. Usage: $0 [option..] {run | uninstall}"
fi
-