Am 03.06.2024 um 13:45 hat Daniel P. Berrangé geschrieben: > On Fri, May 31, 2024 at 01:04:59PM -0500, Eric Blake wrote: > > Prevent regressions when using NBD with TLS in the presence of > > iothreads, adding coverage the fix to qio channels made in the > > previous patch. > > > > The shell function pick_unused_port() was copied from > > nbdkit.git/tests/functions.sh.in, where it had all authors from Red > > Hat, agreeing to the resulting relicensing from 2-clause BSD to GPLv2. > > > > CC: qemu-sta...@nongnu.org > > CC: "Richard W.M. Jones" <rjo...@redhat.com> > > Signed-off-by: Eric Blake <ebl...@redhat.com> > > --- > > tests/qemu-iotests/tests/nbd-tls-iothread | 168 ++++++++++++++++++ > > tests/qemu-iotests/tests/nbd-tls-iothread.out | 54 ++++++ > > 2 files changed, 222 insertions(+) > > create mode 100755 tests/qemu-iotests/tests/nbd-tls-iothread > > create mode 100644 tests/qemu-iotests/tests/nbd-tls-iothread.out > > > > > +# pick_unused_port > > +# > > +# Picks and returns an "unused" port, setting the global variable > > +# $port. > > +# > > +# This is inherently racy, but we need it because qemu does not currently > > +# permit NBD+TLS over a Unix domain socket > > +pick_unused_port () > > +{ > > + if ! (ss --version) >/dev/null 2>&1; then > > + _notrun "ss utility required, skipped this test" > > + fi > > + > > + # Start at a random port to make it less likely that two parallel > > + # tests will conflict. > > + port=$(( 50000 + (RANDOM%15000) )) > > + while ss -ltn | grep -sqE ":$port\b"; do > > + ((port++)) > > + if [ $port -eq 65000 ]; then port=50000; fi > > + done > > + echo picked unused port > > +} > > In retrospect I'd probably have suggested putting this into > common.qemu as its conceptually independant of this test.
If we make it generic, should nbd_server_start_tcp_socket() in common.nbd use it, too, instead of implementing its own loop trying to find a free port? Kevin