|  | #!/usr/bin/env bash | 
|  | # | 
|  | # 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. | 
|  |  | 
|  |  | 
|  | TOP=$(cd $(dirname "$0")/.. && pwd) | 
|  |  | 
|  | export TOP_DIR=$TOP | 
|  |  | 
|  | # we don't actually care about the HOST_IP | 
|  | HOST_IP="don't care" | 
|  | # Import common functions | 
|  | source $TOP/functions | 
|  | source $TOP/stackrc | 
|  | source $TOP/lib/tls | 
|  | for i in $TOP/lib/*; do | 
|  | if [[ -f $i ]]; then | 
|  | source $i | 
|  | fi | 
|  | done | 
|  |  | 
|  | ALL_LIBS="python-novaclient oslo.config pbr oslo.context" | 
|  | ALL_LIBS+=" python-keystoneclient taskflow oslo.middleware pycadf" | 
|  | ALL_LIBS+=" python-glanceclient python-ironicclient" | 
|  | ALL_LIBS+=" oslo.messaging oslo.log cliff python-heatclient stevedore" | 
|  | ALL_LIBS+=" python-cinderclient glance_store oslo.concurrency oslo.db" | 
|  | ALL_LIBS+=" oslo.versionedobjects oslo.vmware keystonemiddleware" | 
|  | ALL_LIBS+=" oslo.serialization django_openstack_auth" | 
|  | ALL_LIBS+=" python-openstackclient osc-lib os-client-config oslo.rootwrap" | 
|  | ALL_LIBS+=" oslo.i18n oslo.utils python-swiftclient" | 
|  | ALL_LIBS+=" python-neutronclient tooz ceilometermiddleware oslo.policy" | 
|  | ALL_LIBS+=" debtcollector os-brick automaton futurist oslo.service" | 
|  | ALL_LIBS+=" oslo.cache oslo.reports osprofiler" | 
|  | ALL_LIBS+=" keystoneauth ironic-lib neutron-lib oslo.privsep" | 
|  | ALL_LIBS+=" diskimage-builder os-vif python-brick-cinderclient-ext" | 
|  |  | 
|  | # Generate the above list with | 
|  | # echo ${!GITREPO[@]} | 
|  |  | 
|  | function check_exists { | 
|  | local thing=$1 | 
|  | local hash=$2 | 
|  | local key=$3 | 
|  | if [[ ! -z "$VERBOSE" ]]; then | 
|  | echo "Checking for $hash[$key]" | 
|  | fi | 
|  | if [[ -z $thing ]]; then | 
|  | echo "$hash[$key] does not exit!" | 
|  | exit 1 | 
|  | else | 
|  | if [[ ! -z "$VERBOSE" ]]; then | 
|  | echo "$hash[$key] => $thing" | 
|  | fi | 
|  | fi | 
|  | } | 
|  |  | 
|  | function test_all_libs_upto_date { | 
|  | # this is all the magics | 
|  | local found_libs=${!GITREPO[@]} | 
|  | declare -A all_libs | 
|  | for lib in $ALL_LIBS; do | 
|  | all_libs[$lib]=1 | 
|  | done | 
|  |  | 
|  | for lib in $found_libs; do | 
|  | if [[ -z ${all_libs[$lib]} ]]; then | 
|  | echo "Library '$lib' not listed in unit tests, please add to ALL_LIBS" | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | done | 
|  | echo "test_all_libs_upto_date PASSED" | 
|  | } | 
|  |  | 
|  | function test_libs_exist { | 
|  | local lib="" | 
|  | for lib in $ALL_LIBS; do | 
|  | check_exists "${GITREPO[$lib]}" "GITREPO" "$lib" | 
|  | check_exists "${GITBRANCH[$lib]}" "GITBRANCH" "$lib" | 
|  | check_exists "${GITDIR[$lib]}" "GITDIR" "$lib" | 
|  | done | 
|  |  | 
|  | echo "test_libs_exist PASSED" | 
|  | } | 
|  |  | 
|  | function test_branch_master { | 
|  | for lib in $ALL_LIBS; do | 
|  | if [[ ${GITBRANCH[$lib]} != "master" ]]; then | 
|  | echo "GITBRANCH for $lib not master (${GITBRANCH[$lib]})" | 
|  | exit 1 | 
|  | fi | 
|  | done | 
|  |  | 
|  | echo "test_branch_master PASSED" | 
|  | } | 
|  |  | 
|  | set -o errexit | 
|  |  | 
|  | test_libs_exist | 
|  | test_branch_master | 
|  | test_all_libs_upto_date |