mirror of https://github.com/lukechilds/node.git
Urban Hafner
16 years ago
11 changed files with 194 additions and 137 deletions
@ -0,0 +1,95 @@ |
|||
DIR = File.dirname(__FILE__) |
|||
|
|||
def fib(n) |
|||
return 1 if n <= 1 |
|||
fib(n-1) + fib(n-2) |
|||
end |
|||
|
|||
def wait(seconds) |
|||
n = (seconds / 0.01).to_i |
|||
n.times do |
|||
sleep(0.01) |
|||
#File.read(DIR + '/yahoo.html') |
|||
end |
|||
end |
|||
|
|||
class SimpleApp |
|||
@@responses = {} |
|||
|
|||
def initialize |
|||
@count = 0 |
|||
end |
|||
|
|||
def deferred?(env) |
|||
false |
|||
end |
|||
|
|||
def call(env) |
|||
path = env['PATH_INFO'] || env['REQUEST_URI'] |
|||
commands = path.split('/') |
|||
|
|||
@count += 1 |
|||
if commands.include?('periodical_activity') and @count % 10 != 1 |
|||
return [200, {'Content-Type'=>'text/plain'}, "quick response!\r\n"] |
|||
end |
|||
|
|||
if commands.include?('fibonacci') |
|||
n = commands.last.to_i |
|||
raise "fibonacci called with n <= 0" if n <= 0 |
|||
body = (1..n).to_a.map { |i| fib(i).to_s }.join(' ') |
|||
status = 200 |
|||
|
|||
elsif commands.include?('wait') |
|||
n = commands.last.to_f |
|||
raise "wait called with n <= 0" if n <= 0 |
|||
wait(n) |
|||
body = "waited about #{n} seconds" |
|||
status = 200 |
|||
|
|||
elsif commands.include?('bytes') |
|||
n = commands.last.to_i |
|||
raise "bytes called with n <= 0" if n <= 0 |
|||
body = @@responses[n] || "C"*n |
|||
status = 200 |
|||
|
|||
elsif commands.include?('fixed') |
|||
n = 20 * 1024; |
|||
body = @@responses[n] || "C"*n |
|||
status = 200 |
|||
|
|||
elsif commands.include?('test_post_length') |
|||
input_body = "" |
|||
while chunk = env['rack.input'].read(512) |
|||
input_body << chunk |
|||
end |
|||
if env['CONTENT_LENGTH'].to_i == input_body.length |
|||
body = "Content-Length matches input length" |
|||
status = 200 |
|||
else |
|||
body = "Content-Length doesn't matches input length! |
|||
content_length = #{env['CONTENT_LENGTH'].to_i} |
|||
input_body.length = #{input_body.length}" |
|||
status = 500 |
|||
end |
|||
else |
|||
status = 404 |
|||
body = "Undefined url" |
|||
end |
|||
|
|||
body += "\r\n" |
|||
headers = {'Content-Type' => 'text/plain', 'Content-Length' => body.length.to_s } |
|||
[status, headers, [body]] |
|||
end |
|||
end |
|||
|
|||
|
|||
if $0 == __FILE__ |
|||
#require DIR + '/../lib/ebb' |
|||
require 'rubygems' |
|||
require 'rack' |
|||
require 'thin' |
|||
require 'ebb' |
|||
# Rack::Handler::Mongrel.run(SimpleApp.new, :Port => 8000) |
|||
Thin::Server.start("0.0.0.0", 8000, SimpleApp.new) |
|||
# Ebb::start_server(SimpleApp.new, :port => 8000) |
|||
end |
@ -1,41 +0,0 @@ |
|||
var c = new node.http.Client(8000, "127.0.0.1"); |
|||
|
|||
c.onError = function () { |
|||
puts("http client connection error."); |
|||
}; |
|||
|
|||
var req = c.get("/bytes/123", [["Accept", "*/*"]]); |
|||
req.finish(function (res) { |
|||
puts("response 1: " + res.statusCode.toString()); |
|||
|
|||
res.onBody = function (chunk) { |
|||
chunk = chunk.encodeUtf8(); |
|||
puts("response 1 body <" + JSON.stringify(chunk) + ">"); |
|||
return true; |
|||
}; |
|||
|
|||
res.onBodyComplete = function () { |
|||
puts("response 1 complete!"); |
|||
return true; |
|||
}; |
|||
}); |
|||
|
|||
setTimeout(function () { |
|||
var req2 = c.get("/something/else"); |
|||
//node.debug("start req2");
|
|||
req2.finish(function (res) { |
|||
puts("response 2: " + res.statusCode.toString()); |
|||
|
|||
res.onBody = function (chunk) { |
|||
chunk = chunk.encodeUtf8(); |
|||
puts("response 2 body <" + JSON.stringify(chunk) + ">"); |
|||
return true; |
|||
}; |
|||
|
|||
res.onBodyComplete = function () { |
|||
puts("response 2 complete!"); |
|||
return true; |
|||
}; |
|||
}); |
|||
}, 2000); |
|||
|
Loading…
Reference in new issue