diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/.test_ws.rb.swp | bin | 0 -> 12288 bytes | |||
-rw-r--r-- | test/test_http11.rb | 31 | ||||
-rw-r--r-- | test/test_uriclassifier.rb | 104 | ||||
-rw-r--r-- | test/test_ws.rb | 33 |
4 files changed, 168 insertions, 0 deletions
diff --git a/test/.test_ws.rb.swp b/test/.test_ws.rb.swp Binary files differnew file mode 100644 index 0000000..84dbb1d --- /dev/null +++ b/test/.test_ws.rb.swp diff --git a/test/test_http11.rb b/test/test_http11.rb new file mode 100644 index 0000000..8f07900 --- /dev/null +++ b/test/test_http11.rb @@ -0,0 +1,31 @@ +require 'test/unit' +require 'http11' + + +class HttpParserTest < Test::Unit::TestCase + + def test_parse_simple + parser = HttpParser.new + req = {} + http = "GET / HTTP/1.1\r\n\r\n" + nread = parser.execute(req, http); + assert nread == http.length, "Failed to parse the full HTTP request" + assert parser.finished?, "Parser didn't finish" + assert !parser.error?, "Parser had error" + assert nread == parser.nread, "Number read returned from execute does not match" + parser.reset + assert parser.nread == 0, "Number read after reset should be 0" + end + + + def test_parse_error + parser = HttpParser.new + req = {} + bad_http = "GET / SsUTF/1.1" + nread = parser.execute(req, bad_http) + assert nread < bad_http.length, "Number read should be less than total on error" + assert !parser.finished?, "Parser shouldn't be finished" + assert parser.error?, "Parser SHOULD have error" + end +end + diff --git a/test/test_uriclassifier.rb b/test/test_uriclassifier.rb new file mode 100644 index 0000000..ae5df1d --- /dev/null +++ b/test/test_uriclassifier.rb @@ -0,0 +1,104 @@ +require 'test/unit' +require 'net/http' +require 'mongrel' +require 'benchmark' + +include Mongrel + +class URIClassifierTest < Test::Unit::TestCase + + def test_uri_finding + u = URIClassifier.new + u.register("/test", 1) + + sn,pi,val = u.resolve("/test") + assert val != nil, "didn't resolve" + assert_equal 1, val, "wrong value" + assert_equal "/test",sn, "wrong SCRIPT_NAME" + end + + + def test_uri_prefix_ops + test = "/pre/fix/test" + prefix = "/pre" + + u = URIClassifier.new + u.register(prefix,1) + + sn,pi,val = u.resolve(test) + assert val != nil, "didn't resolve" + assert_equal prefix,sn, "wrong script name" + assert_equal test[sn.length .. -1],pi, "wrong path info" + end + + def test_not_finding + test = "/cant/find/me" + u = URIClassifier.new + u.register(test, 1) + + sn,pi,val = u.resolve("/nope/not/here") + assert_equal nil,sn, "shouldn't be found" + assert_equal nil,pi, "shouldn't be found" + assert_equal nil,val, "shouldn't be found" + end + + def test_exceptions + u = URIClassifier.new + + u.register("test", 1) + + failed = false + begin + u.register("test", 1) + rescue => e + failed = true + end + + assert failed, "it didn't fail as expected" + + failed = false + begin + u.register("", 1) + rescue => e + failed = true + end + + assert failed, "it didn't fail as expected" + end + + + def test_register_unregister + u = URIClassifier.new + + 100.times do + u.register("stuff", 1) + val = u.unregister("stuff") + assert_equal 1,val, "didn't get the right return value" + end + + u.register("things",1) + sn,pi,val = u.resolve("things") + assert_equal 1, val, "result doesn't match" + + u.unregister("things") + sn,pi,val = u.resolve("things") + assert_equal nil, val, "result should be nil" + + end + + + def test_performance + count = 8500 + u = URIClassifier.new + u.register("stuff",1) + + res = Benchmark.measure { count.times { u.resolve("stuff") } } + + reg_unreg = Benchmark.measure { count.times { u.register("other",1); u.unregister("other"); } } + + puts "\nRESOLVE(#{count}): #{res}" + puts "REG_UNREG(#{count}): #{reg_unreg}" + end + +end + diff --git a/test/test_ws.rb b/test/test_ws.rb new file mode 100644 index 0000000..dd7fa77 --- /dev/null +++ b/test/test_ws.rb @@ -0,0 +1,33 @@ +require 'test/unit' +require 'net/http' +require 'mongrel' +require 'timeout' + +include Mongrel; + +class TestHandler < Mongrel::HttpHandler + attr_reader :ran_test + + def process(request, response) + @ran_test = true + response.socket.write("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nhello!\n") + end +end + + +class WSTest < Test::Unit::TestCase + + def test_simple_server + h = HttpServer.new("0.0.0.0", 9998) + tester = TestHandler.new + h.register("/test", tester) + h.run + + sleep(1) + res = Net::HTTP.get(URI.parse('http://localhost:9998/test')) + assert res != nil, "Didn't get a response" + assert tester.ran_test, "Handler didn't really run" + end + +end + |