From a33c3615316594011c80a37fbcbf18065f44c9fd Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 7 Mar 2016 21:31:25 -0800 Subject: Dgram test: multiple transfers on one stream, IPv6. * tests/014/dgram-stream.tl: New file. * tests/014/dgram-stream.expected: New file. --- tests/014/dgram-stream.expected | 0 tests/014/dgram-stream.tl | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 tests/014/dgram-stream.expected create mode 100644 tests/014/dgram-stream.tl diff --git a/tests/014/dgram-stream.expected b/tests/014/dgram-stream.expected new file mode 100644 index 00000000..e69de29b diff --git a/tests/014/dgram-stream.tl b/tests/014/dgram-stream.tl new file mode 100644 index 00000000..feb272ba --- /dev/null +++ b/tests/014/dgram-stream.tl @@ -0,0 +1,39 @@ +(load "../sock-common.tl") + +(defvar family) + +(defun server (svc-sock) + (whilet ((acc-sock (sock-accept svc-sock)) + (query (read acc-sock))) + (print query acc-sock) + (close-stream acc-sock))) + +(defun client (addr) + (with-stream (cli-sock (open-socket family sock-dgram)) + (sock-connect cli-sock addr) + (dotimes (i 1000) + (print i cli-sock) + (flush-stream cli-sock) + (unless (equal (read cli-sock) i) + (return-from client nil)) + (clear-error cli-sock)) + (print nil cli-sock) + (flush-stream cli-sock))) + +(defun test () + (let* ((svc-sock (open-socket family sock-dgram)) + (svc-addr (bindfree svc-sock 1025 65535)) + (server-pid (fork))) + (cond + ((null server-pid) (error "fork failed")) + ((zerop server-pid) (server svc-sock) (exit* t)) + (t (prog1 + (client svc-addr) + (kill server-pid sig-kill) + (wait server-pid)))))) + +(if (and (fboundp 'open-socket) + (fboundp 'fork)) + (each ((family (list af-inet af-inet6))) + (unless (test) + (error "test failed")))) -- cgit v1.2.3