#!/bin/bash -xe # 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. # This script is executed inside post_test_hook function in devstack gate. function export_subunit_data { target="$1" if [ -f .testrepository/0 ]; then sudo testr last --subunit > $WORKSPACE/testrepository.subunit.$target fi } function generate_testr_results { cat $WORKSPACE/testrepository.subunit.* | sudo tee $BASE/logs/testrepository.subunit sudo /usr/os-testr-env/bin/subunit2html $BASE/logs/testrepository.subunit $BASE/logs/testr_results.html sudo gzip -9 $BASE/logs/testrepository.subunit sudo gzip -9 $BASE/logs/testr_results.html sudo chown $USER:$USER $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz sudo chmod a+r $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz } function generate_telemetry_report(){ set -x set +e echo "* Message queue status:" sudo rabbitmqctl list_queues | grep -e \\.sample -e \\.info source $BASE/new/devstack/openrc admin admin echo "* Heat stack:" openstack stack show integration_test echo "* Alarm list:" aodh alarm list echo "* Alarm show:" aodh alarm show $(aodh alarm list -f value -c alarm_id) echo "* Nova instance list:" openstack server list --all-projects echo "* Gnocchi instance list:" gnocchi resource list -t instance for instance_id in $(openstack server list -f value -c ID --all-projects); do echo "* Nova instance detail:" openstack server show $instance_id echo "* Gnocchi instance detail:" gnocchi resource show -t instance $instance_id echo "* Gnocchi measures for instance ${instance_id}:" if [[ $ZUUL_BRANCH =~ (stable/ocata|stable/pike|stable/queens|stable/rocky) ]]; then gnocchi metric show -r $instance_id cpu_util gnocchi --debug measures show -r $instance_id --aggregation mean cpu_util else gnocchi metric show -r $instance_id cpu gnocchi --debug measures show -r $instance_id --aggregation rate:mean cpu fi done gnocchi status echo "* Unprocessed measures:" for key in $(redis-cli --scan --pattern 'incoming*'); do echo -n "$key length = " && redis-cli llen $key; done echo "* locale:" locale echo echo "* tempest locale:" sudo -H -u tempest locale echo echo "* tempest tox locale:" sudo -H -u tempest tox -evenv-tempest -- locale echo set -e set -x } function generate_reports_and_maybe_exit() { local ret="$1" if [[ $ret != 0 ]]; then # Collect and parse result generate_telemetry_report generate_testr_results exit $ret fi } function change_config_for_old_branch() { local TEMPEST_CONFIG="$BASE/new/tempest/etc/tempest.conf" if [[ $ZUUL_BRANCH =~ (stable/ocata|stable/pike|stable/queens|stable/rocky) ]]; then if ! sudo grep -q "alarm_aggregation_method" "$TEMPEST_CONFIG" 2>/dev/null; then sudo echo -e "alarm_aggregation_method = mean" | sudo tee --append "$TEMPEST_CONFIG" > /dev/null sudo echo -e "alarm_metric_name = cpu_util" | sudo tee --append "$TEMPEST_CONFIG" > /dev/null else sudo sed -e "s/\(^\s*alarm_aggregation_method \s*=\).*$/\1 mean/" -i "$TEMPEST_CONFIG" sudo sed -e "s/\(^\s*alarm_metric_name \s*=\).*$/\1 cpu_util/" -i "$TEMPEST_CONFIG" fi fi } # Run tests with tempest sudo chown -R tempest:stack $BASE/new/tempest sudo chown -R tempest:stack $BASE/data/tempest cd $BASE/new/tempest change_config_for_old_branch sudo -H -u tempest tox -evenv-tempest -- pip install /opt/stack/new/telemetry-tempest-plugin sudo -H -u tempest tox -evenv-tempest -- pip install /opt/stack/new/heat-tempest-plugin echo "Checking installed Tempest plugins:" sudo -H -u tempest tox -evenv-tempest -- tempest list-plugins set +e sudo -H -u tempest OS_TEST_TIMEOUT=$TEMPEST_OS_TEST_TIMEOUT tox -evenv-tempest -- tempest run -r telemetry_tempest_plugin --concurrency=$TEMPEST_CONCURRENCY EXIT_CODE=$? set -e export_subunit_data "venv-tempest" generate_reports_and_maybe_exit $EXIT_CODE exit $EXIT_CODE