The Jenkins job to run the Java client tests against the C++ broker has been failing since this commit last week. It seems to be having trouble trying to copy a file to its own location.
https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-Java-Cpp-Test/1431/ Is this an issue with the Jenkins job, or the build process? (The job is still using the Autotools build, as we have yet to try swapping it to CMake and requesting installation of any necessary packages on the Jenkins nodes...anyone actually working on C++ bits is of course also welcome to volunteer :P) Robbie On 18 June 2013 22:09, <acon...@apache.org> wrote: > Author: aconway > Date: Tue Jun 18 21:09:19 2013 > New Revision: 1494306 > > URL: http://svn.apache.org/r1494306 > Log: > QPID-4745: Alternative port allocation for tests, instead of 'qpidd > --port=0' > > qpidd-p0 script binds a new port to a socket using bind(0), and then > execs qpidd using the --socket-fd option to pass the socket to qpidd. > > It is intended to replace > /path/to/qpidd --port 0 <args...> > with > qpidd-p0 /path/to/qpidd <args...> > > Most tests do not yet use qpidd-p0, they will be updated in a future > commit. > > Changes: > - Added qpidd-p0 > - Fixed qpidd port printing logic: print port only if --port=0, regardless > of --transport. > > Added: > qpid/trunk/qpid/cpp/src/tests/qpidd-p0 (with props) > Modified: > qpid/trunk/qpid/cpp/src/posix/QpiddBroker.cpp > qpid/trunk/qpid/cpp/src/tests/CMakeLists.txt > qpid/trunk/qpid/cpp/src/tests/Makefile.am > > Modified: qpid/trunk/qpid/cpp/src/posix/QpiddBroker.cpp > URL: > http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/posix/QpiddBroker.cpp?rev=1494306&r1=1494305&r2=1494306&view=diff > > ============================================================================== > --- qpid/trunk/qpid/cpp/src/posix/QpiddBroker.cpp (original) > +++ qpid/trunk/qpid/cpp/src/posix/QpiddBroker.cpp Tue Jun 18 21:09:19 2013 > @@ -132,8 +132,8 @@ struct QpiddDaemon : public Daemon { > /** Code for parent process */ > void parent() { > uint16_t port = wait(options->daemon.wait); > - if (options->parent->broker.port == 0 || > options->daemon.transport != TCP) > - cout << port << endl; > + if (options->parent->broker.port == 0 > + ) cout << port << endl; > } > > /** Code for forked child process */ > @@ -196,7 +196,7 @@ int QpiddBroker::execute (QpiddOptions * > boost::intrusive_ptr<Broker> brokerPtr(new > Broker(options->broker)); > ScopedSetBroker ssb(brokerPtr); > brokerPtr->accept(); > - if (options->broker.port == 0 || myOptions->daemon.transport != > TCP) { > + if (options->broker.port == 0) { > uint16_t port = > brokerPtr->getPort(myOptions->daemon.transport); > cout << port << endl; > if (options->broker.enableMgmt) { > > Modified: qpid/trunk/qpid/cpp/src/tests/CMakeLists.txt > URL: > http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/CMakeLists.txt?rev=1494306&r1=1494305&r2=1494306&view=diff > > ============================================================================== > --- qpid/trunk/qpid/cpp/src/tests/CMakeLists.txt (original) > +++ qpid/trunk/qpid/cpp/src/tests/CMakeLists.txt Tue Jun 18 21:09:19 2013 > @@ -47,6 +47,8 @@ else (CMAKE_SYSTEM_NAME STREQUAL Windows > ${CMAKE_CURRENT_BINARY_DIR}/test_env.sh) > endif (CMAKE_SYSTEM_NAME STREQUAL Windows) > > +# Copy qpidd-p0 script to build directory so tests can find it. > +configure_file (${CMAKE_CURRENT_SOURCE_DIR}/qpidd-p0 > ${CMAKE_CURRENT_BINARY_DIR} COPYONLY) > > # If valgrind is selected in the configuration step, set up the path to it > # for CTest. > > Modified: qpid/trunk/qpid/cpp/src/tests/Makefile.am > URL: > http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/Makefile.am?rev=1494306&r1=1494305&r2=1494306&view=diff > > ============================================================================== > --- qpid/trunk/qpid/cpp/src/tests/Makefile.am (original) > +++ qpid/trunk/qpid/cpp/src/tests/Makefile.am Tue Jun 18 21:09:19 2013 > @@ -380,13 +380,19 @@ check-long: > $(MAKE) check TESTS="$(LONG_TESTS)" VALGRIND= > > # Things that should be built before the check target runs. > -check-am: python_prep test_env.sh install_env.sh sasl_config > +check-am: python_prep test_env.sh install_env.sh sasl_config qpidd-p0 > > PYTHON_SRC_DIR=$(abs_srcdir)/../../../python > PYTHON_BLD_DIR=$(abs_builddir)/python > > +# Copy qpidd-p0 to build directory so tests can find it easily. > +qpidd-p0: force > + cp $(abs_srcdir)/qpidd-p0 . > + > +force: > + > # Generate python client as part of the all-am target so it gets built > before tests. > -all-am: python_prep > +all-am: python_prep qpidd-p0 > > python_prep: > if test -d $(PYTHON_SRC_DIR); \ > > Added: qpid/trunk/qpid/cpp/src/tests/qpidd-p0 > URL: > http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/qpidd-p0?rev=1494306&view=auto > > ============================================================================== > --- qpid/trunk/qpid/cpp/src/tests/qpidd-p0 (added) > +++ qpid/trunk/qpid/cpp/src/tests/qpidd-p0 Tue Jun 18 21:09:19 2013 > @@ -0,0 +1,46 @@ > +#!/usr/bin/env python > + > +# > +# 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. > +# > + > +# Wrapper script to allocate a port and fork a broker to listen on it. > +# > +# Instead of this: > +# qpidd --port 0 <qpidd-args...> > +# do this: > +# qpidd-p0 <qpidd-args...> > +# > +# The port is bound by python code, and then handed over to the broker > via the > +# --socket-fd option. This avoids problems with the qpidd --port 0 > option which > +# ocassional fails with an "address in use" error. It's not clear why > --port 0 > +# doesn't work, it may be to do with the way qpidd binds a port to > multiple > +# addresses on a multi-homed host. > +# > + > +import subprocess, socket, time, os, sys > + > +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) > +s.bind(("", 0)) > +s.listen(5) > +port = s.getsockname()[1] > +print port > +sys.stdout.flush() > +if len(sys.argv) > 1: > + cmd = sys.argv[1:] + ["--socket-fd", str(s.fileno()), > "--listen-disable=tcp", "--port", str(port)] > + os.execvp(sys.argv[1], cmd) > > Propchange: qpid/trunk/qpid/cpp/src/tests/qpidd-p0 > > ------------------------------------------------------------------------------ > svn:executable = * > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org > For additional commands, e-mail: commits-h...@qpid.apache.org > >