]> gitweb.factorcode.org Git - factor.git/commitdiff
io.sockets.secure.unix: Stop these tests from hanging on errors.
authorDoug Coleman <doug.coleman@gmail.com>
Mon, 18 Dec 2017 00:49:52 +0000 (18:49 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Mon, 18 Dec 2017 00:49:52 +0000 (18:49 -0600)
Specifically, the server writes its port to a mailbox. On Mac 10.11.6, the last macOS for my old computers, TLS1.0 is the last supported SSL protocol, and there is a yet-undebugged error. This patch at least exposes the error for debugging.

basis/io/sockets/secure/unix/unix-tests.factor

index 6d06db2c4f6dc040616e7b940940be41ddc1e121..07df6bfe611d83905478b01c60a1322374004f30 100644 (file)
@@ -1,15 +1,16 @@
+USING: accessors calendar classes
+concurrency.promises destructors io io.backend.unix
+io.encodings.ascii io.sockets io.sockets.secure
+io.sockets.secure.debug io.streams.duplex io.timeouts kernel
+locals namespaces threads tools.test ;
 IN: io.sockets.secure.tests
-USING: accessors kernel namespaces io io.sockets
-io.sockets.secure io.encodings.ascii io.streams.duplex
-io.backend.unix classes words destructors threads tools.test
-concurrency.promises byte-arrays locals calendar io.timeouts
-io.sockets.secure.debug ;
+QUALIFIED-WITH: concurrency.messaging qm
 
 { 1 0 } [ [ ] with-secure-context ] must-infer-as
 
 { } [ <promise> "port" set ] unit-test
 
-:: server-test ( quot -- )
+:: server-test ( quot -- obj/f )
     [
         [
             "127.0.0.1" 0 <inet4> f <secure> ascii <server> [
@@ -19,13 +20,19 @@ io.sockets.secure.debug ;
                 ] curry with-stream
             ] with-disposal
         ] with-test-context
-    ] "SSL server test" spawn drop ;
+    ] "SSL server test" qm:spawn-linked drop qm:receive ;
+
+: ?promise-test ( mailbox -- obj )
+    340 milliseconds ?promise-timeout ;
 
 : client-test ( -- string )
     <secure-config> [
-        "127.0.0.1" "port" get ?promise <inet4> f <secure> ascii <client> drop stream-contents
+        "127.0.0.1" "port" get ?promise-test <inet4> f <secure> ascii <client> drop
+        1 seconds
+        [ stream-contents ] with-timeout*
     ] with-secure-context ;
 
+! { } [ [ class-of name>> write "done" my-mailbox mailbox-put ] server-test ] unit-test
 { } [ [ class-of name>> write ] server-test ] unit-test
 
 { "secure" } [ client-test ] unit-test
@@ -55,7 +62,7 @@ io.sockets.secure.debug ;
 
 [
     <secure-config> [
-        "localhost" "port" get ?promise <inet> f <secure> ascii
+        "localhost" "port" get ?promise-test <inet> f <secure> ascii
         <client> drop dispose
     ] with-secure-context
 ] [ certificate-verify-error? ] must-fail-with
@@ -85,7 +92,7 @@ io.sockets.secure.debug ;
 { } [
     [
         [
-            "127.0.0.1" "port" get ?promise
+            "127.0.0.1" "port" get ?promise-test
             <inet4> ascii <client> drop &dispose 1 minutes sleep
         ] with-destructors
     ] "Silly client" spawn drop
@@ -126,7 +133,7 @@ io.sockets.secure.debug ;
     [
         1 seconds secure-socket-timeout [
             <secure-config> [
-                "127.0.0.1" "port" get ?promise <inet4> f <secure>
+                "127.0.0.1" "port" get ?promise-test <inet4> f <secure>
                 ascii <client> drop dispose
             ] with-secure-context
         ] with-variable
@@ -139,7 +146,7 @@ io.sockets.secure.debug ;
         [
             [
                 [
-                    "127.0.0.1" "port" get ?promise
+                    "127.0.0.1" "port" get ?promise-test
                     <inet4> f <secure> ascii <client> drop &dispose 1 minutes sleep
                 ] with-test-context
             ] with-destructors