Simple network benchmark for sending large file between a server/client.

db4
Doug Coleman 2011-10-12 01:22:03 -07:00
parent 7228c2df2c
commit 49b0ebf056
2 changed files with 33 additions and 0 deletions
extra/benchmarks/file-server

View File

@ -0,0 +1 @@
Doug Coleman

View File

@ -0,0 +1,32 @@
! Copyright (C) 2011 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors byte-arrays io io.encodings.binary io.servers
io.sockets kernel math memoize namespaces sequences ;
IN: benchmarks.file-server
: test-file-size ( -- n ) 26 2^ ;
MEMO: test-file-bytes ( -- byte-array )
test-file-size iota >byte-array ;
TUPLE: file-server < threaded-server ;
: <file-server> ( -- obj )
binary \ file-server new-threaded-server
f 0 <inet4> >>insecure ;
M: file-server handle-client*
drop test-file-bytes output-stream get stream-write ;
ERROR: incorrect-#bytes ;
: server>address ( server -- port )
servers>> first addr>> port>> local-server ;
: file-server-benchmark ( -- )
<file-server> start-server [
server>address binary <client> drop
stream-contents length test-file-size = [ incorrect-#bytes ] unless
] [ stop-server ] bi ;
MAIN: file-server-benchmark