From: Stas Boukarev Date: Tue, 4 Jun 2013 20:58:55 +0000 (+0400) Subject: sb-bsd-socket tests: don't listen on a predefined port. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=f79e7df41edd15a68c763263a81e7c640005a60b;p=sbcl.git sb-bsd-socket tests: don't listen on a predefined port. Listening on 1974 prevents from building contribs in parallel. --- diff --git a/NEWS b/NEWS index 391d0b3..a46a208 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,8 @@ changes relative to sbcl-1.1.8: addrinfo. (lp#1187041, patch by Jerry James) * bug fix: uninitialized type-error conditions can now be printed. (lp#1184586) + * bug fix: tests for sb-bsd-sockets no longer use a predefined port for + listening, allowing several tests to run in parallel. changes in sbcl-1.1.8 relative to sbcl-1.1.7: * notice: The implementation of MAP-ALLOCATED-OBJECTS (the heart of diff --git a/contrib/sb-bsd-sockets/tests.lisp b/contrib/sb-bsd-sockets/tests.lisp index 776878c..1ed052f 100644 --- a/contrib/sb-bsd-sockets/tests.lisp +++ b/contrib/sb-bsd-sockets/tests.lisp @@ -98,18 +98,26 @@ #-(or sbcl gencgc) (sb-ext:gc)) (deftest inet-socket-bind - (let ((s (make-instance 'inet-socket :type :stream :protocol (get-protocol-by-name "tcp")))) - ;; Given the functions we've got so far, if you can think of a - ;; better way to make sure the bind succeeded than trying it - ;; twice, let me know - ;; 1974 has no special significance, unless you're the same age as me - (do-gc-portably) ;gc should clear out any old sockets bound to this port - (socket-bind s (make-inet-address "127.0.0.1") 1974) - (handler-case - (let ((s2 (make-instance 'inet-socket :type :stream :protocol (get-protocol-by-name "tcp")))) - (socket-bind s2 (make-inet-address "127.0.0.1") 1974) - nil) - (address-in-use-error () t))) + (let* ((tcp (get-protocol-by-name "tcp")) + (address (make-inet-address "127.0.0.1")) + (s (make-instance 'inet-socket :type :stream :protocol tcp))) + (do-gc-portably) ; gc should clear out any old sockets bound to this port + (unwind-protect + ;; Given the functions we've got so far, if you can think of a + ;; better way to make sure the bind succeeded than trying it + ;; twice, let me know + (progn + (socket-bind s address 0) + (handler-case + (let ((port (nth-value 1 (socket-name s))) + (s2 (make-instance 'inet-socket + :type :stream :protocol tcp))) + (unwind-protect + (socket-bind s2 address port) + (socket-close s2)) + nil) + (address-in-use-error () t))) + (socket-close s))) t) (deftest* (simple-sockopt-test)