diff options
author | Arnaud Simon <arnaudsimon@apache.org> | 2008-06-30 13:53:48 +0000 |
---|---|---|
committer | Arnaud Simon <arnaudsimon@apache.org> | 2008-06-30 13:53:48 +0000 |
commit | 9cf0d38fe457a52536ec6418823fa7f37709c767 (patch) | |
tree | 006d59c51863aa5d4978c832a860ffec82d159cd /cc | |
parent | 89b4fce1cd32afc56947222a6ecbeec70336f34d (diff) | |
download | qpid-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.xml | 1 | ||||
-rw-r--r-- | cc/config/example-automation.xml | 64 | ||||
-rwxr-xr-x | cc/scripts/check_examples.sh | 69 | ||||
-rwxr-xr-x | cc/scripts/verify | 98 | ||||
-rwxr-xr-x | cc/scripts/verify_all | 126 |
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 |