From 49b0ebf056a596dda4edf22c419f9a17d4719478 Mon Sep 17 00:00:00 2001 From: Doug Coleman <doug.coleman@gmail.com> Date: Wed, 12 Oct 2011 01:22:03 -0700 Subject: [PATCH] Simple network benchmark for sending large file between a server/client. --- extra/benchmarks/file-server/authors.txt | 1 + .../benchmarks/file-server/file-server.factor | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 extra/benchmarks/file-server/authors.txt create mode 100644 extra/benchmarks/file-server/file-server.factor diff --git a/extra/benchmarks/file-server/authors.txt b/extra/benchmarks/file-server/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/benchmarks/file-server/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/benchmarks/file-server/file-server.factor b/extra/benchmarks/file-server/file-server.factor new file mode 100644 index 0000000000..67bf22855b --- /dev/null +++ b/extra/benchmarks/file-server/file-server.factor @@ -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 \ No newline at end of file