Thanks for the reviews. I applied these to master.
On Tue, Feb 12, 2013 at 06:04:01PM -0800, Ethan Jackson wrote: > There's a bit of trailing whitespace in test-unix-socket.py (at least > in the version I cloned from your repo). > > Acked-by: Ethan Jackson <et...@nicira.com> > > On Fri, Feb 1, 2013 at 2:46 PM, Ben Pfaff <b...@nicira.com> wrote: > > Signed-off-by: Ben Pfaff <b...@nicira.com> > > --- > > tests/automake.mk | 1 + > > tests/library.at | 24 ++++++++++++++++++- > > tests/test-unix-socket.py | 54 > > +++++++++++++++++++++++++++++++++++++++++++++ > > 3 files changed, 77 insertions(+), 2 deletions(-) > > create mode 100644 tests/test-unix-socket.py > > > > diff --git a/tests/automake.mk b/tests/automake.mk > > index 1ebdf85..c29fca8 100644 > > --- a/tests/automake.mk > > +++ b/tests/automake.mk > > @@ -308,6 +308,7 @@ CHECK_PYFILES = \ > > tests/test-ovsdb.py \ > > tests/test-reconnect.py \ > > tests/MockXenAPI.py \ > > + tests/test-unix-socket.py \ > > tests/test-unixctl.py \ > > tests/test-vlog.py > > EXTRA_DIST += $(CHECK_PYFILES) > > diff --git a/tests/library.at b/tests/library.at > > index 3e84648..650fef3 100644 > > --- a/tests/library.at > > +++ b/tests/library.at > > @@ -114,7 +114,7 @@ m4_foreach( > > AT_CHECK([test-util testname], [0], [], []) > > AT_CLEANUP]) > > > > -AT_SETUP([test unix socket -- short pathname]) > > +AT_SETUP([test unix socket, short pathname - C]) > > AT_CHECK([test-unix-socket x]) > > AT_CLEANUP > > > > @@ -123,7 +123,7 @@ dnl go in a fixed-length field in struct sockaddr_un. > > Generally the limit > > dnl is about 100 bytes. On Linux, we work around this by indirecting > > through > > dnl a directory fd using /proc/self/fd/<dirfd>. We do not have a > > workaround > > dnl for other platforms, so we skip the test there. > > -AT_SETUP([test unix socket -- long pathname]) > > +AT_SETUP([test unix socket, long pathname - C]) > > AT_SKIP_IF([test ! -d /proc/self/fd]) > > dnl Linux has a 108 byte limit; this is 150 bytes long. > > > > longname=012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 > > @@ -132,6 +132,26 @@ cd $longname > > AT_CHECK([test-unix-socket ../$longname/socket socket]) > > AT_CLEANUP > > > > +AT_SETUP([test unix socket, short pathname - Python]) > > +AT_SKIP_IF([test $HAVE_PYTHON = no]) > > +AT_CHECK([$PYTHON $srcdir/test-unix-socket.py x]) > > +AT_CLEANUP > > + > > +dnl Unix sockets with long names are problematic because the name has to > > +dnl go in a fixed-length field in struct sockaddr_un. Generally the limit > > +dnl is about 100 bytes. On Linux, we work around this by indirecting > > through > > +dnl a directory fd using /proc/self/fd/<dirfd>. We do not have a > > workaround > > +dnl for other platforms, so we skip the test there. > > +AT_SETUP([test unix socket, long pathname - Python]) > > +AT_SKIP_IF([test $HAVE_PYTHON = no]) > > +AT_SKIP_IF([test ! -d /proc/self/fd]) > > +dnl Linux has a 108 byte limit; this is 150 bytes long. > > +longname=012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 > > +mkdir $longname > > +cd $longname > > +AT_CHECK([$PYTHON $abs_srcdir/test-unix-socket.py ../$longname/socket > > socket]) > > +AT_CLEANUP > > + > > AT_SETUP([ovs_assert]) > > OVS_LOGDIR=`pwd`; export OVS_LOGDIR > > AT_CHECK([test-util -voff -vfile:info '-vPATTERN:file:%c|%p|%m' --log-file > > assert || kill -l $?], > > diff --git a/tests/test-unix-socket.py b/tests/test-unix-socket.py > > new file mode 100644 > > index 0000000..a570662 > > --- /dev/null > > +++ b/tests/test-unix-socket.py > > @@ -0,0 +1,54 @@ > > +# > > +# Copyright (c) 2010, 2012, 2013 Nicira, Inc. > > +# > > +# 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. > > + > > +import os > > +import signal > > +import socket > > +import sys > > + > > +import ovs.socket_util > > + > > +def main(argv): > > + if len(argv) not in (2, 3): > > + sys.stderr.write("usage: %s SOCKETNAME1 [SOCKETNAME2]", argv[0]) > > + sys.exit(1) > > + > > + sockname1 = argv[1] > > + if len(argv) > 2: > > + sockname2 = argv[2] > > + else: > > + sockname2 = sockname1 > > + > > + signal.signal(signal.SIGALRM, signal.SIG_DFL) > > + signal.alarm(5) > > + > > + # Create a listening socket under name 'sockname1'. > > + error, sock1 = ovs.socket_util.make_unix_socket(socket.SOCK_STREAM, > > False, > > + sockname1, None) > > + if error: > > + sys.stderr.write("%s: bind failed (%s)" % (sockname1, > > + os.strerror(error))) > > + sock1.listen(1) > > + > > + # Connect to 'sockname2' (which should be the same file, perhaps under > > a > > + # different name). > > + error, sock2 = ovs.socket_util.make_unix_socket(socket.SOCK_STREAM, > > False, > > + None, sockname2) > > + if error: > > + sys.stderr.write("%s: connect failed (%s)" % (sockname2, > > + os.strerror(error))) > > + > > +if __name__ == '__main__': > > + main(sys.argv) > > -- > > 1.7.2.5 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev