mirror of
https://github.com/janet-lang/janet
synced 2025-07-13 07:22:52 +00:00
Create test case for localname/peername
This commit is contained in:
parent
3740eadb7d
commit
077bf5ebae
@ -151,6 +151,48 @@
|
|||||||
|
|
||||||
(:close s))
|
(:close s))
|
||||||
|
|
||||||
|
# Test localname and peername
|
||||||
|
(repeat 10
|
||||||
|
(defn check-matching-names [stream &opt direction]
|
||||||
|
"Checks that the remote agrees with the local about ip/port"
|
||||||
|
(let [[my-ip my-port] (net/localname stream)
|
||||||
|
[remote-ip remote-port] (net/peername stream)
|
||||||
|
to-write (string/join
|
||||||
|
@[my-ip (string my-port)
|
||||||
|
remote-ip (string remote-port)]
|
||||||
|
" ")
|
||||||
|
buffer @""]
|
||||||
|
(if (= direction :write)
|
||||||
|
(do (net/write stream to-write) (net/read stream 1024 buffer))
|
||||||
|
(do (net/read stream 1024 buffer) (net/write stream to-write)))
|
||||||
|
(def comparison (string/split " " buffer))
|
||||||
|
(printf "%s\n\t%s%q\n\t%s%q"
|
||||||
|
(if (= direction :write) "-->" "<--")
|
||||||
|
"remote view: "
|
||||||
|
comparison
|
||||||
|
"local view: "
|
||||||
|
[my-ip my-port remote-ip remote-port])
|
||||||
|
(assert (and (= my-ip (get comparison 2))
|
||||||
|
(= (string my-port) (get comparison 3))
|
||||||
|
(= remote-ip (get comparison 0))
|
||||||
|
(= (string remote-port) (get comparison 1))))))
|
||||||
|
(defn names-handler
|
||||||
|
"Simple handler for connections."
|
||||||
|
[stream]
|
||||||
|
(defer (:close stream)
|
||||||
|
(check-matching-names stream)))
|
||||||
|
|
||||||
|
(def s (net/server "127.0.0.1" "8000" names-handler))
|
||||||
|
(assert s "made server 1")
|
||||||
|
|
||||||
|
(defn test-names []
|
||||||
|
(with [conn (net/connect "127.0.0.1" "8000")]
|
||||||
|
(check-matching-names conn :write)))
|
||||||
|
|
||||||
|
(test-names)
|
||||||
|
(test-names)
|
||||||
|
(:close s))
|
||||||
|
|
||||||
# Create pipe
|
# Create pipe
|
||||||
|
|
||||||
(var pipe-counter 0)
|
(var pipe-counter 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user