]> code.delx.au - gnu-emacs/blobdiff - test/lisp/net/network-stream-tests.el
Fix failing echo-server-nowait test
[gnu-emacs] / test / lisp / net / network-stream-tests.el
index a5e146f02c85af17131b340e1f40c0424775e80c..f30c92a1de5b3c18e96232cee6c6dcc84d406f52 100644 (file)
@@ -40,7 +40,7 @@
     (should (equal (process-contact server :local) file))
     (delete-file (process-contact server :local))))
 
-(ert-deftest make-local-tcp-server-with-unspecified-port ()
+(ert-deftest make-ipv4-tcp-server-with-unspecified-port ()
   (let ((server
          (make-network-process
           :name "server"
@@ -54,7 +54,7 @@
                  (> (aref (process-contact server :local) 4) 0)))
     (delete-process server)))
 
-(ert-deftest make-local-tcp-server-with-specified-port ()
+(ert-deftest make-ipv4-tcp-server-with-specified-port ()
   (let ((server
          (make-network-process
           :name "server"
                                      :buffer (generate-new-buffer "*foo*")
                                      :host "localhost"
                                      :nowait t
+                                     :family 'ipv4
                                      :service port)))
     (should (eq (process-status proc) 'connect))
-    (should (null (ignore-errors
-                    (process-send-string proc "echo bar")
-                    t)))
     (while (eq (process-status proc) 'connect)
       (sit-for 0.1))
     (with-current-buffer (process-buffer proc)
       (should (equal (buffer-string) "foo\n")))
     (delete-process server)))
 
-(defun make-tls-server ()
+(defun make-tls-server (port)
   (start-process "gnutls" (generate-new-buffer "*tls*")
                  "gnutls-serv" "--http"
-                 "--x509keyfile" "lisp/net/key.pem"
-                 "--x509certfile" "lisp/net/cert.pem"
-                 "--port" "44330"))
+                 "--x509keyfile" "data/net/key.pem"
+                 "--x509certfile" "data/net/cert.pem"
+                 "--port" (format "%s" port)))
 
 (ert-deftest connect-to-tls-ipv4-wait ()
   (skip-unless (executable-find "gnutls-serv"))
   (skip-unless (gnutls-available-p))
-  (let ((server (make-tls-server))
+  (let ((server (make-tls-server 44332))
         (times 0)
         proc status)
     (sleep-for 1)
                                     :name "bar"
                                     :buffer (generate-new-buffer "*foo*")
                                     :host "localhost"
-                                    :service 44330))))
+                                    :service 44332))))
                 (< (setq times (1+ times)) 10))
       (sit-for 0.1))
     (should proc)
       (setq issuer (split-string issuer ","))
       (should (equal (nth 3 issuer) "O=Emacs Test Servicess LLC")))))
 
+(ert-deftest connect-to-tls-ipv4-nowait ()
+  (skip-unless (executable-find "gnutls-serv"))
+  (skip-unless (gnutls-available-p))
+  (let ((server (make-tls-server 44331))
+        (times 0)
+        proc status)
+    (sleep-for 1)
+    (with-current-buffer (process-buffer server)
+      (message "gnutls-serv: %s" (buffer-string)))
+
+    ;; It takes a while for gnutls-serv to start.
+    (while (and (null (ignore-errors
+                        (setq proc (make-network-process
+                                    :name "bar"
+                                    :buffer (generate-new-buffer "*foo*")
+                                    :nowait t
+                                    :tls-parameters
+                                    (cons 'gnutls-x509pki
+                                          (gnutls-boot-parameters
+                                           :hostname "localhost"))
+                                    :host "localhost"
+                                    :service 44331))))
+                (< (setq times (1+ times)) 10))
+      (sit-for 0.1))
+    (should proc)
+    (while (eq (process-status proc) 'connect)
+      (sit-for 0.1))
+    (delete-process server)
+    (setq status (gnutls-peer-status proc))
+    (should (consp status))
+    (delete-process proc)
+    (let ((issuer (plist-get (plist-get status :certificate) :issuer)))
+      (should (stringp issuer))
+      (setq issuer (split-string issuer ","))
+      (should (equal (nth 3 issuer) "O=Emacs Test Servicess LLC")))))
+
 (ert-deftest connect-to-tls-ipv6-nowait ()
   (skip-unless (executable-find "gnutls-serv"))
   (skip-unless (gnutls-available-p))
   (skip-unless (not (eq system-type 'windows-nt)))
-  (let ((server (make-tls-server))
+  (skip-unless (featurep 'make-network-process '(:family ipv6)))
+  (let ((server (make-tls-server 44333))
         (times 0)
         proc status)
     (sleep-for 1)
                                     :buffer (generate-new-buffer "*foo*")
                                     :family 'ipv6
                                     :nowait t
+                                    :tls-parameters
+                                    (cons 'gnutls-x509pki
+                                          (gnutls-boot-parameters
+                                           :hostname "localhost"))
                                     :host "::1"
-                                    :service 44330))))
+                                    :service 44333))))
                 (< (setq times (1+ times)) 10))
       (sit-for 0.1))
     (should proc)
-    (gnutls-negotiate :process proc
-                      :type 'gnutls-x509pki
-                      :hostname "localhost")
+    (while (eq (process-status proc) 'connect)
+      (sit-for 0.1))
     (delete-process server)
     (setq status (gnutls-peer-status proc))
     (should (consp status))