| #!/usr/bin/env bash |
| |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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. |
| # |
| |
| source env.sh |
| |
| # Check whether we have any globally configured IPv6 addresses |
| # - if not then we can't run the tests because ipv6 lookups won't |
| # work within the qpid code. This is a deliberate feature to avoid |
| # getting addresses that can't be routed by the machine. |
| |
| if ip -f inet6 -o addr | cut -f 9 -s -d' ' | grep global > /dev/null ; then |
| echo "IPv6 addresses configured - continuing" |
| else |
| echo "No global IPv6 addresses configured - skipping test" |
| exit 0 |
| fi |
| |
| |
| CONFIG=$(dirname $0)/qpidd-empty.conf |
| TEST_HOSTNAME=::1 |
| COUNT=10 |
| |
| trap cleanup EXIT |
| |
| error() { echo $*; exit 1; } |
| |
| # Don't need --no-module-dir or --no-data-dir as they are set as env vars in env.sh |
| COMMON_OPTS="--interface [::1] --daemon --auth no --config $CONFIG" |
| |
| # Record all broker ports started |
| unset PORTS |
| declare -a PORTS |
| |
| # Start new brokers: |
| # $1 must be integer |
| # $2 = extra opts |
| # Append used ports to PORTS variable |
| start_brokers() { |
| local -a ports |
| for (( i=0; $i<$1; i++)) do |
| ports[$i]=$(qpidd --port 0 $COMMON_OPTS $2) |
| done |
| PORTS=( ${PORTS[@]} ${ports[@]} ) |
| } |
| |
| stop_brokers() { |
| for port in "${PORTS[@]}"; |
| do |
| qpidd -qp $port |
| done |
| PORTS=() |
| } |
| |
| cleanup() { |
| stop_brokers |
| } |
| |
| start_brokers 1 |
| PORT=${PORTS[0]} |
| echo "Started IPv6 smoke perftest on broker port $PORT" |
| |
| ## Test connection via connection settings |
| qpid-perftest --count ${COUNT} --port ${PORT} -b $TEST_HOSTNAME --summary |
| |
| ## Test connection with a URL |
| URL="amqp:[$TEST_HOSTNAME]:$PORT" |
| |
| qpid-send -b $URL --content-string=hello -a "foo;{create:always}" |
| MSG=`qpid-receive -b $URL -a "foo;{create:always}" --messages 1` |
| test "$MSG" = "hello" || { echo "receive failed '$MSG' != 'hello'"; exit 1; } |
| |
| stop_brokers |
| |
| # Federation smoke test follows |
| |
| # Start 2 brokers |
| |
| start_brokers 2 |
| echo "Started Federated brokers on ports ${PORTS[*]}" |
| # Make broker urls |
| BROKER0="[::1]:${PORTS[0]}" |
| BROKER1="[::1]:${PORTS[1]}" |
| TEST_QUEUE=ipv6-fed-test |
| |
| qpid-config -b $BROKER0 add queue $TEST_QUEUE |
| qpid-config -b $BROKER1 add queue $TEST_QUEUE |
| qpid-route dynamic add $BROKER1 $BROKER0 amq.direct |
| qpid-config -b $BROKER1 bind amq.direct $TEST_QUEUE $TEST_QUEUE |
| qpid-route route map $BROKER1 |
| |
| datagen --count 100 | tee rdata-in | |
| ./qpid-send -b amqp:$BROKER0 -a amq.direct/$TEST_QUEUE --content-stdin |
| qpid-receive -b amqp:$BROKER1 -a $TEST_QUEUE --print-content yes -m 0 > rdata-out |
| |
| cmp rdata-in rdata-out || { echo "Federated data over IPv6 does not compare"; exit 1; } |
| |
| stop_brokers |
| rm rdata-in rdata-out |