aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testsuites/performance/src/main/resources/testplans/performance.jmx26
-rw-r--r--testsuites/performance/src/main/resources/testplans/testCsars/test_csar_1.csarbin93619 -> 95329 bytes
-rw-r--r--testsuites/performance/src/main/resources/testplans/testCsars/test_csar_10.csarbin93618 -> 95330 bytes
-rw-r--r--testsuites/performance/src/main/resources/testplans/testCsars/test_csar_2.csarbin93622 -> 95329 bytes
-rw-r--r--testsuites/performance/src/main/resources/testplans/testCsars/test_csar_3.csarbin93622 -> 95329 bytes
-rw-r--r--testsuites/performance/src/main/resources/testplans/testCsars/test_csar_4.csarbin93622 -> 95329 bytes
-rw-r--r--testsuites/performance/src/main/resources/testplans/testCsars/test_csar_5.csarbin93622 -> 95329 bytes
-rw-r--r--testsuites/performance/src/main/resources/testplans/testCsars/test_csar_6.csarbin93622 -> 95329 bytes
-rw-r--r--testsuites/performance/src/main/resources/testplans/testCsars/test_csar_7.csarbin93622 -> 95329 bytes
-rw-r--r--testsuites/performance/src/main/resources/testplans/testCsars/test_csar_8.csarbin93622 -> 95329 bytes
-rw-r--r--testsuites/performance/src/main/resources/testplans/testCsars/test_csar_9.csarbin93622 -> 95329 bytes
-rw-r--r--testsuites/stability/src/main/resources/distributionsetup/distribution/bin/policy-dist.sh11
-rw-r--r--testsuites/stability/src/main/resources/distributionsetup/distribution/etc/logback.xml110
-rwxr-xr-xtestsuites/stability/src/main/resources/distributionsetup/setup_distribution.sh21
-rwxr-xr-xtestsuites/stability/src/main/resources/simulatorsetup/setup_components.sh19
-rw-r--r--testsuites/stability/src/main/resources/testplans/sample_csar_with_apex_policy.csarbin93613 -> 95323 bytes
-rw-r--r--testsuites/stability/src/main/resources/testplans/stability.jmx122
17 files changed, 215 insertions, 94 deletions
diff --git a/testsuites/performance/src/main/resources/testplans/performance.jmx b/testsuites/performance/src/main/resources/testplans/performance.jmx
index 6fd00bfb..d92fe041 100644
--- a/testsuites/performance/src/main/resources/testplans/performance.jmx
+++ b/testsuites/performance/src/main/resources/testplans/performance.jmx
@@ -10,7 +10,7 @@
<collectionProp name="Arguments.arguments">
<elementProp name="PAP_HOST" elementType="Argument">
<stringProp name="Argument.name">PAP_HOST</stringProp>
- <stringProp name="Argument.value">${__P(host,10.2.0.27)}</stringProp>
+ <stringProp name="Argument.value">${__P(host,10.2.0.110)}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="PAP_PORT" elementType="Argument">
@@ -20,7 +20,7 @@
</elementProp>
<elementProp name="API_HOST" elementType="Argument">
<stringProp name="Argument.name">API_HOST</stringProp>
- <stringProp name="Argument.value">${__P(host,10.2.0.27)}</stringProp>
+ <stringProp name="Argument.value">${__P(host,10.2.0.110)}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="API_PORT" elementType="Argument">
@@ -35,12 +35,12 @@
</elementProp>
<elementProp name="DISTRIBUTION_PORT" elementType="Argument">
<stringProp name="Argument.name">DISTRIBUTION_PORT</stringProp>
- <stringProp name="Argument.value">7001</stringProp>
+ <stringProp name="Argument.value">7002</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="DURATION" elementType="Argument">
<stringProp name="Argument.name">DURATION</stringProp>
- <stringProp name="Argument.value">${__P(duration, 259200)}</stringProp>
+ <stringProp name="Argument.value">${__P(duration, 14400)}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="SCRIPT_DIR" elementType="Argument">
@@ -50,7 +50,7 @@
</elementProp>
<elementProp name="WATCHED_FOLDER" elementType="Argument">
<stringProp name="Argument.name">WATCHED_FOLDER</stringProp>
- <stringProp name="Argument.value">${__P(watchedfolder, /tmp/policydistribution/distributionmounts)}</stringProp>
+ <stringProp name="Argument.value">${__P(watchedfolder, /tmp/policydistribution/distributionmount)}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
</collectionProp>
@@ -87,21 +87,21 @@
<AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
<collectionProp name="AuthManager.auth_list">
<elementProp name="" elementType="Authorization">
- <stringProp name="Authorization.url">https://${PAP_HOST}:7000/policy/pap/v1</stringProp>
+ <stringProp name="Authorization.url">https://${PAP_HOST}:${PAP_PORT}/policy/pap/v1</stringProp>
<stringProp name="Authorization.username">healthcheck</stringProp>
<stringProp name="Authorization.password">zb!XztG34</stringProp>
<stringProp name="Authorization.domain"></stringProp>
<stringProp name="Authorization.realm"></stringProp>
</elementProp>
<elementProp name="" elementType="Authorization">
- <stringProp name="Authorization.url">https://${API_HOST}:6969/policy/api/v1</stringProp>
+ <stringProp name="Authorization.url">https://${API_HOST}:${API_PORT}/policy/api/v1</stringProp>
<stringProp name="Authorization.username">healthcheck</stringProp>
<stringProp name="Authorization.password">zb!XztG34</stringProp>
<stringProp name="Authorization.domain"></stringProp>
<stringProp name="Authorization.realm"></stringProp>
</elementProp>
<elementProp name="" elementType="Authorization">
- <stringProp name="Authorization.url">http://127.0.0.1:6969/</stringProp>
+ <stringProp name="Authorization.url">http://${DISTRIBUTION_HOST}:${DISTRIBUTION_PORT}/</stringProp>
<stringProp name="Authorization.username">healthcheck</stringProp>
<stringProp name="Authorization.password">zb!XztG34</stringProp>
<stringProp name="Authorization.domain"></stringProp>
@@ -116,7 +116,7 @@
<SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Remove CSAR" enabled="true">
<boolProp name="SystemSampler.checkReturnCode">false</boolProp>
<stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
- <stringProp name="SystemSampler.command">${SCRIPT_DIR}removecsars.sh</stringProp>
+ <stringProp name="SystemSampler.command">${SCRIPT_DIR}/removecsars.sh</stringProp>
<elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments">
<elementProp name="" elementType="Argument">
@@ -360,7 +360,7 @@
<SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Undeploy/Delete Policies" enabled="true">
<boolProp name="SystemSampler.checkReturnCode">false</boolProp>
<stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
- <stringProp name="SystemSampler.command">${SCRIPT_DIR}clearuppolicies.sh</stringProp>
+ <stringProp name="SystemSampler.command">${SCRIPT_DIR}/clearuppolicies.sh</stringProp>
<elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments">
<elementProp name="" elementType="Argument">
@@ -537,21 +537,21 @@
<AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
<collectionProp name="AuthManager.auth_list">
<elementProp name="" elementType="Authorization">
- <stringProp name="Authorization.url">https://${PAP_HOST}:7000/policy/pap/v1</stringProp>
+ <stringProp name="Authorization.url">https://${PAP_HOST}:${PAP_PORT}/policy/pap/v1</stringProp>
<stringProp name="Authorization.username">healthcheck</stringProp>
<stringProp name="Authorization.password">zb!XztG34</stringProp>
<stringProp name="Authorization.domain"></stringProp>
<stringProp name="Authorization.realm"></stringProp>
</elementProp>
<elementProp name="" elementType="Authorization">
- <stringProp name="Authorization.url">https://${API_HOST}:6969/policy/api/v1</stringProp>
+ <stringProp name="Authorization.url">https://${API_HOST}:${API_PORT}/policy/api/v1</stringProp>
<stringProp name="Authorization.username">healthcheck</stringProp>
<stringProp name="Authorization.password">zb!XztG34</stringProp>
<stringProp name="Authorization.domain"></stringProp>
<stringProp name="Authorization.realm"></stringProp>
</elementProp>
<elementProp name="" elementType="Authorization">
- <stringProp name="Authorization.url">http://127.0.0.1:6969/</stringProp>
+ <stringProp name="Authorization.url">http://${DISTRIBUTION_HOST}:${DISTRIBUTION_PORT}/</stringProp>
<stringProp name="Authorization.username">healthcheck</stringProp>
<stringProp name="Authorization.password">zb!XztG34</stringProp>
<stringProp name="Authorization.domain"></stringProp>
diff --git a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_1.csar b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_1.csar
index 8fbe9e3b..af2f1b7e 100644
--- a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_1.csar
+++ b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_1.csar
Binary files differ
diff --git a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_10.csar b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_10.csar
index 49d7cbeb..a7efde6a 100644
--- a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_10.csar
+++ b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_10.csar
Binary files differ
diff --git a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_2.csar b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_2.csar
index d9e49a95..2d753a9f 100644
--- a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_2.csar
+++ b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_2.csar
Binary files differ
diff --git a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_3.csar b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_3.csar
index 16260a69..7f79af6c 100644
--- a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_3.csar
+++ b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_3.csar
Binary files differ
diff --git a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_4.csar b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_4.csar
index 228c710d..cf60e614 100644
--- a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_4.csar
+++ b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_4.csar
Binary files differ
diff --git a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_5.csar b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_5.csar
index 3e9f73cf..a0cde2f6 100644
--- a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_5.csar
+++ b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_5.csar
Binary files differ
diff --git a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_6.csar b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_6.csar
index 17b9f117..a3a734fb 100644
--- a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_6.csar
+++ b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_6.csar
Binary files differ
diff --git a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_7.csar b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_7.csar
index 8cbd3583..57cd9536 100644
--- a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_7.csar
+++ b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_7.csar
Binary files differ
diff --git a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_8.csar b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_8.csar
index d1047b72..0912002f 100644
--- a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_8.csar
+++ b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_8.csar
Binary files differ
diff --git a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_9.csar b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_9.csar
index 9b777de9..98cd56aa 100644
--- a/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_9.csar
+++ b/testsuites/performance/src/main/resources/testplans/testCsars/test_csar_9.csar
Binary files differ
diff --git a/testsuites/stability/src/main/resources/distributionsetup/distribution/bin/policy-dist.sh b/testsuites/stability/src/main/resources/distributionsetup/distribution/bin/policy-dist.sh
index 3ba423e0..dc1dd702 100644
--- a/testsuites/stability/src/main/resources/distributionsetup/distribution/bin/policy-dist.sh
+++ b/testsuites/stability/src/main/resources/distributionsetup/distribution/bin/policy-dist.sh
@@ -1,8 +1,8 @@
-#!/bin/bash
+#!/bin/sh
#
# ============LICENSE_START=======================================================
# Copyright (C) 2020 Ericsson. All rights reserved.
-# Modifications Copyright (C) 2019-2020 Nordix Foundation.
+# Modifications Copyright (C) 2019-2021 Nordix Foundation.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -32,19 +32,18 @@ else
CONFIG_FILE=${CONFIG_FILE}
fi
-if [ -z "$CONFIG_FILE" ]
- then
+if [ -z "$CONFIG_FILE" ]; then
CONFIG_FILE="${POLICY_HOME}/etc/defaultConfig.json"
fi
if [[ -f "${POLICY_HOME}"/etc/mounted/policy-truststore ]]; then
echo "overriding policy-truststore"
- cp -f "${POLICY_HOME}"/etc/mounted/policy-truststore "${TRUSTSTORE}"
+ cp -f "${POLICY_HOME}"/etc/mounted/policy-truststore "${TRUSTSTORE}"
fi
if [[ -f "${POLICY_HOME}"/etc/mounted/policy-keystore ]]; then
echo "overriding policy-keystore"
- cp -f "${POLICY_HOME}"/etc/mounted/policy-keystore "${KEYSTORE}"
+ cp -f "${POLICY_HOME}"/etc/mounted/policy-keystore "${KEYSTORE}"
fi
if [[ -f "${POLICY_HOME}"/etc/mounted/logback.xml ]]; then
diff --git a/testsuites/stability/src/main/resources/distributionsetup/distribution/etc/logback.xml b/testsuites/stability/src/main/resources/distributionsetup/distribution/etc/logback.xml
new file mode 100644
index 00000000..f1fbde3e
--- /dev/null
+++ b/testsuites/stability/src/main/resources/distributionsetup/distribution/etc/logback.xml
@@ -0,0 +1,110 @@
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 2018 Ericsson. All rights reserved.
+ Modifications Copyright (C) 2021 Nordix Foundation.
+ ================================================================================
+ 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=========================================================
+-->
+
+<configuration scan="true" scanPeriod="30 seconds" debug="false">
+
+ <property name="logDir" value="/home/policydistribution/logs" />
+
+ <property name="errorLog" value="error" />
+ <property name="debugLog" value="debug" />
+ <property name="networkLog" value="network" />
+
+ <property name="metricLog" value="metric" />
+ <property name="transactionLog" value="audit" />
+
+ <property name="debugPattern" value="[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%level|%logger{0}|%thread] %msg%n" />
+ <property name="errorPattern" value="${debugPattern}" />
+ <property name="networkPattern" value="[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%t]%m%n" />
+
+ <property name="metricPattern" value="%X{RequestID}|%X{InvocationID}|%X{ServiceName}|%X{PartnerName}|%X{BeginTimestamp}|%X{EndTimestamp}|%X{ElapsedTime}|%X{ServiceInstanceID}|%X{VirtualServerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%X{Severity}|%X{TargetEntity}|%X{TargetServiceName}|%X{Server}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ProcessKey}|%X{RemoteHost}|%X{AlertSeverity}|%X{TargetVirtualEntity}|%level|%thread| %msg%n" />
+ <property name="transactionPattern" value="${metricPattern}" />
+
+ <appender name="ErrorOut" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDir}/${errorLog}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+ <fileNamePattern>${logDir}/${errorLog}.%d{yyyy-MM-dd}.%i.log.zip
+ </fileNamePattern>
+ <maxFileSize>50MB</maxFileSize>
+ <maxHistory>30</maxHistory>
+ <totalSizeCap>10GB</totalSizeCap>
+ </rollingPolicy>
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ <encoder>
+ <pattern>${errorPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="AsyncErrorOut" class="ch.qos.logback.classic.AsyncAppender">
+ <appender-ref ref="ErrorOut" />
+ </appender>
+
+ <appender name="DebugOut" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDir}/${debugLog}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+ <fileNamePattern>${logDir}/${debugLog}.%d{yyyy-MM-dd}.%i.log.zip
+ </fileNamePattern>
+ <maxFileSize>50MB</maxFileSize>
+ <maxHistory>30</maxHistory>
+ <totalSizeCap>10GB</totalSizeCap>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${debugPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="AsyncDebugOut" class="ch.qos.logback.classic.AsyncAppender">
+ <appender-ref ref="DebugOut" />
+ </appender>
+
+ <appender name="NetworkOut" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDir}/${networkLog}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+ <fileNamePattern>${logDir}/${networkLog}.%d{yyyy-MM-dd}.%i.log.zip
+ </fileNamePattern>
+ <maxFileSize>50MB</maxFileSize>
+ <maxHistory>30</maxHistory>
+ <totalSizeCap>10GB</totalSizeCap>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${networkPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="AsyncNetworkOut" class="ch.qos.logback.classic.AsyncAppender">
+ <appender-ref ref="NetworkOut" />
+ </appender>
+
+ <logger name="network" level="INFO" additivity="false">
+ <appender-ref ref="AsyncNetworkOut" />
+ </logger>
+
+ <logger name="org.eclipse.jetty.server.RequestLog" level="info" additivity="false">
+ <appender-ref ref="AsyncNetworkOut" />
+ </logger>
+
+ <root level="INFO">
+ <appender-ref ref="AsyncDebugOut" />
+ <appender-ref ref="AsyncErrorOut" />
+ </root>
+
+</configuration>
diff --git a/testsuites/stability/src/main/resources/distributionsetup/setup_distribution.sh b/testsuites/stability/src/main/resources/distributionsetup/setup_distribution.sh
index 763f47ed..54bb88a7 100755
--- a/testsuites/stability/src/main/resources/distributionsetup/setup_distribution.sh
+++ b/testsuites/stability/src/main/resources/distributionsetup/setup_distribution.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# ============LICENSE_START=======================================================
-# Copyright (c) 2020 Nordix Foundation.
+# Copyright (c) 2020-2021 Nordix Foundation.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -18,18 +18,17 @@
# ============LICENSE_END=========================================================
# the directory of the script
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo ${DIR}
-if [ "$#" -lt 2 ];
- then
- echo "PAP and PolicyAPI IPs should be passed as two parameters. PAP IP goes first."
- exit 1
+if [ "$#" -lt 2 ]; then
+ echo "PAP and PolicyAPI IPs should be passed as two parameters. PAP IP goes first."
+ exit 1
else
- PAP=$1
- echo "PAP IP: ${PAP}"
- API=$2
- echo "Policy API IP: $API"
+ PAP=$1
+ echo "PAP IP: ${PAP}"
+ API=$2
+ echo "Policy API IP: $API"
fi
-docker run -v /tmp/policydistribution/distributionmount:/home/policydistribution --add-host policy-api:${API} --add-host policy-pap:${PAP} -p 6969:6969 -p 9090:9090 --name policy-distribution -v ${DIR}/distribution/bin/policy-dist.sh:/opt/app/policy/distribution/bin/policy-dist.sh -v ${DIR}/distribution/etc/defaultConfig.json:/opt/app/policy/distribution/etc/defaultConfig.json -d --rm nexus3.onap.org:10001/onap/policy-distribution:2.3.1
+docker run -v /tmp/policydistribution/distributionmount:/home/policydistribution --add-host policy-api:${API} --add-host policy-pap:${PAP} -p 6969:6969 -p 9090:9090 --name policy-distribution -v ${DIR}/distribution/bin/policy-dist.sh:/opt/app/policy/distribution/bin/policy-dist.sh -v ${DIR}/distribution/etc/defaultConfig.json:/opt/app/policy/distribution/etc/defaultConfig.json -v ${DIR}/distribution/etc/logback.xml:/opt/app/policy/distribution/etc/logback.xml -d --rm nexus3.onap.org:10001/onap/policy-distribution:2.5.2-SNAPSHOT
diff --git a/testsuites/stability/src/main/resources/simulatorsetup/setup_components.sh b/testsuites/stability/src/main/resources/simulatorsetup/setup_components.sh
index c77a3cab..55fea5dd 100755
--- a/testsuites/stability/src/main/resources/simulatorsetup/setup_components.sh
+++ b/testsuites/stability/src/main/resources/simulatorsetup/setup_components.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# ============LICENSE_START=======================================================
-# Copyright (c) 2020 Nordix Foundation.
+# Copyright (c) 2020-2021 Nordix Foundation.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -18,12 +18,15 @@
# ============LICENSE_END=========================================================
# the directory of the script
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo ${DIR}
+# change to VM IP
+POLICY_API_HOST=127.0.0.1
+
# the temp directory used, within $DIR
# omit the -p parameter to create a temporal directory in the default location
-WORK_DIR=`mktemp -d -p "$DIR"`
+WORK_DIR=$(mktemp -d -p "$DIR")
echo ${WORK_DIR}
cd ${WORK_DIR}
@@ -47,19 +50,19 @@ git clone http://gerrit.onap.org/r/oparent
git clone --depth 1 https://gerrit.onap.org/r/policy/models -b master
cd models/models-sim/models-sim-dmaap
-${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn clean install -DskipTests --settings ${WORK_DIR}/oparent/settings.xml
+${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn clean install -DskipTests --settings ${WORK_DIR}/oparent/settings.xml
bash ./src/main/package/docker/docker_build.sh
cd ../policy-models-sim-pdp
-${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn clean install -DskipTests --settings ${WORK_DIR}/oparent/settings.xml
+${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn clean install -DskipTests --settings ${WORK_DIR}/oparent/settings.xml
bash ./src/main/package/docker/docker_build.sh
cd ${DIR}
rm -rf ${WORK_DIR}
-docker run -p 3306:3306 -v ${DIR}/config/db:/docker-entrypoint-initdb.d --name mariadb --env-file ${DIR}/config/db/db.conf -d --rm mariadb:10.2.14 --lower-case-table-names=1 --wait_timeout=28800
+docker run -p 3306:3306 -v ${DIR}/config/db:/docker-entrypoint-initdb.d --name mariadb --env-file ${DIR}/config/db/db.conf -d --rm mariadb:10.2.14 --lower-case-table-names=1 --wait_timeout=28800
docker run -p 3904:3904 -d --name message-router --rm dmaap/simulator:latest
sleep 10
docker run --link message-router:message-router -d --rm --name pdp-simulator pdp/simulator:latest
-docker run -p 6969:6969 --link mariadb:mariadb --name policy-api -d --rm nexus3.onap.org:10001/onap/policy-api:2.2.3-SNAPSHOT
-docker run -p 7000:6969 --link mariadb:mariadb --link message-router:message-router --name policy-pap -d --rm nexus3.onap.org:10001/onap/policy-pap:2.2.2-SNAPSHOT
+docker run -p 6969:6969 --link mariadb:mariadb --name policy-api -d --rm nexus3.onap.org:10001/onap/policy-api:2.4.2-SNAPSHOT
+docker run -p 7000:6969 --link mariadb:mariadb --link message-router:message-router --name policy-pap --add-host policy-api:${POLICY_API_HOST} -d --rm nexus3.onap.org:10001/onap/policy-pap:2.4.2-SNAPSHOT
diff --git a/testsuites/stability/src/main/resources/testplans/sample_csar_with_apex_policy.csar b/testsuites/stability/src/main/resources/testplans/sample_csar_with_apex_policy.csar
index 435eaa0f..f1c5fe8a 100644
--- a/testsuites/stability/src/main/resources/testplans/sample_csar_with_apex_policy.csar
+++ b/testsuites/stability/src/main/resources/testplans/sample_csar_with_apex_policy.csar
Binary files differ
diff --git a/testsuites/stability/src/main/resources/testplans/stability.jmx b/testsuites/stability/src/main/resources/testplans/stability.jmx
index 4ad3c405..d29ffda8 100644
--- a/testsuites/stability/src/main/resources/testplans/stability.jmx
+++ b/testsuites/stability/src/main/resources/testplans/stability.jmx
@@ -8,11 +8,6 @@
<boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments">
- <elementProp name="PAP_HOST" elementType="Argument">
- <stringProp name="Argument.name">PAP_HOST</stringProp>
- <stringProp name="Argument.value">${__P(host,10.2.0.27)}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
<elementProp name="SCRIPT_DIR" elementType="Argument">
<stringProp name="Argument.name">SCRIPT_DIR</stringProp>
<stringProp name="Argument.value">${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}</stringProp>
@@ -40,7 +35,17 @@
</elementProp>
<elementProp name="API_HOST" elementType="Argument">
<stringProp name="Argument.name">API_HOST</stringProp>
- <stringProp name="Argument.value">${__P(host,10.2.0.27)}</stringProp>
+ <stringProp name="Argument.value">${__P(host,10.2.0.110)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="API_PORT" elementType="Argument">
+ <stringProp name="Argument.name">API_PORT</stringProp>
+ <stringProp name="Argument.value">6969</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="PAP_HOST" elementType="Argument">
+ <stringProp name="Argument.name">PAP_HOST</stringProp>
+ <stringProp name="Argument.value">${__P(host,10.2.0.110)}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="PAP_PORT" elementType="Argument">
@@ -48,9 +53,14 @@
<stringProp name="Argument.value">7000</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
- <elementProp name="API_PORT" elementType="Argument">
- <stringProp name="Argument.name">API_PORT</stringProp>
- <stringProp name="Argument.value">6969</stringProp>
+ <elementProp name="DISTRIBUTION_HOST" elementType="Argument">
+ <stringProp name="Argument.name">DISTRIBUTION_HOST</stringProp>
+ <stringProp name="Argument.value">${__P(distributionhost,127.0.0.1)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="DISTRIBUTION_PORT" elementType="Argument">
+ <stringProp name="Argument.name">DISTRIBUTION_PORT</stringProp>
+ <stringProp name="Argument.value">7002</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="TESTCSARLOCATION" elementType="Argument">
@@ -93,25 +103,25 @@
</elementProp>
</collectionProp>
</HeaderManager>
- <hashTree/>
+ <hashTree />
<AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
<collectionProp name="AuthManager.auth_list">
<elementProp name="" elementType="Authorization">
- <stringProp name="Authorization.url">https://${PAP_HOST}:7000/policy/pap/v1</stringProp>
+ <stringProp name="Authorization.url">https://${PAP_HOST}:${PAP_PORT}/policy/pap/v1</stringProp>
<stringProp name="Authorization.username">healthcheck</stringProp>
<stringProp name="Authorization.password">zb!XztG34</stringProp>
<stringProp name="Authorization.domain"></stringProp>
<stringProp name="Authorization.realm"></stringProp>
</elementProp>
<elementProp name="" elementType="Authorization">
- <stringProp name="Authorization.url">https://${API_HOST}:6969/policy/api/v1</stringProp>
+ <stringProp name="Authorization.url">https://${API_HOST}:${API_PORT}/policy/api/v1</stringProp>
<stringProp name="Authorization.username">healthcheck</stringProp>
<stringProp name="Authorization.password">zb!XztG34</stringProp>
<stringProp name="Authorization.domain"></stringProp>
<stringProp name="Authorization.realm"></stringProp>
</elementProp>
<elementProp name="" elementType="Authorization">
- <stringProp name="Authorization.url">http://127.0.0.1:6969/</stringProp>
+ <stringProp name="Authorization.url">http://${DISTRIBUTION_HOST}:${DISTRIBUTION_PORT}/</stringProp>
<stringProp name="Authorization.username">healthcheck</stringProp>
<stringProp name="Authorization.password">zb!XztG34</stringProp>
<stringProp name="Authorization.domain"></stringProp>
@@ -120,29 +130,29 @@
</collectionProp>
<boolProp name="AuthManager.clearEachIteration">true</boolProp>
</AuthManager>
- <hashTree/>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Delete Old CSAR" enabled="true"/>
+ <hashTree />
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Delete Old CSAR" enabled="true" />
<hashTree>
<SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Remove CSAR" enabled="true">
<boolProp name="SystemSampler.checkReturnCode">false</boolProp>
<stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
- <stringProp name="SystemSampler.command">${SCRIPT_DIR}removecsar.sh</stringProp>
+ <stringProp name="SystemSampler.command">${SCRIPT_DIR}/removecsar.sh</stringProp>
<elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
- <collectionProp name="Arguments.arguments"/>
+ <collectionProp name="Arguments.arguments" />
</elementProp>
<elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
- <collectionProp name="Arguments.arguments"/>
+ <collectionProp name="Arguments.arguments" />
</elementProp>
<stringProp name="SystemSampler.directory"></stringProp>
</SystemSampler>
- <hashTree/>
+ <hashTree />
</hashTree>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Add CSAR" enabled="true"/>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Add CSAR" enabled="true" />
<hashTree>
<SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Add CSAR script" enabled="true">
<boolProp name="SystemSampler.checkReturnCode">false</boolProp>
<stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
- <stringProp name="SystemSampler.command">${SCRIPT_DIR}addcsar.sh</stringProp>
+ <stringProp name="SystemSampler.command">${SCRIPT_DIR}/addcsar.sh</stringProp>
<elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments">
<elementProp name="" elementType="Argument">
@@ -153,7 +163,7 @@
</collectionProp>
</elementProp>
<elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
- <collectionProp name="Arguments.arguments"/>
+ <collectionProp name="Arguments.arguments" />
</elementProp>
<stringProp name="SystemSampler.directory"></stringProp>
</SystemSampler>
@@ -194,7 +204,7 @@
</objProp>
<stringProp name="filename"></stringProp>
</ResultCollector>
- <hashTree/>
+ <hashTree />
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
<collectionProp name="Asserion.test_strings">
<stringProp name="1737356164">CSAR Copied Successfully</stringProp>
@@ -204,21 +214,21 @@
<boolProp name="Assertion.assume_success">false</boolProp>
<intProp name="Assertion.test_type">2</intProp>
</ResponseAssertion>
- <hashTree/>
+ <hashTree />
</hashTree>
</hashTree>
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
<stringProp name="ConstantTimer.delay">300</stringProp>
</ConstantTimer>
- <hashTree/>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="HealthCheck/Statistics" enabled="true"/>
+ <hashTree />
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="HealthCheck/Statistics" enabled="true" />
<hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Healthcheck" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
- <collectionProp name="Arguments.arguments"/>
+ <collectionProp name="Arguments.arguments" />
</elementProp>
- <stringProp name="HTTPSampler.domain">127.0.0.1</stringProp>
- <stringProp name="HTTPSampler.port">6969</stringProp>
+ <stringProp name="HTTPSampler.domain">${DISTRIBUTION_HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${DISTRIBUTION_PORT}</stringProp>
<stringProp name="HTTPSampler.protocol">http</stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.path">healthcheck</stringProp>
@@ -241,14 +251,14 @@
<boolProp name="Assertion.assume_success">false</boolProp>
<intProp name="Assertion.test_type">8</intProp>
</ResponseAssertion>
- <hashTree/>
+ <hashTree />
</hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Statistics" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
- <collectionProp name="Arguments.arguments"/>
+ <collectionProp name="Arguments.arguments" />
</elementProp>
- <stringProp name="HTTPSampler.domain">127.0.0.1</stringProp>
- <stringProp name="HTTPSampler.port">6969</stringProp>
+ <stringProp name="HTTPSampler.domain">${DISTRIBUTION_HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${DISTRIBUTION_PORT}</stringProp>
<stringProp name="HTTPSampler.protocol">http</stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.path">statistics</stringProp>
@@ -271,14 +281,14 @@
<boolProp name="Assertion.assume_success">false</boolProp>
<intProp name="Assertion.test_type">8</intProp>
</ResponseAssertion>
- <hashTree/>
+ <hashTree />
</hashTree>
</hashTree>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assert Policy Created" enabled="true"/>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assert Policy Created" enabled="true" />
<hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="CheckPDPGroupQuery" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
- <collectionProp name="Arguments.arguments"/>
+ <collectionProp name="Arguments.arguments" />
</elementProp>
<stringProp name="HTTPSampler.domain">${PAP_HOST}</stringProp>
<stringProp name="HTTPSampler.port">${PAP_PORT}</stringProp>
@@ -303,7 +313,7 @@
<boolProp name="INVERT">false</boolProp>
<boolProp name="ISREGEX">false</boolProp>
</JSONPathAssertion>
- <hashTree/>
+ <hashTree />
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
<boolProp name="ResultCollector.error_logging">false</boolProp>
<objProp>
@@ -340,11 +350,11 @@
</objProp>
<stringProp name="filename"></stringProp>
</ResultCollector>
- <hashTree/>
+ <hashTree />
</hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check Policy Deployed" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
- <collectionProp name="Arguments.arguments"/>
+ <collectionProp name="Arguments.arguments" />
</elementProp>
<stringProp name="HTTPSampler.domain">${PAP_HOST}</stringProp>
<stringProp name="HTTPSampler.port">${PAP_PORT}</stringProp>
@@ -363,13 +373,13 @@
<hashTree>
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Assert Policy Type" enabled="true">
<stringProp name="JSON_PATH">$[:2].policy-type</stringProp>
- <stringProp name="EXPECTED_VALUE">onap.policies.controlloop.operational.Apex</stringProp>
+ <stringProp name="EXPECTED_VALUE">onap.policies.controlloop.operational.common.Apex</stringProp>
<boolProp name="JSONVALIDATION">true</boolProp>
<boolProp name="EXPECT_NULL">false</boolProp>
<boolProp name="INVERT">false</boolProp>
<boolProp name="ISREGEX">false</boolProp>
</JSONPathAssertion>
- <hashTree/>
+ <hashTree />
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Assert Policy ID" enabled="true">
<stringProp name="JSON_PATH">$[:2].policy-id</stringProp>
<stringProp name="EXPECTED_VALUE">operational.apex.sampledomain</stringProp>
@@ -378,7 +388,7 @@
<boolProp name="INVERT">false</boolProp>
<boolProp name="ISREGEX">false</boolProp>
</JSONPathAssertion>
- <hashTree/>
+ <hashTree />
</hashTree>
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
<boolProp name="ResultCollector.error_logging">false</boolProp>
@@ -416,17 +426,17 @@
</objProp>
<stringProp name="filename"></stringProp>
</ResultCollector>
- <hashTree/>
+ <hashTree />
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
<stringProp name="ConstantTimer.delay">10000</stringProp>
</ConstantTimer>
- <hashTree/>
+ <hashTree />
</hashTree>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Clear up Policies" enabled="true"/>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Clear up Policies" enabled="true" />
<hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Undeploy Policy " enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
- <collectionProp name="Arguments.arguments"/>
+ <collectionProp name="Arguments.arguments" />
</elementProp>
<stringProp name="HTTPSampler.domain">${PAP_HOST}</stringProp>
<stringProp name="HTTPSampler.port">${PAP_PORT}</stringProp>
@@ -445,18 +455,18 @@
<hashTree>
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
<collectionProp name="Asserion.test_strings">
- <stringProp name="49586">200</stringProp>
+ <stringProp name="49586">202</stringProp>
</collectionProp>
<stringProp name="Assertion.custom_message"></stringProp>
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
<boolProp name="Assertion.assume_success">false</boolProp>
<intProp name="Assertion.test_type">8</intProp>
</ResponseAssertion>
- <hashTree/>
+ <hashTree />
</hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Policy" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
- <collectionProp name="Arguments.arguments"/>
+ <collectionProp name="Arguments.arguments" />
</elementProp>
<stringProp name="HTTPSampler.domain">${API_HOST}</stringProp>
<stringProp name="HTTPSampler.port">${API_PORT}</stringProp>
@@ -482,14 +492,14 @@
<boolProp name="Assertion.assume_success">false</boolProp>
<intProp name="Assertion.test_type">8</intProp>
</ResponseAssertion>
- <hashTree/>
+ <hashTree />
</hashTree>
</hashTree>
- <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assert Policy Deleted" enabled="true"/>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assert Policy Deleted" enabled="true" />
<hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="CheckPDPGroupQueryForDeletedPolicy" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
- <collectionProp name="Arguments.arguments"/>
+ <collectionProp name="Arguments.arguments" />
</elementProp>
<stringProp name="HTTPSampler.domain">${PAP_HOST}</stringProp>
<stringProp name="HTTPSampler.port">${PAP_PORT}</stringProp>
@@ -514,7 +524,7 @@
<boolProp name="INVERT">false</boolProp>
<boolProp name="ISREGEX">false</boolProp>
</JSONPathAssertion>
- <hashTree/>
+ <hashTree />
</hashTree>
</hashTree>
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
@@ -553,7 +563,7 @@
</objProp>
<stringProp name="filename"></stringProp>
</ResultCollector>
- <hashTree/>
+ <hashTree />
<ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
<boolProp name="ResultCollector.error_logging">false</boolProp>
<objProp>
@@ -588,9 +598,9 @@
<connectTime>true</connectTime>
</value>
</objProp>
- <stringProp name="filename">Distribution_Stability_Log</stringProp>
+ <stringProp name="filename">distribution_stability.jtl</stringProp>
</ResultCollector>
- <hashTree/>
+ <hashTree />
</hashTree>
</hashTree>
</hashTree>