X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-bsd-sockets%2Ftests.lisp;h=77b1e570da042b92dc3314c01aacfc75d30b7919;hb=343ef95fda9da33830d5ab6aabe5368c898f0918;hp=0d6f3fcaeb6fde63ae8eb4c084e24731c6632a93;hpb=65a01dae3d437a48e8dd0d051a446245f9e29929;p=sbcl.git diff --git a/contrib/sb-bsd-sockets/tests.lisp b/contrib/sb-bsd-sockets/tests.lisp index 0d6f3fc..77b1e57 100644 --- a/contrib/sb-bsd-sockets/tests.lisp +++ b/contrib/sb-bsd-sockets/tests.lisp @@ -1,18 +1,6 @@ (defpackage "SB-BSD-SOCKETS-TEST" (:use "CL" "SB-BSD-SOCKETS" "SB-RT")) -#|| - -

Tests

- -There should be at least one test for pretty much everything you can do -with the package. In some places I've been more diligent than others; more -tests gratefully accepted. - -Tests are in the file tests.lisp and also make good examples. - -||# - (in-package :sb-bsd-sockets-test) ;;; a real address @@ -102,6 +90,11 @@ Tests are in the file tests.lisp and also make good examples. ((or (>= i (length buffer)) (not c) (eq c eof)) i) (setf (elt buffer i) c)))) +#+internet-available +(deftest name-service-return-type + (vectorp (host-ent-address (get-host-by-address #(127 0 0 1)))) + t) + ;;; these require that the echo services are turned on in inetd #+internet-available (deftest simple-tcp-client @@ -116,6 +109,18 @@ Tests are in the file tests.lisp and also make good examples. t) #+internet-available +(deftest sockaddr-return-type + (let ((s (make-instance 'inet-socket :type :stream :protocol :tcp))) + (unwind-protect + (progn + (socket-connect s #(127 0 0 1) 7) + (multiple-value-bind (host port) (socket-peername s) + (and (vectorp host) + (numberp port)))) + (socket-close s))) + t) + +#+internet-available (deftest simple-udp-client (let ((s (make-instance 'inet-socket :type :datagram :protocol (get-protocol-by-name "udp"))) (data (make-string 200))) @@ -133,19 +138,35 @@ Tests are in the file tests.lisp and also make good examples. ;;; to look at /etc/syslog.conf or local equivalent to find out where ;;; the message ended up -#-sunos (deftest simple-local-client - (let ((s (make-instance 'local-socket :type :datagram))) - (format t "~A~%" s) - (socket-connect s "/dev/log") - (let ((stream (socket-make-stream s :input t :output t :buffering :none))) - (format stream - "<7>bsd-sockets: Don't panic. We're testing local-domain client code; this message can safely be ignored") - t)) - t) - - -;;; these require that the internet (or bits of it, atleast) is available + (progn + ;; SunOS (Solaris) and Darwin systems don't have a socket at + ;; /dev/log. We might also be building in a chroot or + ;; something, so don't fail this test just because the file is + ;; unavailable, or if it's a symlink to some weird character + ;; device. + (when (and (probe-file "/dev/log") + (sb-posix:s-issock + (sb-posix::stat-mode (sb-posix:stat "/dev/log")))) + (let ((s (make-instance 'local-socket :type :datagram))) + (format t "Connecting ~A... " s) + (finish-output) + (handler-case + (socket-connect s "/dev/log") + (sb-bsd-sockets::socket-error () + (setq s (make-instance 'local-socket :type :stream)) + (format t "failed~%Retrying with ~A... " s) + (finish-output) + (socket-connect s "/dev/log"))) + (format t "ok.~%") + (let ((stream (socket-make-stream s :input t :output t :buffering :none))) + (format stream + "<7>bsd-sockets: Don't panic. We're testing local-domain client code; this message can safely be ignored")))) + t) + t) + + +;;; these require that the internet (or bits of it, at least) is available #+internet-available (deftest get-host-by-name @@ -160,7 +181,7 @@ Tests are in the file tests.lisp and also make good examples. (deftest get-host-by-name-wrong (handler-case - (get-host-by-name "foo.tninkpad.telent.net") + (get-host-by-name "foo.tninkpad.telent.net.") (NAME-SERVICE-ERROR () t) (:no-error nil)) t)