summaryrefslogtreecommitdiff
path: root/cc
diff options
context:
space:
mode:
authorArnaud Simon <arnaudsimon@apache.org>2008-06-30 13:53:48 +0000
committerArnaud Simon <arnaudsimon@apache.org>2008-06-30 13:53:48 +0000
commit9cf0d38fe457a52536ec6418823fa7f37709c767 (patch)
tree006d59c51863aa5d4978c832a860ffec82d159cd /cc
parent89b4fce1cd32afc56947222a6ecbeec70336f34d (diff)
downloadqpid-python-9cf0d38fe457a52536ec6418823fa7f37709c767.tar.gz
QPID-1157: Added cc example automation scripts
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@672766 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cc')
-rw-r--r--cc/config.xml1
-rw-r--r--cc/config/example-automation.xml64
-rwxr-xr-xcc/scripts/check_examples.sh69
-rwxr-xr-xcc/scripts/verify98
-rwxr-xr-xcc/scripts/verify_all126
5 files changed, 358 insertions, 0 deletions
diff --git a/cc/config.xml b/cc/config.xml
index 3b94d568b7..a9f81c1f4a 100644
--- a/cc/config.xml
+++ b/cc/config.xml
@@ -22,4 +22,5 @@ under the License.
<include.projects file="./config/java-trunk.xml"/>
<include.projects file="./config/bdbstore-cpp-trunk.xml"/>
<include.projects file="./config/cpp-trunk-perftests.xml"/>
+ <include.projects file="./config/example-automation.xml"/>
</cruisecontrol>
diff --git a/cc/config/example-automation.xml b/cc/config/example-automation.xml
new file mode 100644
index 0000000000..7dc69bd052
--- /dev/null
+++ b/cc/config/example-automation.xml
@@ -0,0 +1,64 @@
+<!--
+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.
+-->
+<cruisecontrol>
+ <project name="qpid-example-automation"
+ buildafterfailed="false">
+
+ <!-- Load environment variables -->
+ <property environment="env" toupper="true"/>
+
+ <listeners>
+ <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
+ </listeners>
+
+ <modificationset quietperiod="30">
+ <buildstatus logdir="logs/qpid-cpp-trunk/"/>
+ <buildstatus logdir="logs/qpid-java-trunk/"/>
+ <buildstatus logdir="logs/bdbstore-cpp-trunk/"/>
+ </modificationset>
+
+ <schedule interval="3600">
+ <exec timeout="1800"
+ command="/bin/bash"
+ args="${env.CC_HOME}/cc/scripts/check_examples.sh"
+ errorstr="FAILED"
+ workingdir="./" />
+ </schedule>
+
+ <publishers>
+ <artifactspublisher dest="artifacts/${project.name}"
+ file="${env.CC_HOME}/broker.log"/>
+ <artifactspublisher dest="artifacts/${project.name}"
+ file="${env.CC_HOME}/script.log"/>
+
+ <!--
+ <email subjectprefix="CC report fro ${project.name}" mailhost="localhost"
+ returnaddress="my_email"
+ buildresultsurl="http://my_host:8080/buildresults/${project.name}"
+ skipusers="false"
+ reportsuccess="fixes"
+ spamwhilebroken="true">
+ <always address="email"/>
+ <map alias="name" address="email"/>
+ </email>
+ -->
+
+ </publishers>
+ </project>
+</cruisecontrol>
diff --git a/cc/scripts/check_examples.sh b/cc/scripts/check_examples.sh
new file mode 100755
index 0000000000..c10936b36c
--- /dev/null
+++ b/cc/scripts/check_examples.sh
@@ -0,0 +1,69 @@
+#!/bin/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.
+###########################################################
+
+runVerifyScript()
+{
+ echo "-----------<Run verify scripts>-------------"
+ $CC_HOME/cc/scripts/verify_all
+ echo "-----------</Run verify scripts>------------"
+ echo ""
+}
+
+cleanup()
+{
+rm -f $CC_HOME/script.log
+rm -f $CC_HOME/status.log
+rm -f $CC_HOME/broker.log
+}
+
+checkErrors()
+{
+if test `cat $CC_HOME/script.log | grep -c 'FAIL'` -gt 0
+then
+ echo "FAILED"
+ printErrors > $CC_HOME/status.log
+fi
+}
+
+printErrors(){
+ echo "<desc>The following scripts had failures"
+ cat CC_HOME/script.log | awk '{
+ script = ""
+ while ((getline) == 1)
+ {
+ if ($1 == "script:")
+ {
+ script = $0
+ }
+ if ($1 == "FAIL")
+ {
+ print substr(script,9)
+ }
+ }}'
+ echo "</desc>"
+}
+
+echo "*************************************"
+echo "Example Automation "
+echo ""
+cleanup
+runVerifyScript
+checkErrors
+echo "*************************************"
diff --git a/cc/scripts/verify b/cc/scripts/verify
new file mode 100755
index 0000000000..c183fee323
--- /dev/null
+++ b/cc/scripts/verify
@@ -0,0 +1,98 @@
+#!/bin/sh
+###########################################################
+#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.
+###########################################################
+
+export CLASSPATH=`find "$CC_HOME/java/build/lib" -name '*.jar' | tr '\n' ":"`
+export CPP=$CC_HOME/cpp/examples
+export JAVA=$CC_HOME/java/client/example/src/main/java
+export PYTHONPATH=$CC_HOME/python/
+export PYTHON_EXAMPLES=$CC_HOME/python/examples
+
+cleanup() {
+ test -n "$QPIDD" && $QPIDD -q # Private broker
+ kill %% > /dev/null 2>&1 # Leftover background jobs
+}
+
+trap cleanup EXIT
+
+ARGS="${QPID_HOST:-localhost} $QPID_PORT"
+
+outfile() {
+ file=$1
+ while [ -f $file.out ]; do file="${file}X"; done
+ echo $file.out
+ }
+
+fail() { test -n "$*" && echo $* 1>&2 ; FAIL=1; return 1; }
+
+client()
+{
+ "$@" $ARGS > `outfile $*` || fail;
+}
+
+clients() { for cmd in "$@"; do client $cmd; done; }
+
+waitfor() { until grep -a -l "$2" $1 >/dev/null 2>&1 ; do sleep 1 ; done ; }
+
+background() {
+ pattern=$1; shift
+ out=`outfile $*`
+ eval "$* $ARGS > $out &" || { fail; return 1; }
+ waitfor $out "$pattern"
+}
+
+name() {
+ for x in $*; do name="$name `basename $x`"; done
+ echo $name;
+}
+
+outputs() {
+ wait 2> /dev/null # Wait for all backgroud processes to complete
+ rm -f $script.out
+ for f in "$@"; do
+ { echo "==== `name $f`"; eval "cat $f"; } >> $script.out || fail
+ rm -rf `echo $f| awk '{ print $1 }'`
+ done
+}
+
+verify() {
+ FAIL=
+ if [ -d $1 ]; then dir=$1; script=verify;
+ else dir=`dirname $1`; script=`basename $1`; fi
+ cd $dir || return 1
+ rm -f *.out
+ { source ./$script && diff -ac $script.out $script.in ; } || fail
+ test -z "$FAIL" && rm -f *.out
+ return $FAIL
+}
+
+HEX="[a-fA-F0-9]"
+remove_uuid() {
+ sed "s/$HEX\{8\}-$HEX\{4\}-$HEX\{4\}-$HEX\{4\}-$HEX\{12\}//g" $*
+}
+remove_uuid64() {
+ sed 's/[-A-Za-z0-9_]\{22\}==//g' $*
+}
+
+
+for example in "$@"; do
+ echo "Running: $example "
+ if ( verify $example; ) then echo "PASS"; else echo "FAIL"; RET=1; fi
+ done
+exit $RET
diff --git a/cc/scripts/verify_all b/cc/scripts/verify_all
new file mode 100755
index 0000000000..fcb38f3709
--- /dev/null
+++ b/cc/scripts/verify_all
@@ -0,0 +1,126 @@
+#!/bin/sh
+###########################################################
+#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.
+###########################################################
+
+cleanup()
+{
+ echo "******************************************************"
+ echo "Cleanup"
+ echo "******************************************************"
+ for PID in `ps aux | grep 'qpidd'|grep 'broker.log'|grep -v 'grep'|awk '{ print $2 }'`
+ do
+ kill -9 $PID
+ done
+}
+
+run_broker()
+{
+ echo "******************************************************"
+ echo "Starting C++ broker"
+ echo "******************************************************"
+ echo ""
+ $CC_HOME/cpp/src/qpidd -t -d --auth no --no-data-dir --log-output $CC_HOME/broker.log
+}
+
+stop_broker()
+{
+ echo "******************************************************"
+ echo "Stopping the C++ broker"
+ echo "******************************************************"
+ echo ""
+ $CC_HOME/cpp/src/qpidd -q
+}
+
+verify()
+{
+ #echo "arg " $2 " path: " $1
+ for dir in $(find $1 -mindepth 1 -maxdepth 1 -type d -not -name '*.svn' -not -name $3 )
+ do
+ echo $dir
+ for script in $(find $dir -mindepth 1 -maxdepth 1 -type f -name $2 -not -name '*.*')
+ do
+ # echo "script:" $script
+ cleanup
+ run_broker
+ $CC_HOME/cc/scripts/verify $script >> $CC_HOME/script.log 2>&1
+ killall 'verify'
+ stop_broker
+ done
+done
+}
+
+run_python_python()
+{
+echo "-----------<Running Python/Python combination>---------"
+verify $CC_HOME/python/examples "verify" "xml-exchange"
+echo "-----------</Running Python/Python combination>---------"
+echo ""
+}
+
+
+run_cpp_cpp()
+{
+echo "-----------<Running C++/C++ combination>---------"
+verify $CC_HOME/cpp/examples "verify" "*.svn"
+echo "-----------</Running C++/C++ combination>--------"
+echo ""
+}
+
+run_python_cpp_comb()
+{
+echo "-----------<Running Python/C++ combination>---------"
+verify $CC_HOME/cpp/examples "verify_cpp_python" "*.svn"
+verify $CC_HOME/cpp/examples "verify_python_cpp" "*.svn"
+echo "-----------</Running Python/C++ combination>--------"
+echo ""
+}
+
+
+run_java_java()
+{
+echo "-----------<Running Java/Java combination>---------"
+verify $CC_HOME/java/client/example/src/main/java/org/apache/qpid/example/jmsexample "verify" "*.svn"
+echo "-----------</Running Java/Java combination>--------"
+echo ""
+}
+
+run_java_cpp_comb()
+{
+echo "-----------<Running Java/C++ combination>---------"
+verify $CC_HOME/java/client/example/src/main/java/org/apache/qpid/example/jmsexample "verify_java_cpp" "*.svn"
+verify $CC_HOME/java/client/example/src/main/java/org/apache/qpid/example/jmsexample "verify_cpp_java" "*.svn"
+echo "-----------</Running Java/C++ combination>--------"
+echo ""
+}
+
+run_java_python_comb()
+{
+echo "-----------<Running Java/Python combination>---------"
+verify $CC_HOME/java/client/example/src/main/java/org/apache/qpid/example/jmsexample "verify_java_python" "*.svn"
+verify $CC_HOME/java/client/example/src/main/java/org/apache/qpid/example/jmsexample "verify_python_java" "*.svn"
+echo "-----------</Running Java/Python combination>--------"
+echo ""
+}
+
+run_python_python
+run_python_cpp_comb
+run_cpp_cpp
+run_java_java
+run_java_cpp_comb
+run_java_python_comb