experella-proxy 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/.gitignore +15 -0
  2. data/Gemfile +3 -0
  3. data/README.md +219 -0
  4. data/Rakefile +25 -0
  5. data/TODO.txt +20 -0
  6. data/bin/experella-proxy +54 -0
  7. data/config/default/404.html +16 -0
  8. data/config/default/503.html +18 -0
  9. data/config/default/config.rb +64 -0
  10. data/config/default/ssl/certs/experella-proxy.pem +18 -0
  11. data/config/default/ssl/private/experella-proxy.key +28 -0
  12. data/dev/experella-proxy +62 -0
  13. data/experella-proxy.gemspec +39 -0
  14. data/lib/experella-proxy/backend.rb +58 -0
  15. data/lib/experella-proxy/backend_server.rb +100 -0
  16. data/lib/experella-proxy/configuration.rb +154 -0
  17. data/lib/experella-proxy/connection.rb +557 -0
  18. data/lib/experella-proxy/connection_manager.rb +167 -0
  19. data/lib/experella-proxy/globals.rb +37 -0
  20. data/lib/experella-proxy/http_status_codes.rb +45 -0
  21. data/lib/experella-proxy/proxy.rb +61 -0
  22. data/lib/experella-proxy/request.rb +106 -0
  23. data/lib/experella-proxy/response.rb +204 -0
  24. data/lib/experella-proxy/server.rb +68 -0
  25. data/lib/experella-proxy/version.rb +15 -0
  26. data/lib/experella-proxy.rb +93 -0
  27. data/spec/echo-server/echo_server.rb +49 -0
  28. data/spec/experella-proxy/backend_server_spec.rb +101 -0
  29. data/spec/experella-proxy/configuration_spec.rb +27 -0
  30. data/spec/experella-proxy/connection_manager_spec.rb +159 -0
  31. data/spec/experella-proxy/experella-proxy_spec.rb +471 -0
  32. data/spec/experella-proxy/request_spec.rb +88 -0
  33. data/spec/experella-proxy/response_spec.rb +44 -0
  34. data/spec/fixtures/404.html +16 -0
  35. data/spec/fixtures/503.html +18 -0
  36. data/spec/fixtures/spec.log +331 -0
  37. data/spec/fixtures/test_config.rb +34 -0
  38. data/spec/spec.log +235 -0
  39. data/spec/spec_helper.rb +35 -0
  40. data/test/sinatra/hello_world_server.rb +17 -0
  41. data/test/sinatra/server_one.rb +89 -0
  42. data/test/sinatra/server_two.rb +89 -0
  43. metadata +296 -0
data/spec/spec.log ADDED
@@ -0,0 +1,235 @@
1
+ I, [2013-12-18T10:59:08.551887 #22192] INFO -- : should be able to handle post requests
2
+ I, [2013-12-18T10:59:08.144205 #22194] INFO -- : Initializing backend PJPP at 127.0.0.10:7654 with concurrency 1
3
+ I, [2013-12-18T10:59:08.144255 #22194] INFO -- : Backend accepts: {"request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$", "Host"=>"experteer"}
4
+ I, [2013-12-18T10:59:08.144273 #22194] INFO -- : Backend mangles: nil
5
+ I, [2013-12-18T10:59:08.144303 #22194] INFO -- : Initializing backend PJPP2 at 127.0.0.10:7654 with concurrency 2
6
+ I, [2013-12-18T10:59:08.144321 #22194] INFO -- : Backend accepts: {"request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$", "Host"=>"experteer"}
7
+ I, [2013-12-18T10:59:08.144335 #22194] INFO -- : Backend mangles: nil
8
+ I, [2013-12-18T10:59:08.144361 #22194] INFO -- : Initializing backend Job catalog at 127.0.0.11:7655 with concurrency 1
9
+ I, [2013-12-18T10:59:08.144380 #22194] INFO -- : Backend accepts: {"request_url"=>"/(jobboerse|stellenangebote)($|/)", "Host"=>"experteer"}
10
+ I, [2013-12-18T10:59:08.144393 #22194] INFO -- : Backend mangles: nil
11
+ I, [2013-12-18T10:59:08.144418 #22194] INFO -- : Initializing backend web at 0.0.0.0:80 with concurrency 1000
12
+ I, [2013-12-18T10:59:08.144434 #22194] INFO -- : Backend accepts: {"Host"=>"^((?!(experteer|127)).)*$"}
13
+ I, [2013-12-18T10:59:08.144448 #22194] INFO -- : Backend mangles: nil
14
+ I, [2013-12-18T10:59:08.144564 #22194] INFO -- : Launching experella-proxy at 127.0.0.1:4000 with 6.0s timeout...
15
+ I, [2013-12-18T10:59:08.144627 #22194] INFO -- : Launching experella-proxy at 127.0.0.2:8000 with 6.0s timeout...
16
+ I, [2013-12-18T10:59:08.754015 #22194] INFO -- : 0.018ms: new Connection @5
17
+ I, [2013-12-18T10:59:08.754482 #22194] INFO -- : 0.498ms: new Request @5 experteer.com//
18
+ I, [2013-12-18T10:59:08.755109 #22194] INFO -- : 1.128ms: on_data @5
19
+ I, [2013-12-18T10:59:08.755253 #22194] INFO -- : 1.274ms: on_connect @5 PJPP
20
+ I, [2013-12-18T10:59:08.755558 #22194] INFO -- : 1.566ms: on_response @5 from PJPP
21
+ I, [2013-12-18T10:59:08.755732 #22194] INFO -- : 1.748ms: on_finish @5 for PJPP responded? true
22
+ I, [2013-12-18T10:59:08.755790 #22194] INFO -- : 1.812ms: Request done! @5
23
+ I, [2013-12-18T10:59:08.756099 #22194] INFO -- : 2.123ms: Connection done! @5
24
+ I, [2013-12-18T10:59:08.756953 #22194] INFO -- : Terminating experella-proxy
25
+ I, [2013-12-18T10:59:10.263230 #22192] INFO -- : should accept requests on all set proxy domains
26
+ I, [2013-12-18T10:59:09.857314 #22196] INFO -- : Initializing backend PJPP at 127.0.0.10:7654 with concurrency 1
27
+ I, [2013-12-18T10:59:09.857366 #22196] INFO -- : Backend accepts: {"request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$", "Host"=>"experteer"}
28
+ I, [2013-12-18T10:59:09.857384 #22196] INFO -- : Backend mangles: nil
29
+ I, [2013-12-18T10:59:09.857412 #22196] INFO -- : Initializing backend PJPP2 at 127.0.0.10:7654 with concurrency 2
30
+ I, [2013-12-18T10:59:09.857433 #22196] INFO -- : Backend accepts: {"request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$", "Host"=>"experteer"}
31
+ I, [2013-12-18T10:59:09.857446 #22196] INFO -- : Backend mangles: nil
32
+ I, [2013-12-18T10:59:09.857473 #22196] INFO -- : Initializing backend Job catalog at 127.0.0.11:7655 with concurrency 1
33
+ I, [2013-12-18T10:59:09.857491 #22196] INFO -- : Backend accepts: {"request_url"=>"/(jobboerse|stellenangebote)($|/)", "Host"=>"experteer"}
34
+ I, [2013-12-18T10:59:09.857505 #22196] INFO -- : Backend mangles: nil
35
+ I, [2013-12-18T10:59:09.857527 #22196] INFO -- : Initializing backend web at 0.0.0.0:80 with concurrency 1000
36
+ I, [2013-12-18T10:59:09.857545 #22196] INFO -- : Backend accepts: {"Host"=>"^((?!(experteer|127)).)*$"}
37
+ I, [2013-12-18T10:59:09.857558 #22196] INFO -- : Backend mangles: nil
38
+ I, [2013-12-18T10:59:09.857672 #22196] INFO -- : Launching experella-proxy at 127.0.0.1:4000 with 6.0s timeout...
39
+ I, [2013-12-18T10:59:09.857737 #22196] INFO -- : Launching experella-proxy at 127.0.0.2:8000 with 6.0s timeout...
40
+ I, [2013-12-18T10:59:10.464400 #22196] INFO -- : 0.017ms: new Connection @5
41
+ I, [2013-12-18T10:59:10.464752 #22196] INFO -- : 0.016ms: new Connection @7
42
+ I, [2013-12-18T10:59:10.465309 #22196] INFO -- : 0.935ms: new Request @5 experteer.com//
43
+ I, [2013-12-18T10:59:10.465864 #22196] INFO -- : 1.495ms: on_data @5
44
+ I, [2013-12-18T10:59:10.466155 #22196] INFO -- : 1.425ms: new Request @7 experteer.com//
45
+ I, [2013-12-18T10:59:10.466630 #22196] INFO -- : 1.901ms: on_data @7
46
+ I, [2013-12-18T10:59:10.466759 #22196] INFO -- : 2.393ms: on_connect @5 PJPP
47
+ I, [2013-12-18T10:59:10.466851 #22196] INFO -- : 2.124ms: on_connect @7 PJPP2
48
+ I, [2013-12-18T10:59:10.467179 #22196] INFO -- : 2.799ms: on_response @5 from PJPP
49
+ I, [2013-12-18T10:59:10.467293 #22196] INFO -- : 2.565ms: on_response @7 from PJPP2
50
+ I, [2013-12-18T10:59:10.467453 #22196] INFO -- : 3.081ms: on_finish @5 for PJPP responded? true
51
+ I, [2013-12-18T10:59:10.467508 #22196] INFO -- : 3.143ms: Request done! @5
52
+ I, [2013-12-18T10:59:10.467776 #22196] INFO -- : 3.044ms: on_finish @7 for PJPP2 responded? true
53
+ I, [2013-12-18T10:59:10.467826 #22196] INFO -- : 3.1ms: Request done! @7
54
+ I, [2013-12-18T10:59:10.468063 #22196] INFO -- : Terminating experella-proxy
55
+ I, [2013-12-18T10:59:10.468162 #22196] INFO -- : 3.798ms: Connection done! @5
56
+ I, [2013-12-18T10:59:10.468260 #22196] INFO -- : 3.535ms: Connection done! @7
57
+ I, [2013-12-18T10:59:11.971330 #22192] INFO -- : should handle pipelined requests correctly
58
+ I, [2013-12-18T10:59:11.562111 #22198] INFO -- : Initializing backend PJPP at 127.0.0.10:7654 with concurrency 1
59
+ I, [2013-12-18T10:59:11.562164 #22198] INFO -- : Backend accepts: {"request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$", "Host"=>"experteer"}
60
+ I, [2013-12-18T10:59:11.562181 #22198] INFO -- : Backend mangles: nil
61
+ I, [2013-12-18T10:59:11.562211 #22198] INFO -- : Initializing backend PJPP2 at 127.0.0.10:7654 with concurrency 2
62
+ I, [2013-12-18T10:59:11.562229 #22198] INFO -- : Backend accepts: {"request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$", "Host"=>"experteer"}
63
+ I, [2013-12-18T10:59:11.562257 #22198] INFO -- : Backend mangles: nil
64
+ I, [2013-12-18T10:59:11.562295 #22198] INFO -- : Initializing backend Job catalog at 127.0.0.11:7655 with concurrency 1
65
+ I, [2013-12-18T10:59:11.562313 #22198] INFO -- : Backend accepts: {"request_url"=>"/(jobboerse|stellenangebote)($|/)", "Host"=>"experteer"}
66
+ I, [2013-12-18T10:59:11.562326 #22198] INFO -- : Backend mangles: nil
67
+ I, [2013-12-18T10:59:11.562350 #22198] INFO -- : Initializing backend web at 0.0.0.0:80 with concurrency 1000
68
+ I, [2013-12-18T10:59:11.562366 #22198] INFO -- : Backend accepts: {"Host"=>"^((?!(experteer|127)).)*$"}
69
+ I, [2013-12-18T10:59:11.562379 #22198] INFO -- : Backend mangles: nil
70
+ I, [2013-12-18T10:59:11.562495 #22198] INFO -- : Launching experella-proxy at 127.0.0.1:4000 with 6.0s timeout...
71
+ I, [2013-12-18T10:59:11.562557 #22198] INFO -- : Launching experella-proxy at 127.0.0.2:8000 with 6.0s timeout...
72
+ I, [2013-12-18T10:59:12.172497 #22198] INFO -- : 0.019ms: new Connection @5
73
+ I, [2013-12-18T10:59:12.173302 #22198] INFO -- : 0.832ms: new Request @5 experteer.com//
74
+ I, [2013-12-18T10:59:12.173883 #22198] INFO -- : ["1.422ms: pipelined request"]
75
+ I, [2013-12-18T10:59:12.174178 #22198] INFO -- : 1.715ms: new Request @5 experteer.com//about/
76
+ I, [2013-12-18T10:59:12.174532 #22198] INFO -- : ["2.072ms: pipelined request"]
77
+ I, [2013-12-18T10:59:12.174909 #22198] INFO -- : 2.445ms: new Request @5 experteer.com//
78
+ I, [2013-12-18T10:59:12.175269 #22198] INFO -- : 2.807ms: on_data @5
79
+ I, [2013-12-18T10:59:12.175416 #22198] INFO -- : 2.955ms: on_connect @5 PJPP
80
+ I, [2013-12-18T10:59:12.175725 #22198] INFO -- : 3.252ms: on_response @5 from PJPP
81
+ I, [2013-12-18T10:59:12.175926 #22198] INFO -- : 3.46ms: on_finish @5 for PJPP responded? true
82
+ I, [2013-12-18T10:59:12.175978 #22198] INFO -- : 3.518ms: Request done! @5
83
+ I, [2013-12-18T10:59:12.176521 #22198] INFO -- : 4.06ms: on_connect @5 PJPP2
84
+ I, [2013-12-18T10:59:12.176800 #22198] INFO -- : 4.327ms: on_response @5 from PJPP2
85
+ I, [2013-12-18T10:59:12.176978 #22198] INFO -- : 4.512ms: on_finish @5 for PJPP2 responded? true
86
+ I, [2013-12-18T10:59:12.177034 #22198] INFO -- : 4.569ms: Request done! @5
87
+ I, [2013-12-18T10:59:12.177495 #22198] INFO -- : 5.034ms: on_connect @5 PJPP
88
+ I, [2013-12-18T10:59:12.177783 #22198] INFO -- : 5.31ms: on_response @5 from PJPP
89
+ I, [2013-12-18T10:59:12.177951 #22198] INFO -- : 5.481ms: on_finish @5 for PJPP responded? true
90
+ I, [2013-12-18T10:59:12.178001 #22198] INFO -- : 5.542ms: Request done! @5
91
+ I, [2013-12-18T10:59:12.178316 #22198] INFO -- : 5.856ms: Connection done! @5
92
+ I, [2013-12-18T10:59:12.268540 #22198] INFO -- : Terminating experella-proxy
93
+ I, [2013-12-18T10:59:13.683917 #22192] INFO -- : should timeout inactive connections after config.timeout
94
+ I, [2013-12-18T10:59:13.279151 #22200] INFO -- : Initializing backend PJPP at 127.0.0.10:7654 with concurrency 1
95
+ I, [2013-12-18T10:59:13.279203 #22200] INFO -- : Backend accepts: {"request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$", "Host"=>"experteer"}
96
+ I, [2013-12-18T10:59:13.279220 #22200] INFO -- : Backend mangles: nil
97
+ I, [2013-12-18T10:59:13.279250 #22200] INFO -- : Initializing backend PJPP2 at 127.0.0.10:7654 with concurrency 2
98
+ I, [2013-12-18T10:59:13.279268 #22200] INFO -- : Backend accepts: {"request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$", "Host"=>"experteer"}
99
+ I, [2013-12-18T10:59:13.279282 #22200] INFO -- : Backend mangles: nil
100
+ I, [2013-12-18T10:59:13.279310 #22200] INFO -- : Initializing backend Job catalog at 127.0.0.11:7655 with concurrency 1
101
+ I, [2013-12-18T10:59:13.279328 #22200] INFO -- : Backend accepts: {"request_url"=>"/(jobboerse|stellenangebote)($|/)", "Host"=>"experteer"}
102
+ I, [2013-12-18T10:59:13.279342 #22200] INFO -- : Backend mangles: nil
103
+ I, [2013-12-18T10:59:13.279364 #22200] INFO -- : Initializing backend web at 0.0.0.0:80 with concurrency 1000
104
+ I, [2013-12-18T10:59:13.279381 #22200] INFO -- : Backend accepts: {"Host"=>"^((?!(experteer|127)).)*$"}
105
+ I, [2013-12-18T10:59:13.279394 #22200] INFO -- : Backend mangles: nil
106
+ I, [2013-12-18T10:59:13.279509 #22200] INFO -- : Launching experella-proxy at 127.0.0.1:4000 with 6.0s timeout...
107
+ I, [2013-12-18T10:59:13.279571 #22200] INFO -- : Launching experella-proxy at 127.0.0.2:8000 with 6.0s timeout...
108
+ I, [2013-12-18T10:59:13.885109 #22200] INFO -- : 0.021ms: new Connection @5
109
+ I, [2013-12-18T10:59:13.885495 #22200] INFO -- : 0.423ms: new Request @5 experteer.com//
110
+ I, [2013-12-18T10:59:13.886080 #22200] INFO -- : 1.011ms: on_data @5
111
+ I, [2013-12-18T10:59:13.886230 #22200] INFO -- : 1.163ms: on_connect @5 PJPP
112
+ I, [2013-12-18T10:59:13.886577 #22200] INFO -- : 1.497ms: on_response @5 from PJPP
113
+ I, [2013-12-18T10:59:13.886771 #22200] INFO -- : 1.698ms: on_finish @5 for PJPP responded? true
114
+ I, [2013-12-18T10:59:13.886821 #22200] INFO -- : 1.756ms: Request done! @5
115
+ I, [2013-12-18T10:59:19.891453 #22200] INFO -- : ["6006.361ms: ", :unbind_client, :timeout, "@5"]
116
+ I, [2013-12-18T10:59:19.891695 #22200] INFO -- : 6006.627ms: Connection done! @5
117
+ I, [2013-12-18T10:59:21.063874 #22200] INFO -- : Terminating experella-proxy
118
+ I, [2013-12-18T10:59:22.567132 #22192] INFO -- : should respond with 404
119
+ I, [2013-12-18T10:59:22.162703 #22204] INFO -- : Initializing backend PJPP at 127.0.0.10:7654 with concurrency 1
120
+ I, [2013-12-18T10:59:22.162756 #22204] INFO -- : Backend accepts: {"Host"=>"experteer", "request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$"}
121
+ I, [2013-12-18T10:59:22.162773 #22204] INFO -- : Backend mangles: nil
122
+ I, [2013-12-18T10:59:22.162803 #22204] INFO -- : Initializing backend PJPP2 at 127.0.0.10:7654 with concurrency 2
123
+ I, [2013-12-18T10:59:22.162823 #22204] INFO -- : Backend accepts: {"Host"=>"experteer", "request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$"}
124
+ I, [2013-12-18T10:59:22.162837 #22204] INFO -- : Backend mangles: nil
125
+ I, [2013-12-18T10:59:22.162864 #22204] INFO -- : Initializing backend Job catalog at 127.0.0.11:7655 with concurrency 1
126
+ I, [2013-12-18T10:59:22.162883 #22204] INFO -- : Backend accepts: {"Host"=>"experteer", "request_url"=>"/(jobboerse|stellenangebote)($|/)"}
127
+ I, [2013-12-18T10:59:22.162897 #22204] INFO -- : Backend mangles: nil
128
+ I, [2013-12-18T10:59:22.162920 #22204] INFO -- : Initializing backend web at 0.0.0.0:80 with concurrency 1000
129
+ I, [2013-12-18T10:59:22.162937 #22204] INFO -- : Backend accepts: {"Host"=>"^((?!(experteer|127)).)*$"}
130
+ I, [2013-12-18T10:59:22.162951 #22204] INFO -- : Backend mangles: nil
131
+ I, [2013-12-18T10:59:22.163066 #22204] INFO -- : Launching experella-proxy at 127.0.0.1:4000 with 6.0s timeout...
132
+ I, [2013-12-18T10:59:22.163131 #22204] INFO -- : Launching experella-proxy at 127.0.0.2:8000 with 6.0s timeout...
133
+ I, [2013-12-18T10:59:22.768285 #22204] INFO -- : 0.02ms: new Connection @5
134
+ I, [2013-12-18T10:59:22.768537 #22204] INFO -- : 0.012ms: new Connection @7
135
+ I, [2013-12-18T10:59:22.769114 #22204] INFO -- : 0.864ms: new Request @5 127.0.0.1:4000//
136
+ E, [2013-12-18T10:59:22.769420 #22204] ERROR -- : 1.174ms: Error, send client error message and unbind! No backend will match
137
+ E, [2013-12-18T10:59:22.769484 #22204] ERROR -- : ["1.241ms: ", :error_to_client, "HTTP/1.1 404 Not Found\r\nContent-Length: 277\r\nContent-Type: text/html;charset=utf-8\r\nConnection: close\r\n\r\n<!DOCTYPE html>\n<html>\n<head>\n <style type=\"text/css\"> body {\n text-align: center;\n font-family: helvetica, arial;\n font-size: 22px;\n color: #000;\n margin: 20px\n }\n </style>\n</head>\n<body>\n<h2>404 Page not found!</h2>\n</body>\n</html>"]
138
+ I, [2013-12-18T10:59:22.769721 #22204] INFO -- : 1.475ms: on_data @5
139
+ I, [2013-12-18T10:59:22.769959 #22204] INFO -- : 1.437ms: new Request @7 127.0.0.1:4000//
140
+ E, [2013-12-18T10:59:22.770178 #22204] ERROR -- : 1.657ms: Error, send client error message and unbind! No backend will match
141
+ E, [2013-12-18T10:59:22.770227 #22204] ERROR -- : ["1.709ms: ", :error_to_client, "HTTP/1.1 404 Not Found\r\nContent-Length: 277\r\nContent-Type: text/html;charset=utf-8\r\nConnection: close\r\n\r\n"]
142
+ I, [2013-12-18T10:59:22.770433 #22204] INFO -- : 1.913ms: on_data @7
143
+ I, [2013-12-18T10:59:22.770611 #22204] INFO -- : 2.369ms: Connection done! @5
144
+ I, [2013-12-18T10:59:22.770802 #22204] INFO -- : 2.284ms: Connection done! @7
145
+ I, [2013-12-18T10:59:22.771255 #22204] INFO -- : Terminating experella-proxy
146
+ I, [2013-12-18T10:59:24.274541 #22192] INFO -- : should get response from the echoserver via the proxy
147
+ I, [2013-12-18T10:59:23.867274 #22206] INFO -- : Initializing backend PJPP at 127.0.0.10:7654 with concurrency 1
148
+ I, [2013-12-18T10:59:23.867327 #22206] INFO -- : Backend accepts: {"request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$", "Host"=>"experteer"}
149
+ I, [2013-12-18T10:59:23.867344 #22206] INFO -- : Backend mangles: nil
150
+ I, [2013-12-18T10:59:23.867373 #22206] INFO -- : Initializing backend PJPP2 at 127.0.0.10:7654 with concurrency 2
151
+ I, [2013-12-18T10:59:23.867391 #22206] INFO -- : Backend accepts: {"request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$", "Host"=>"experteer"}
152
+ I, [2013-12-18T10:59:23.867404 #22206] INFO -- : Backend mangles: nil
153
+ I, [2013-12-18T10:59:23.867432 #22206] INFO -- : Initializing backend Job catalog at 127.0.0.11:7655 with concurrency 1
154
+ I, [2013-12-18T10:59:23.867449 #22206] INFO -- : Backend accepts: {"request_url"=>"/(jobboerse|stellenangebote)($|/)", "Host"=>"experteer"}
155
+ I, [2013-12-18T10:59:23.867463 #22206] INFO -- : Backend mangles: nil
156
+ I, [2013-12-18T10:59:23.867487 #22206] INFO -- : Initializing backend web at 0.0.0.0:80 with concurrency 1000
157
+ I, [2013-12-18T10:59:23.867503 #22206] INFO -- : Backend accepts: {"Host"=>"^((?!(experteer|127)).)*$"}
158
+ I, [2013-12-18T10:59:23.867516 #22206] INFO -- : Backend mangles: nil
159
+ I, [2013-12-18T10:59:23.867635 #22206] INFO -- : Launching experella-proxy at 127.0.0.1:4000 with 6.0s timeout...
160
+ I, [2013-12-18T10:59:23.867698 #22206] INFO -- : Launching experella-proxy at 127.0.0.2:8000 with 6.0s timeout...
161
+ I, [2013-12-18T10:59:24.475699 #22206] INFO -- : 0.018ms: new Connection @5
162
+ I, [2013-12-18T10:59:24.476081 #22206] INFO -- : 0.414ms: new Request @5 experteer.com//
163
+ I, [2013-12-18T10:59:24.476635 #22206] INFO -- : 0.971ms: on_data @5
164
+ I, [2013-12-18T10:59:24.476786 #22206] INFO -- : 1.123ms: on_connect @5 PJPP
165
+ I, [2013-12-18T10:59:24.477070 #22206] INFO -- : 1.395ms: on_response @5 from PJPP
166
+ I, [2013-12-18T10:59:24.477244 #22206] INFO -- : 1.576ms: on_finish @5 for PJPP responded? true
167
+ I, [2013-12-18T10:59:24.477294 #22206] INFO -- : 1.633ms: Request done! @5
168
+ I, [2013-12-18T10:59:24.477607 #22206] INFO -- : 1.947ms: Connection done! @5
169
+ I, [2013-12-18T10:59:24.477700 #22206] INFO -- : Terminating experella-proxy
170
+ I, [2013-12-18T10:59:25.981016 #22192] INFO -- : should reuse keep-alive connections
171
+ I, [2013-12-18T10:59:25.577756 #22208] INFO -- : Initializing backend PJPP at 127.0.0.10:7654 with concurrency 1
172
+ I, [2013-12-18T10:59:25.577805 #22208] INFO -- : Backend accepts: {"Host"=>"experteer", "request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$"}
173
+ I, [2013-12-18T10:59:25.577822 #22208] INFO -- : Backend mangles: nil
174
+ I, [2013-12-18T10:59:25.577851 #22208] INFO -- : Initializing backend PJPP2 at 127.0.0.10:7654 with concurrency 2
175
+ I, [2013-12-18T10:59:25.577870 #22208] INFO -- : Backend accepts: {"Host"=>"experteer", "request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$"}
176
+ I, [2013-12-18T10:59:25.577884 #22208] INFO -- : Backend mangles: nil
177
+ I, [2013-12-18T10:59:25.577912 #22208] INFO -- : Initializing backend Job catalog at 127.0.0.11:7655 with concurrency 1
178
+ I, [2013-12-18T10:59:25.577929 #22208] INFO -- : Backend accepts: {"Host"=>"experteer", "request_url"=>"/(jobboerse|stellenangebote)($|/)"}
179
+ I, [2013-12-18T10:59:25.577943 #22208] INFO -- : Backend mangles: nil
180
+ I, [2013-12-18T10:59:25.577967 #22208] INFO -- : Initializing backend web at 0.0.0.0:80 with concurrency 1000
181
+ I, [2013-12-18T10:59:25.577983 #22208] INFO -- : Backend accepts: {"Host"=>"^((?!(experteer|127)).)*$"}
182
+ I, [2013-12-18T10:59:25.577997 #22208] INFO -- : Backend mangles: nil
183
+ I, [2013-12-18T10:59:25.578111 #22208] INFO -- : Launching experella-proxy at 127.0.0.1:4000 with 6.0s timeout...
184
+ I, [2013-12-18T10:59:25.578174 #22208] INFO -- : Launching experella-proxy at 127.0.0.2:8000 with 6.0s timeout...
185
+ I, [2013-12-18T10:59:26.182187 #22208] INFO -- : 0.02ms: new Connection @5
186
+ I, [2013-12-18T10:59:26.182583 #22208] INFO -- : 0.43ms: new Request @5 experteer.com//
187
+ I, [2013-12-18T10:59:26.183141 #22208] INFO -- : 0.993ms: on_data @5
188
+ I, [2013-12-18T10:59:26.183292 #22208] INFO -- : 1.143ms: on_connect @5 PJPP
189
+ I, [2013-12-18T10:59:26.183596 #22208] INFO -- : 1.437ms: on_response @5 from PJPP
190
+ I, [2013-12-18T10:59:26.183791 #22208] INFO -- : 1.64ms: on_finish @5 for PJPP responded? true
191
+ I, [2013-12-18T10:59:26.183842 #22208] INFO -- : 1.698ms: Request done! @5
192
+ I, [2013-12-18T10:59:26.184526 #22208] INFO -- : 2.378ms: new Request @5 experteer.com//about/
193
+ I, [2013-12-18T10:59:26.184991 #22208] INFO -- : 2.845ms: on_data @5
194
+ I, [2013-12-18T10:59:26.185110 #22208] INFO -- : 2.965ms: on_connect @5 PJPP2
195
+ I, [2013-12-18T10:59:26.185368 #22208] INFO -- : 3.21ms: on_response @5 from PJPP2
196
+ I, [2013-12-18T10:59:26.185541 #22208] INFO -- : 3.392ms: on_finish @5 for PJPP2 responded? true
197
+ I, [2013-12-18T10:59:26.185592 #22208] INFO -- : 3.447ms: Request done! @5
198
+ I, [2013-12-18T10:59:26.186269 #22208] INFO -- : 4.119ms: new Request @5 experteer.com//
199
+ I, [2013-12-18T10:59:26.186751 #22208] INFO -- : 4.605ms: on_data @5
200
+ I, [2013-12-18T10:59:26.186869 #22208] INFO -- : 4.724ms: on_connect @5 PJPP
201
+ I, [2013-12-18T10:59:26.187131 #22208] INFO -- : 4.972ms: on_response @5 from PJPP
202
+ I, [2013-12-18T10:59:26.187287 #22208] INFO -- : 5.137ms: on_finish @5 for PJPP responded? true
203
+ I, [2013-12-18T10:59:26.187335 #22208] INFO -- : 5.191ms: Request done! @5
204
+ I, [2013-12-18T10:59:26.187627 #22208] INFO -- : 5.483ms: Connection done! @5
205
+ I, [2013-12-18T10:59:26.277858 #22208] INFO -- : Terminating experella-proxy
206
+ I, [2013-12-18T10:59:27.691888 #22192] INFO -- : should respond with 503
207
+ I, [2013-12-18T10:59:27.290523 #22210] INFO -- : Initializing backend PJPP at 127.0.0.10:7654 with concurrency 1
208
+ I, [2013-12-18T10:59:27.290574 #22210] INFO -- : Backend accepts: {"Host"=>"experteer", "request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$"}
209
+ I, [2013-12-18T10:59:27.290592 #22210] INFO -- : Backend mangles: nil
210
+ I, [2013-12-18T10:59:27.290621 #22210] INFO -- : Initializing backend PJPP2 at 127.0.0.10:7654 with concurrency 2
211
+ I, [2013-12-18T10:59:27.290639 #22210] INFO -- : Backend accepts: {"Host"=>"experteer", "request_url"=>"^((?!/(jobboerse|stellenangebote)($|/)).)*$"}
212
+ I, [2013-12-18T10:59:27.290653 #22210] INFO -- : Backend mangles: nil
213
+ I, [2013-12-18T10:59:27.290680 #22210] INFO -- : Initializing backend Job catalog at 127.0.0.11:7655 with concurrency 1
214
+ I, [2013-12-18T10:59:27.290698 #22210] INFO -- : Backend accepts: {"Host"=>"experteer", "request_url"=>"/(jobboerse|stellenangebote)($|/)"}
215
+ I, [2013-12-18T10:59:27.290712 #22210] INFO -- : Backend mangles: nil
216
+ I, [2013-12-18T10:59:27.290734 #22210] INFO -- : Initializing backend web at 0.0.0.0:80 with concurrency 1000
217
+ I, [2013-12-18T10:59:27.290752 #22210] INFO -- : Backend accepts: {"Host"=>"^((?!(experteer|127)).)*$"}
218
+ I, [2013-12-18T10:59:27.290765 #22210] INFO -- : Backend mangles: nil
219
+ I, [2013-12-18T10:59:27.290881 #22210] INFO -- : Launching experella-proxy at 127.0.0.1:4000 with 6.0s timeout...
220
+ I, [2013-12-18T10:59:27.290945 #22210] INFO -- : Launching experella-proxy at 127.0.0.2:8000 with 6.0s timeout...
221
+ I, [2013-12-18T10:59:27.893066 #22210] INFO -- : 0.02ms: new Connection @5
222
+ I, [2013-12-18T10:59:27.893417 #22210] INFO -- : 0.016ms: new Connection @7
223
+ I, [2013-12-18T10:59:27.893976 #22210] INFO -- : 0.943ms: new Request @5 experteer.com//jobboerse
224
+ I, [2013-12-18T10:59:27.894561 #22210] INFO -- : 1.532ms: on_data @5
225
+ I, [2013-12-18T10:59:27.894859 #22210] INFO -- : 1.462ms: new Request @7 experteer.com//jobboerse
226
+ I, [2013-12-18T10:59:27.895217 #22210] INFO -- : 1.825ms: on_data @7
227
+ I, [2013-12-18T10:59:27.895316 #22210] INFO -- : 2.284ms: on_finish @5 for Job catalog responded? false
228
+ E, [2013-12-18T10:59:27.895372 #22210] ERROR -- : 2.345ms: Error, backend didnt respond Retries: 0
229
+ E, [2013-12-18T10:59:27.895419 #22210] ERROR -- : ["2.394ms: ", :error_to_client, "HTTP/1.1 503 Service unavailable\r\nContent-Length: 285\r\nContent-Type: text/html;charset=utf-8\r\nConnection: close\r\nRetry-After: 5\r\n\r\n"]
230
+ I, [2013-12-18T10:59:27.895748 #22210] INFO -- : 2.722ms: Connection done! @5
231
+ I, [2013-12-18T10:59:27.895839 #22210] INFO -- : 2.443ms: on_finish @7 for Job catalog responded? false
232
+ E, [2013-12-18T10:59:27.895885 #22210] ERROR -- : 2.495ms: Error, backend didnt respond Retries: 0
233
+ E, [2013-12-18T10:59:27.895930 #22210] ERROR -- : ["2.541ms: ", :error_to_client, "HTTP/1.1 503 Service unavailable\r\nContent-Length: 285\r\nContent-Type: text/html;charset=utf-8\r\nConnection: close\r\nRetry-After: 5\r\n\r\n<!DOCTYPE html>\n<html>\n<head>\n <style type=\"text/css\"> body {\n text-align: center;\n font-family: helvetica, arial;\n font-size: 22px;\n color: #000;\n margin: 20px\n\n }\n\n </style>\n</head>\n<body>\n<h2> 503 Service unavailable!</h2>\n</body>\n</html>"]
234
+ I, [2013-12-18T10:59:27.896116 #22210] INFO -- : 2.727ms: Connection done! @7
235
+ I, [2013-12-18T10:59:27.896690 #22210] INFO -- : Terminating experella-proxy
@@ -0,0 +1,35 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ require 'rubygems'
8
+ require 'bundler'
9
+ Bundler.setup
10
+
11
+ require 'pathname'
12
+
13
+ LIB_ROOT= Pathname.new(File.dirname(__FILE__) +"/../")
14
+ RSPEC_ROOT=LIB_ROOT.join("spec")
15
+ $: << LIB_ROOT.join("lib")
16
+ require 'experella-proxy.rb'
17
+ require 'em-http'
18
+ require 'posix/spawn'
19
+
20
+ # clear spec logfile on startup
21
+ File.new(File.join(File.expand_path(File.dirname(__FILE__)),"/fixtures/spec.log"), "w+")
22
+ # load config once before all specs
23
+ ExperellaProxy::Configuration.new(:configfile => File.join(File.dirname(__FILE__),"/fixtures/test_config.rb"))
24
+
25
+ RSpec.configure do |config|
26
+ config.treat_symbols_as_metadata_keys_with_true_values = true
27
+ config.run_all_when_everything_filtered = true
28
+ config.filter_run :focus
29
+
30
+ # Run specs in random order to surface order dependencies. If you find an
31
+ # order dependency and want to debug it, you can fix the order by providing
32
+ # the seed, which is printed after each run.
33
+ # --seed 1234
34
+ config.order = 'random'
35
+ end
@@ -0,0 +1,17 @@
1
+ require 'sinatra/base'
2
+
3
+ # Simple Hello World! Testserver
4
+ #
5
+ class HelloWorldServer < Sinatra::Base
6
+
7
+ get '/' do
8
+
9
+ "Hello World!"
10
+
11
+ end
12
+
13
+
14
+ # start the server if ruby file executed directly
15
+ run! if app_file == $0
16
+
17
+ end
@@ -0,0 +1,89 @@
1
+ require 'sinatra/base'
2
+
3
+ # 10kb Testserver
4
+ #
5
+ class ServerOne < Sinatra::Base
6
+
7
+ get '/' do
8
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ultrices, ipsum quis bibendum dignissim, tellus eros placerat nisi, dapibus blandit lectus dui non risus. Integer dui lectus, suscipit non nulla sit amet, iaculis rutrum nulla. Curabitur vehicula in libero facilisis porta. Proin commodo ante nec volutpat hendrerit. Sed dapibus scelerisque aliquet. In hac habitasse platea dictumst. Donec vitae tristique quam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus tincidunt eu massa nec aliquam.
9
+
10
+ Sed aliquet enim erat, vitae condimentum ipsum tristique eu. Pellentesque iaculis nisl nibh, ac feugiat felis vestibulum eget. Phasellus ut condimentum enim, et suscipit augue. Integer at dui nec dui commodo volutpat sit amet a mi. In facilisis augue nunc, vel egestas nisl eleifend id. Praesent sed tellus vitae nisi venenatis malesuada non eget dui. Aenean nec lorem vel velit ultricies vulputate sed eget metus. In vel tristique dolor. Sed odio libero, dignissim a tellus quis, bibendum tincidunt orci. Maecenas mattis, ante at porta euismod, elit mauris varius odio, tristique gravida lorem lectus at lacus. Mauris ut interdum nulla. Mauris eget dui id purus ornare luctus.
11
+
12
+ Pellentesque feugiat fermentum risus, et sodales neque interdum at. Vestibulum a tempus odio. Fusce eu lorem dictum, cursus sapien et, fringilla leo. Donec ultricies, elit sit amet venenatis mollis, neque dui ultricies eros, eu hendrerit nulla lorem eget lorem. Ut vestibulum mi tempus odio tempus, vel aliquet libero condimentum. Vivamus sodales lacinia commodo. Praesent convallis sit amet massa quis blandit. Integer lobortis, metus eu venenatis vulputate, metus turpis mattis nibh, et faucibus mauris mauris nec magna. Fusce volutpat, metus vitae semper semper, tortor arcu ultrices leo, vitae mattis felis massa sit amet erat. Phasellus vitae posuere dui. Mauris ultrices interdum libero, ac porta magna tristique sed. Vivamus nulla enim, cursus vel sem vel, sollicitudin ornare lectus. Sed tristique lobortis ipsum, nec tristique purus vestibulum non. Nulla et molestie metus. Nullam id tortor gravida, cursus mauris ut, facilisis nunc.
13
+
14
+ Duis interdum quam quis orci volutpat iaculis. Aliquam non commodo metus. Vestibulum sit amet bibendum nulla. Nam purus orci, dapibus vitae pharetra eget, dapibus at risus. Quisque in convallis urna. Quisque pulvinar, nisi nec sodales viverra, turpis lectus placerat justo, at aliquam velit velit quis turpis. Etiam iaculis elit et purus venenatis, sed ullamcorper leo tincidunt. Donec vulputate ornare ipsum id iaculis. Nunc vitae quam nulla. Aenean sit amet nisi vitae eros aliquet volutpat. Nunc a pharetra odio. Aliquam ornare scelerisque purus rutrum venenatis.
15
+
16
+ Fusce euismod magna quis accumsan vestibulum. Duis justo justo, placerat blandit adipiscing et, gravida nec ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque arcu elit, mattis rhoncus magna quis, luctus rutrum ligula. Integer a risus fermentum, consequat odio vel, tempor diam. Mauris venenatis risus at turpis molestie, vel sodales augue tincidunt. Ut eget dui tellus. Curabitur vel metus massa. Curabitur iaculis non lorem et posuere. Vestibulum non elit magna.
17
+
18
+ Aliquam tempus tortor vitae lacus bibendum sodales vel eu turpis. Maecenas aliquam tellus sed ipsum adipiscing placerat. Phasellus laoreet mauris non felis porttitor commodo. Pellentesque tempor pellentesque tempor. Ut tempor, velit in volutpat gravida, mi sem adipiscing lacus, et vestibulum arcu nisl ut mauris. Nullam eros mauris, interdum non nibh non, consequat pretium dui. Aliquam egestas, dui posuere congue euismod, leo dui commodo metus, ut ornare nunc orci id libero. Sed at ligula nec risus cursus malesuada sit amet eu nulla. In laoreet sem augue, non posuere leo fermentum ut. Ut porttitor, quam eget sollicitudin aliquet, orci enim ultrices orci, eu pretium nulla quam id orci. Sed risus metus, elementum at lacinia in, gravida eget purus. Donec nec vehicula arcu, a congue diam. Suspendisse potenti. Phasellus varius rutrum dolor, quis ornare massa consequat ac. Pellentesque nibh diam, semper non fringilla at, ultricies ac massa.
19
+
20
+ Phasellus porta interdum mi vel elementum. Suspendisse vulputate ac magna a congue. Maecenas gravida ut leo at porttitor. Etiam interdum egestas libero. Phasellus vel congue tortor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Mauris viverra sem purus, a feugiat leo faucibus id. Nullam nec est molestie, laoreet nulla id, interdum mauris. Aenean ultrices libero id nulla gravida euismod. Aliquam fermentum quam ut magna cursus, non eleifend quam fermentum.
21
+
22
+ Vivamus metus velit, malesuada ac quam at, tempor venenatis nibh. Morbi vel odio imperdiet, bibendum dui nec, imperdiet eros. Donec placerat mauris sed metus eleifend feugiat. In pulvinar arcu urna, tempus molestie quam varius eget. Aliquam viverra orci et arcu suscipit vestibulum. Fusce id placerat quam. Nullam fermentum massa a placerat dignissim. Cras sollicitudin, nisi sed laoreet pretium, dolor leo semper lorem, vitae varius arcu dolor a nunc. Suspendisse sit amet dolor vitae massa lacinia imperdiet. Fusce ac feugiat sem. In viverra orci in vulputate euismod.
23
+
24
+ Curabitur ornare malesuada dolor, sed adipiscing nunc. Suspendisse vel diam nulla. Donec ut elit a mi auctor gravida. Fusce nec massa mi. In interdum porta tortor sit amet accumsan. Cras auctor, ipsum vitae porta tempor, diam turpis dictum mi, nec mollis tellus libero dignissim justo. Mauris eget porttitor elit, et rhoncus arcu.
25
+
26
+ Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In ullamcorper iaculis ante ac lacinia. Aenean eget ipsum viverra, semper magna eget, congue sapien. Etiam tristique, lectus ut aliquet sodales, felis neque sodales magna, ac rhoncus tellus est nec enim. Proin aliquet massa sit amet lacus interdum feugiat. Suspendisse libero ipsum, facilisis sit amet consectetur et, tristique nec lectus. Duis fermentum quam lacus, ac hendrerit mi porttitor a. Quisque at sodales nibh, non sodales dolor. Morbi placerat velit sit amet erat convallis ultricies. Sed non lacus elit.
27
+
28
+ Etiam eleifend bibendum est, non volutpat leo rhoncus sed. Morbi ligula leo, fermentum sed turpis quis, fringilla pellentesque augue. Curabitur sodales rhoncus elit vel accumsan. Aliquam hendrerit in mauris quis imperdiet. Donec gravida ac felis in dapibus. Fusce non leo ut turpis aliquet sollicitudin a non est. Nunc a neque felis. Morbi ac hendrerit orci, eu convallis neque.
29
+
30
+ Donec interdum arcu ac pellentesque pellentesque. Nullam tincidunt vel velit vel gravida. Vestibulum ut quam et mauris ultrices feugiat. Nullam pellentesque ultricies ipsum non dapibus. Morbi tempor convallis elementum. Sed eget lorem ac dolor tincidunt dictum. Aliquam erat volutpat. Phasellus quis nulla ac neque tincidunt consectetur quis id ipsum. Cras eget est libero.
31
+
32
+ Duis cursus aliquet ligula in mollis. Nulla eget erat vel est lobortis lobortis a in urna. Nam fermentum suscipit dolor et tempor. Quisque at tristique dolor, eu fringilla neque. Etiam quis sapien at lacus auctor faucibus ac at libero. Praesent pulvinar sapien mi, vitae aliquam est fermentum non. Aliquam ac posuere libero. Nunc bibendum mauris metus, a blandit massa ultrices eu. Nunc placerat risus dolor, at aliquet metus ultrices at. Suspendisse iaculis interdum pellentesque.
33
+
34
+ Sed tempor nisl massa, non ornare diam elementum a. Mauris tempus massa justo, non fermentum lectus volutpat ut. Proin in massa quis arcu euismod vulputate sit amet vitae massa. Donec convallis dui eu massa blandit viverra. Curabitur et nunc vel purus auctor viverra eget nec lacus. Aliquam erat volutpat. Nam condimentum nunc nisi, nec congue neque auctor non. Donec mollis ante nec ligula eleifend, eu semper dui ullamcorper. Sed non magna ligula. Aenean id tortor et felis vehicula gravida sit amet vitae tortor. Morbi laoreet, urna vel viverra commodo, massa mi dictum nibh, nec tempus velit eros a leo. Nunc dapibus placerat felis, eu ultricies nunc ultrices in. Nam auctor libero eu mauris imperdiet, sit amet interdum libero convallis. Duis pulvinar pellentesque sollicitudin. Nam vestibulum nisl at tempus semper. Fusce non vulputate urna.
35
+
36
+ Proin tortor orci, luctus sit amet egestas dictum, accumsan ac erat. Mauris placerat nulla justo, et posuere turpis ultricies a. Morbi malesuada, odio non volutpat sagittis, libero est facilisis ante, at commodo dolor augue at quam. In mattis ipsum id egestas pulvinar. Maecenas rutrum tortor augue, at porttitor odio tincidunt eu. Morbi purus ipsum, volutpat ut massa a, aliquet elementum turpis. Praesent eget quam in eros pellentesque tempor nec vel magna. Mauris id enim sodales, iaculis lorem id, mattis augue. Phasellus ultrices laoreet purus sit amet porta. Quisque vulputate urna justo, quis vestibulum augue vulputate ultrices. Praesent laoreet sem sed diam volutpat, laoreet consequat sapien lobortis. Nullam ultrices volutpat risus, quis congue nulla congue a. Nunc pretium tortor nec pretium cursus. Aenean eget vehicula odio, a egestas orci.
37
+
38
+ Etiam scelerisque neque vitae mauris tincidunt, in lobortis nisi molestie. Nunc nisl velit, cursus varius congue et, consectetur sit amet ligula. Curabitur ipsum lectus, dignissim a ultrices id, semper non odio. Curabitur pharetra elementum sapien, vitae fringilla dolor tristique sit amet. Nam pharetra tellus justo, ut tempus neque varius nec. Nullam luctus quam vel nunc iaculis sagittis. Pellentesque at est massa. Nam ac sodales tortor.
39
+
40
+ Duis elit lacus, viverra sit amet tortor posuere, ornare viverra nunc. Vestibulum ut faucibus massa, vitae mollis lectus. Duis suscipit feugiat rutrum. Nam venenatis turpis sit amet justo convallis, in sollicitudin dolor interdum. Cras lacus risus, mattis quis faucibus quis, accumsan eget purus. Morbi a est quis lorem interdum malesuada quis a lorem. Nullam eu elit mauris. Sed pellentesque eleifend mollis. Etiam et lacus libero.
41
+
42
+ Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse commodo massa quis consequat posuere. Etiam eleifend ut nulla sagittis laoreet. Curabitur nulla lectus, consequat ac accumsan sit amet, placerat vitae massa. Donec a lectus dignissim, hendrerit tortor vitae, molestie sapien. Curabitur interdum pulvinar ultricies. Aenean vitae dignissim ipsum.
43
+
44
+ Mauris suscipit ullamcorper justo eu condimentum. Aliquam sed nisi nec risus tempus vulputate vel sed neque. Donec mollis ac nunc non vehicula. Vivamus vitae tincidunt lacus, vitae tempus diam. Phasellus eu nisi sollicitudin sapien congue ullamcorper. Phasellus mollis lectus sed semper egestas. Suspendisse hendrerit velit nisl, et dictum sem imperdiet eget. Nam luctus mi fringilla, rhoncus sem tempus, venenatis elit. Duis ullamcorper iaculis augue id venenatis. Vivamus convallis cursus velit vel iaculis. Ut rutrum feugiat ipsum bibendum porta. Donec eget tortor vitae erat volutpat sagittis ut pellentesque nunc.
45
+
46
+ Morbi id consectetur leo. Vestibulum massa massa, mattis quis congue quis, porta sit amet ligula. Aliquam adipiscing hendrerit felis, eu commodo neque malesuada sed. Aliquam erat volutpat. Praesent ut nisi non tortor tincidunt mattis. Fusce vulputate laoreet placerat. Maecenas dapibus facilisis interdum. Morbi a lobortis velit.
47
+
48
+ Pellentesque tincidunt mi quis metus imperdiet, in luctus lorem blandit. Nulla accumsan neque vitae libero tempus, sit amet consectetur justo semper. Interdum et malesuada fames ac ante ipsum primis in faucibus. Suspendisse congue arcu nisl, et fringilla sem viverra nec. Cras sed dolor gravida, lacinia metus non, ultricies nisl. Vestibulum turpis neque, placerat condimentum aliquet vitae, dapibus non lectus. Aenean arcu ipsum, dictum id eleifend a, facilisis non dui. Morbi ultricies nunc vel magna rhoncus venenatis. Donec id varius mi. Sed felis mauris, pretium et urna et, laoreet eleifend tellus.
49
+
50
+ Nullam varius suscipit arcu. Vivamus eleifend euismod lorem a blandit. Sed at dapibus massa. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus imperdiet, massa ac dignissim lacinia, nunc ipsum convallis massa, et facilisis arcu felis id metus. Fusce ac orci dolor. Etiam bibendum eros eu ante fringilla placerat sit amet in nisl. Integer in ullamcorper neque. Mauris id lacus ac dui lobortis tempus a ut mauris. Vestibulum urna ante, ullamcorper vel hendrerit vel, euismod sit amet nisl.
51
+
52
+ Aliquam vel scelerisque lorem, ut accumsan tellus. Suspendisse rutrum vestibulum nisi nec convallis. In ligula urna, bibendum at auctor vel, cursus id nunc. Cras id libero id lorem vestibulum feugiat eget ac diam. Fusce in ante neque. Fusce est nisl, aliquet at placerat sit amet, tincidunt id nisi. Aliquam ligula enim, egestas et tincidunt ac, pretium at sem. Aenean et purus ultricies lacus pulvinar sagittis quis ac mauris.
53
+
54
+ Mauris a imperdiet urna. Fusce sed dictum augue. Sed in tempor nibh. Etiam nec mi magna. Maecenas id ligula a metus bibendum convallis elementum in nisi. Vivamus lobortis vestibulum lectus, non rhoncus ipsum laoreet vitae. Nunc eget viverra lorem, eget scelerisque tellus. Duis et accumsan augue, vel tempor sem. Nullam ullamcorper cursus urna sit amet vehicula. Donec lacinia orci vitae arcu hendrerit elementum. Nulla scelerisque ultrices lorem eget hendrerit. Cras blandit elit a dui sagittis lobortis.
55
+
56
+ In quam ante, molestie id libero non, euismod gravida diam. Nulla quis nibh quis turpis rutrum feugiat nec eget mauris. Duis sit amet turpis tortor. Integer sem massa, fermentum sit amet pharetra in, luctus in lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla eros nibh, feugiat at interdum ac, tristique congue turpis. Phasellus nisl metus, dignissim quis leo accumsan, suscipit commodo enim. Aliquam sit amet iaculis enim. Proin suscipit risus non dui volutpat aliquam. Vivamus purus erat, lacinia sit amet eros eu, scelerisque volutpat risus. Phasellus pellentesque porta libero, ac interdum urna imperdiet ut. Donec sit amet ligula neque. Nam et velit id lorem malesuada pellentesque et eget nunc. Vestibulum consequat commodo feugiat. Morbi venenatis massa nec leo adipiscing scelerisque.
57
+
58
+ In semper, sem vulputate viverra accumsan, odio odio pharetra eros, sit amet rhoncus turpis orci vitae quam. Etiam erat felis, aliquam rutrum odio a, interdum rutrum felis. Nulla hendrerit ut justo sed vestibulum. Quisque interdum massa neque, sit amet gravida arcu consequat a. Praesent a sem lectus. Duis ultrices tincidunt mi, a euismod lectus mattis tempus. Vestibulum odio quam, lobortis et est nec, egestas adipiscing odio. Praesent et mi risus. Suspendisse dignissim, velit sit amet ultricies vulputate, arcu ipsum ornare arcu, congue aliquet justo nisl laoreet tortor. Cras pulvinar felis id justo porttitor, sed malesuada elit facilisis. Donec dignissim odio vitae urna fringilla faucibus sed eu ipsum.
59
+
60
+ Duis in tempor ipsum. Curabitur dignissim, nisi et mattis commodo, est mauris elementum nulla, sit amet lacinia libero orci ut sapien. Donec ultricies molestie nisi a pulvinar. Nullam imperdiet nisl velit. Pellentesque non est et odio volutpat placerat. Nam eu magna id diam porttitor tincidunt. Phasellus malesuada nec dui sit amet vulputate. Phasellus ut facilisis est.
61
+
62
+ Aliquam vestibulum urna ac purus volutpat ultrices. Integer eu posuere mi, vitae tincidunt dui. In quam justo, luctus quis diam ac, tristique auctor tellus. Ut at arcu erat. Nullam vitae ante tincidunt, venenatis lectus in, iaculis tortor. Nulla et sem in risus porttitor semper a ac neque. Sed ac nisi dignissim, scelerisque lorem a, ornare purus. Curabitur quis nisl blandit, placerat mauris ut, blandit tellus. Morbi quam est, interdum ut augue sed, euismod tempus mauris. In dictum nibh non elit fermentum iaculis. In id elit sit amet justo euismod aliquet vitae quis orci. In dapibus nunc tortor, et suscipit magna blandit ut. In quis ornare eros, sit amet pharetra nibh.
63
+
64
+ Ut porttitor elit sit amet leo sollicitudin dignissim. Donec adipiscing purus a auctor aliquam. Suspendisse scelerisque, felis sit amet accumsan venenatis, est elit laoreet lectus, sed convallis ligula eros sed nisl. Nam tristique mi justo. Nullam pharetra pulvinar odio, eu lacinia neque aliquam in. Pellentesque nisl lacus, tempus eu elit vel, rutrum suscipit dolor. Mauris eget pretium risus. Nullam porta commodo urna ac sodales. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent sed nisl sit amet erat pretium sagittis.
65
+
66
+ In consequat semper eleifend. Vestibulum id viverra dui. In hac habitasse platea dictumst. Vivamus aliquet ante ut enim tristique euismod. Nam interdum orci ante. Nam a orci ut dolor egestas blandit. Nam et auctor risus. Etiam auctor, sapien nec facilisis dictum, magna purus tempus dui, sed malesuada augue nisi eget erat. Donec quis scelerisque ante, vel interdum ipsum. Donec semper ligula et lacus aliquam lacinia. Sed pharetra molestie dapibus. Donec pulvinar erat id velit vehicula faucibus.
67
+
68
+ In hac habitasse platea dictumst. Nunc dictum turpis vel condimentum feugiat. Nam vel facilisis libero. Ut bibendum, mauris at scelerisque laoreet, libero leo mollis ligula, ut accumsan risus mauris eu velit. Phasellus quis sodales risus. Maecenas eget lacinia massa, nec accumsan mauris. Etiam quis sagittis magna. Duis sapien velit, viverra et ante et, commodo interdum ligula. Morbi sit amet commodo risus. Fusce in nibh in neque faucibus dignissim. Etiam lacinia justo quis egestas condimentum. Integer dapibus, elit id gravida mattis, magna elit sagittis arcu, ac hendrerit velit leo nec neque.
69
+
70
+ Morbi sed lectus at diam molestie convallis. Duis at convallis tellus. Duis sodales, arcu non convallis molestie, purus nibh molestie massa, tempor cursus enim ante at nisl. Aliquam sed massa lorem. Cras adipiscing velit tincidunt justo semper, vel fermentum diam luctus. Proin ante turpis, auctor quis odio ut, volutpat ultrices diam. Duis a interdum neque, sit amet accumsan enim. Vivamus vehicula feugiat leo, vel tempus elit. Sed laoreet adipiscing suscipit.
71
+
72
+ In facilisis vestibulum est ut vulputate. Aliquam vehicula magna a ultrices dapibus. Sed eu tortor ut eros posuere bibendum euismod sed felis. Donec tempor metus quis tellus venenatis dapibus. Proin imperdiet at velit et sagittis. Aenean euismod porta lacus, et rutrum enim porta feugiat. Donec posuere risus nec mi dapibus, tristique fermentum urna tempor. Nunc nisi quam, rutrum et varius sed, viverra faucibus lacus. Pellentesque vulputate tempor orci at sollicitudin. Nulla sit amet malesuada justo, quis posuere lorem. Phasellus lorem libero, commodo quis porta malesuada, varius in quam. Cras tellus sem, malesuada nec molestie at, dignissim ac mauris. Aenean viverra ipsum at aliquet cursus. Nam porta eu ipsum quis facilisis. Suspendisse vel commodo risus. Ut malesuada metus accumsan egestas feugiat.
73
+
74
+ Nullam dapibus massa quis arcu cursus rhoncus. Fusce a nulla at lacus accumsan adipiscing vitae id tellus. Duis consequat erat sit amet felis congue viverra. Morbi sed est odio. Maecenas malesuada euismod ante, vitae fermentum quam fringilla at. Nullam congue elit in nisl aliquam semper. Fusce aliquam lacus eget fermentum euismod. Sed vitae arcu mauris.
75
+
76
+ Nullam congue dolor sed ligula gravida, nec lacinia dui tempus. Duis vitae tempus mi. Fusce feugiat est id fringilla vulputate. Mauris ultricies sem feugiat dolor cursus, eu semper libero molestie. Donec lacinia nulla urna, non molestie ante volutpat quis. Mauris mollis magna lacus, quis tristique metus aliquam vel. Ut eget tristique erat.
77
+
78
+ Duis fringilla nulla nec euismod consectetur. Maecenas sed turpis arcu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed auctor augue nec porta hendrerit. Fusce vitae cursus augue. Morbi urna sem, convallis bibendum faucibus ac, tincidunt et nibh. Cras lacinia, lorem eu vestibulum dignissim, ligula nisi consequat erat, eu placerat lacus sem at metus. Cras aliquet urna at nisi volutpat, id tincidunt lacus accumsan.
79
+
80
+ Aliquam euismod bibendum mauris. Sed pellentesque, lacus ut sagittis fermentum, diam nibh bibendum metus, ut porttitor libero urna vel sapien. Nunc non urna elementum, volutpat odio vitae, accumsan turpis. Sed pharetra, est non sodales gravida, lacus lacus egestas lacus, a consequat risus libero vitae magna. Sed non molestie felis, in cursus orci.
81
+ Sed amet." * 2
82
+
83
+ end
84
+
85
+
86
+ # start the server if ruby file executed directly
87
+ run! if app_file == $0
88
+
89
+ end
@@ -0,0 +1,89 @@
1
+ require 'sinatra/base'
2
+
3
+ # 40kb Testserver
4
+ #
5
+ class ServerTwo < Sinatra::Base
6
+
7
+ get '/' do
8
+
9
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ultrices, ipsum quis bibendum dignissim, tellus eros placerat nisi, dapibus blandit lectus dui non risus. Integer dui lectus, suscipit non nulla sit amet, iaculis rutrum nulla. Curabitur vehicula in libero facilisis porta. Proin commodo ante nec volutpat hendrerit. Sed dapibus scelerisque aliquet. In hac habitasse platea dictumst. Donec vitae tristique quam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus tincidunt eu massa nec aliquam.
10
+
11
+ Sed aliquet enim erat, vitae condimentum ipsum tristique eu. Pellentesque iaculis nisl nibh, ac feugiat felis vestibulum eget. Phasellus ut condimentum enim, et suscipit augue. Integer at dui nec dui commodo volutpat sit amet a mi. In facilisis augue nunc, vel egestas nisl eleifend id. Praesent sed tellus vitae nisi venenatis malesuada non eget dui. Aenean nec lorem vel velit ultricies vulputate sed eget metus. In vel tristique dolor. Sed odio libero, dignissim a tellus quis, bibendum tincidunt orci. Maecenas mattis, ante at porta euismod, elit mauris varius odio, tristique gravida lorem lectus at lacus. Mauris ut interdum nulla. Mauris eget dui id purus ornare luctus.
12
+
13
+ Pellentesque feugiat fermentum risus, et sodales neque interdum at. Vestibulum a tempus odio. Fusce eu lorem dictum, cursus sapien et, fringilla leo. Donec ultricies, elit sit amet venenatis mollis, neque dui ultricies eros, eu hendrerit nulla lorem eget lorem. Ut vestibulum mi tempus odio tempus, vel aliquet libero condimentum. Vivamus sodales lacinia commodo. Praesent convallis sit amet massa quis blandit. Integer lobortis, metus eu venenatis vulputate, metus turpis mattis nibh, et faucibus mauris mauris nec magna. Fusce volutpat, metus vitae semper semper, tortor arcu ultrices leo, vitae mattis felis massa sit amet erat. Phasellus vitae posuere dui. Mauris ultrices interdum libero, ac porta magna tristique sed. Vivamus nulla enim, cursus vel sem vel, sollicitudin ornare lectus. Sed tristique lobortis ipsum, nec tristique purus vestibulum non. Nulla et molestie metus. Nullam id tortor gravida, cursus mauris ut, facilisis nunc.
14
+
15
+ Duis interdum quam quis orci volutpat iaculis. Aliquam non commodo metus. Vestibulum sit amet bibendum nulla. Nam purus orci, dapibus vitae pharetra eget, dapibus at risus. Quisque in convallis urna. Quisque pulvinar, nisi nec sodales viverra, turpis lectus placerat justo, at aliquam velit velit quis turpis. Etiam iaculis elit et purus venenatis, sed ullamcorper leo tincidunt. Donec vulputate ornare ipsum id iaculis. Nunc vitae quam nulla. Aenean sit amet nisi vitae eros aliquet volutpat. Nunc a pharetra odio. Aliquam ornare scelerisque purus rutrum venenatis.
16
+
17
+ Fusce euismod magna quis accumsan vestibulum. Duis justo justo, placerat blandit adipiscing et, gravida nec ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque arcu elit, mattis rhoncus magna quis, luctus rutrum ligula. Integer a risus fermentum, consequat odio vel, tempor diam. Mauris venenatis risus at turpis molestie, vel sodales augue tincidunt. Ut eget dui tellus. Curabitur vel metus massa. Curabitur iaculis non lorem et posuere. Vestibulum non elit magna.
18
+
19
+ Aliquam tempus tortor vitae lacus bibendum sodales vel eu turpis. Maecenas aliquam tellus sed ipsum adipiscing placerat. Phasellus laoreet mauris non felis porttitor commodo. Pellentesque tempor pellentesque tempor. Ut tempor, velit in volutpat gravida, mi sem adipiscing lacus, et vestibulum arcu nisl ut mauris. Nullam eros mauris, interdum non nibh non, consequat pretium dui. Aliquam egestas, dui posuere congue euismod, leo dui commodo metus, ut ornare nunc orci id libero. Sed at ligula nec risus cursus malesuada sit amet eu nulla. In laoreet sem augue, non posuere leo fermentum ut. Ut porttitor, quam eget sollicitudin aliquet, orci enim ultrices orci, eu pretium nulla quam id orci. Sed risus metus, elementum at lacinia in, gravida eget purus. Donec nec vehicula arcu, a congue diam. Suspendisse potenti. Phasellus varius rutrum dolor, quis ornare massa consequat ac. Pellentesque nibh diam, semper non fringilla at, ultricies ac massa.
20
+
21
+ Phasellus porta interdum mi vel elementum. Suspendisse vulputate ac magna a congue. Maecenas gravida ut leo at porttitor. Etiam interdum egestas libero. Phasellus vel congue tortor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Mauris viverra sem purus, a feugiat leo faucibus id. Nullam nec est molestie, laoreet nulla id, interdum mauris. Aenean ultrices libero id nulla gravida euismod. Aliquam fermentum quam ut magna cursus, non eleifend quam fermentum.
22
+
23
+ Vivamus metus velit, malesuada ac quam at, tempor venenatis nibh. Morbi vel odio imperdiet, bibendum dui nec, imperdiet eros. Donec placerat mauris sed metus eleifend feugiat. In pulvinar arcu urna, tempus molestie quam varius eget. Aliquam viverra orci et arcu suscipit vestibulum. Fusce id placerat quam. Nullam fermentum massa a placerat dignissim. Cras sollicitudin, nisi sed laoreet pretium, dolor leo semper lorem, vitae varius arcu dolor a nunc. Suspendisse sit amet dolor vitae massa lacinia imperdiet. Fusce ac feugiat sem. In viverra orci in vulputate euismod.
24
+
25
+ Curabitur ornare malesuada dolor, sed adipiscing nunc. Suspendisse vel diam nulla. Donec ut elit a mi auctor gravida. Fusce nec massa mi. In interdum porta tortor sit amet accumsan. Cras auctor, ipsum vitae porta tempor, diam turpis dictum mi, nec mollis tellus libero dignissim justo. Mauris eget porttitor elit, et rhoncus arcu.
26
+
27
+ Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In ullamcorper iaculis ante ac lacinia. Aenean eget ipsum viverra, semper magna eget, congue sapien. Etiam tristique, lectus ut aliquet sodales, felis neque sodales magna, ac rhoncus tellus est nec enim. Proin aliquet massa sit amet lacus interdum feugiat. Suspendisse libero ipsum, facilisis sit amet consectetur et, tristique nec lectus. Duis fermentum quam lacus, ac hendrerit mi porttitor a. Quisque at sodales nibh, non sodales dolor. Morbi placerat velit sit amet erat convallis ultricies. Sed non lacus elit.
28
+
29
+ Etiam eleifend bibendum est, non volutpat leo rhoncus sed. Morbi ligula leo, fermentum sed turpis quis, fringilla pellentesque augue. Curabitur sodales rhoncus elit vel accumsan. Aliquam hendrerit in mauris quis imperdiet. Donec gravida ac felis in dapibus. Fusce non leo ut turpis aliquet sollicitudin a non est. Nunc a neque felis. Morbi ac hendrerit orci, eu convallis neque.
30
+
31
+ Donec interdum arcu ac pellentesque pellentesque. Nullam tincidunt vel velit vel gravida. Vestibulum ut quam et mauris ultrices feugiat. Nullam pellentesque ultricies ipsum non dapibus. Morbi tempor convallis elementum. Sed eget lorem ac dolor tincidunt dictum. Aliquam erat volutpat. Phasellus quis nulla ac neque tincidunt consectetur quis id ipsum. Cras eget est libero.
32
+
33
+ Duis cursus aliquet ligula in mollis. Nulla eget erat vel est lobortis lobortis a in urna. Nam fermentum suscipit dolor et tempor. Quisque at tristique dolor, eu fringilla neque. Etiam quis sapien at lacus auctor faucibus ac at libero. Praesent pulvinar sapien mi, vitae aliquam est fermentum non. Aliquam ac posuere libero. Nunc bibendum mauris metus, a blandit massa ultrices eu. Nunc placerat risus dolor, at aliquet metus ultrices at. Suspendisse iaculis interdum pellentesque.
34
+
35
+ Sed tempor nisl massa, non ornare diam elementum a. Mauris tempus massa justo, non fermentum lectus volutpat ut. Proin in massa quis arcu euismod vulputate sit amet vitae massa. Donec convallis dui eu massa blandit viverra. Curabitur et nunc vel purus auctor viverra eget nec lacus. Aliquam erat volutpat. Nam condimentum nunc nisi, nec congue neque auctor non. Donec mollis ante nec ligula eleifend, eu semper dui ullamcorper. Sed non magna ligula. Aenean id tortor et felis vehicula gravida sit amet vitae tortor. Morbi laoreet, urna vel viverra commodo, massa mi dictum nibh, nec tempus velit eros a leo. Nunc dapibus placerat felis, eu ultricies nunc ultrices in. Nam auctor libero eu mauris imperdiet, sit amet interdum libero convallis. Duis pulvinar pellentesque sollicitudin. Nam vestibulum nisl at tempus semper. Fusce non vulputate urna.
36
+
37
+ Proin tortor orci, luctus sit amet egestas dictum, accumsan ac erat. Mauris placerat nulla justo, et posuere turpis ultricies a. Morbi malesuada, odio non volutpat sagittis, libero est facilisis ante, at commodo dolor augue at quam. In mattis ipsum id egestas pulvinar. Maecenas rutrum tortor augue, at porttitor odio tincidunt eu. Morbi purus ipsum, volutpat ut massa a, aliquet elementum turpis. Praesent eget quam in eros pellentesque tempor nec vel magna. Mauris id enim sodales, iaculis lorem id, mattis augue. Phasellus ultrices laoreet purus sit amet porta. Quisque vulputate urna justo, quis vestibulum augue vulputate ultrices. Praesent laoreet sem sed diam volutpat, laoreet consequat sapien lobortis. Nullam ultrices volutpat risus, quis congue nulla congue a. Nunc pretium tortor nec pretium cursus. Aenean eget vehicula odio, a egestas orci.
38
+
39
+ Etiam scelerisque neque vitae mauris tincidunt, in lobortis nisi molestie. Nunc nisl velit, cursus varius congue et, consectetur sit amet ligula. Curabitur ipsum lectus, dignissim a ultrices id, semper non odio. Curabitur pharetra elementum sapien, vitae fringilla dolor tristique sit amet. Nam pharetra tellus justo, ut tempus neque varius nec. Nullam luctus quam vel nunc iaculis sagittis. Pellentesque at est massa. Nam ac sodales tortor.
40
+
41
+ Duis elit lacus, viverra sit amet tortor posuere, ornare viverra nunc. Vestibulum ut faucibus massa, vitae mollis lectus. Duis suscipit feugiat rutrum. Nam venenatis turpis sit amet justo convallis, in sollicitudin dolor interdum. Cras lacus risus, mattis quis faucibus quis, accumsan eget purus. Morbi a est quis lorem interdum malesuada quis a lorem. Nullam eu elit mauris. Sed pellentesque eleifend mollis. Etiam et lacus libero.
42
+
43
+ Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse commodo massa quis consequat posuere. Etiam eleifend ut nulla sagittis laoreet. Curabitur nulla lectus, consequat ac accumsan sit amet, placerat vitae massa. Donec a lectus dignissim, hendrerit tortor vitae, molestie sapien. Curabitur interdum pulvinar ultricies. Aenean vitae dignissim ipsum.
44
+
45
+ Mauris suscipit ullamcorper justo eu condimentum. Aliquam sed nisi nec risus tempus vulputate vel sed neque. Donec mollis ac nunc non vehicula. Vivamus vitae tincidunt lacus, vitae tempus diam. Phasellus eu nisi sollicitudin sapien congue ullamcorper. Phasellus mollis lectus sed semper egestas. Suspendisse hendrerit velit nisl, et dictum sem imperdiet eget. Nam luctus mi fringilla, rhoncus sem tempus, venenatis elit. Duis ullamcorper iaculis augue id venenatis. Vivamus convallis cursus velit vel iaculis. Ut rutrum feugiat ipsum bibendum porta. Donec eget tortor vitae erat volutpat sagittis ut pellentesque nunc.
46
+
47
+ Morbi id consectetur leo. Vestibulum massa massa, mattis quis congue quis, porta sit amet ligula. Aliquam adipiscing hendrerit felis, eu commodo neque malesuada sed. Aliquam erat volutpat. Praesent ut nisi non tortor tincidunt mattis. Fusce vulputate laoreet placerat. Maecenas dapibus facilisis interdum. Morbi a lobortis velit.
48
+
49
+ Pellentesque tincidunt mi quis metus imperdiet, in luctus lorem blandit. Nulla accumsan neque vitae libero tempus, sit amet consectetur justo semper. Interdum et malesuada fames ac ante ipsum primis in faucibus. Suspendisse congue arcu nisl, et fringilla sem viverra nec. Cras sed dolor gravida, lacinia metus non, ultricies nisl. Vestibulum turpis neque, placerat condimentum aliquet vitae, dapibus non lectus. Aenean arcu ipsum, dictum id eleifend a, facilisis non dui. Morbi ultricies nunc vel magna rhoncus venenatis. Donec id varius mi. Sed felis mauris, pretium et urna et, laoreet eleifend tellus.
50
+
51
+ Nullam varius suscipit arcu. Vivamus eleifend euismod lorem a blandit. Sed at dapibus massa. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus imperdiet, massa ac dignissim lacinia, nunc ipsum convallis massa, et facilisis arcu felis id metus. Fusce ac orci dolor. Etiam bibendum eros eu ante fringilla placerat sit amet in nisl. Integer in ullamcorper neque. Mauris id lacus ac dui lobortis tempus a ut mauris. Vestibulum urna ante, ullamcorper vel hendrerit vel, euismod sit amet nisl.
52
+
53
+ Aliquam vel scelerisque lorem, ut accumsan tellus. Suspendisse rutrum vestibulum nisi nec convallis. In ligula urna, bibendum at auctor vel, cursus id nunc. Cras id libero id lorem vestibulum feugiat eget ac diam. Fusce in ante neque. Fusce est nisl, aliquet at placerat sit amet, tincidunt id nisi. Aliquam ligula enim, egestas et tincidunt ac, pretium at sem. Aenean et purus ultricies lacus pulvinar sagittis quis ac mauris.
54
+
55
+ Mauris a imperdiet urna. Fusce sed dictum augue. Sed in tempor nibh. Etiam nec mi magna. Maecenas id ligula a metus bibendum convallis elementum in nisi. Vivamus lobortis vestibulum lectus, non rhoncus ipsum laoreet vitae. Nunc eget viverra lorem, eget scelerisque tellus. Duis et accumsan augue, vel tempor sem. Nullam ullamcorper cursus urna sit amet vehicula. Donec lacinia orci vitae arcu hendrerit elementum. Nulla scelerisque ultrices lorem eget hendrerit. Cras blandit elit a dui sagittis lobortis.
56
+
57
+ In quam ante, molestie id libero non, euismod gravida diam. Nulla quis nibh quis turpis rutrum feugiat nec eget mauris. Duis sit amet turpis tortor. Integer sem massa, fermentum sit amet pharetra in, luctus in lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla eros nibh, feugiat at interdum ac, tristique congue turpis. Phasellus nisl metus, dignissim quis leo accumsan, suscipit commodo enim. Aliquam sit amet iaculis enim. Proin suscipit risus non dui volutpat aliquam. Vivamus purus erat, lacinia sit amet eros eu, scelerisque volutpat risus. Phasellus pellentesque porta libero, ac interdum urna imperdiet ut. Donec sit amet ligula neque. Nam et velit id lorem malesuada pellentesque et eget nunc. Vestibulum consequat commodo feugiat. Morbi venenatis massa nec leo adipiscing scelerisque.
58
+
59
+ In semper, sem vulputate viverra accumsan, odio odio pharetra eros, sit amet rhoncus turpis orci vitae quam. Etiam erat felis, aliquam rutrum odio a, interdum rutrum felis. Nulla hendrerit ut justo sed vestibulum. Quisque interdum massa neque, sit amet gravida arcu consequat a. Praesent a sem lectus. Duis ultrices tincidunt mi, a euismod lectus mattis tempus. Vestibulum odio quam, lobortis et est nec, egestas adipiscing odio. Praesent et mi risus. Suspendisse dignissim, velit sit amet ultricies vulputate, arcu ipsum ornare arcu, congue aliquet justo nisl laoreet tortor. Cras pulvinar felis id justo porttitor, sed malesuada elit facilisis. Donec dignissim odio vitae urna fringilla faucibus sed eu ipsum.
60
+
61
+ Duis in tempor ipsum. Curabitur dignissim, nisi et mattis commodo, est mauris elementum nulla, sit amet lacinia libero orci ut sapien. Donec ultricies molestie nisi a pulvinar. Nullam imperdiet nisl velit. Pellentesque non est et odio volutpat placerat. Nam eu magna id diam porttitor tincidunt. Phasellus malesuada nec dui sit amet vulputate. Phasellus ut facilisis est.
62
+
63
+ Aliquam vestibulum urna ac purus volutpat ultrices. Integer eu posuere mi, vitae tincidunt dui. In quam justo, luctus quis diam ac, tristique auctor tellus. Ut at arcu erat. Nullam vitae ante tincidunt, venenatis lectus in, iaculis tortor. Nulla et sem in risus porttitor semper a ac neque. Sed ac nisi dignissim, scelerisque lorem a, ornare purus. Curabitur quis nisl blandit, placerat mauris ut, blandit tellus. Morbi quam est, interdum ut augue sed, euismod tempus mauris. In dictum nibh non elit fermentum iaculis. In id elit sit amet justo euismod aliquet vitae quis orci. In dapibus nunc tortor, et suscipit magna blandit ut. In quis ornare eros, sit amet pharetra nibh.
64
+
65
+ Ut porttitor elit sit amet leo sollicitudin dignissim. Donec adipiscing purus a auctor aliquam. Suspendisse scelerisque, felis sit amet accumsan venenatis, est elit laoreet lectus, sed convallis ligula eros sed nisl. Nam tristique mi justo. Nullam pharetra pulvinar odio, eu lacinia neque aliquam in. Pellentesque nisl lacus, tempus eu elit vel, rutrum suscipit dolor. Mauris eget pretium risus. Nullam porta commodo urna ac sodales. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent sed nisl sit amet erat pretium sagittis.
66
+
67
+ In consequat semper eleifend. Vestibulum id viverra dui. In hac habitasse platea dictumst. Vivamus aliquet ante ut enim tristique euismod. Nam interdum orci ante. Nam a orci ut dolor egestas blandit. Nam et auctor risus. Etiam auctor, sapien nec facilisis dictum, magna purus tempus dui, sed malesuada augue nisi eget erat. Donec quis scelerisque ante, vel interdum ipsum. Donec semper ligula et lacus aliquam lacinia. Sed pharetra molestie dapibus. Donec pulvinar erat id velit vehicula faucibus.
68
+
69
+ In hac habitasse platea dictumst. Nunc dictum turpis vel condimentum feugiat. Nam vel facilisis libero. Ut bibendum, mauris at scelerisque laoreet, libero leo mollis ligula, ut accumsan risus mauris eu velit. Phasellus quis sodales risus. Maecenas eget lacinia massa, nec accumsan mauris. Etiam quis sagittis magna. Duis sapien velit, viverra et ante et, commodo interdum ligula. Morbi sit amet commodo risus. Fusce in nibh in neque faucibus dignissim. Etiam lacinia justo quis egestas condimentum. Integer dapibus, elit id gravida mattis, magna elit sagittis arcu, ac hendrerit velit leo nec neque.
70
+
71
+ Morbi sed lectus at diam molestie convallis. Duis at convallis tellus. Duis sodales, arcu non convallis molestie, purus nibh molestie massa, tempor cursus enim ante at nisl. Aliquam sed massa lorem. Cras adipiscing velit tincidunt justo semper, vel fermentum diam luctus. Proin ante turpis, auctor quis odio ut, volutpat ultrices diam. Duis a interdum neque, sit amet accumsan enim. Vivamus vehicula feugiat leo, vel tempus elit. Sed laoreet adipiscing suscipit.
72
+
73
+ In facilisis vestibulum est ut vulputate. Aliquam vehicula magna a ultrices dapibus. Sed eu tortor ut eros posuere bibendum euismod sed felis. Donec tempor metus quis tellus venenatis dapibus. Proin imperdiet at velit et sagittis. Aenean euismod porta lacus, et rutrum enim porta feugiat. Donec posuere risus nec mi dapibus, tristique fermentum urna tempor. Nunc nisi quam, rutrum et varius sed, viverra faucibus lacus. Pellentesque vulputate tempor orci at sollicitudin. Nulla sit amet malesuada justo, quis posuere lorem. Phasellus lorem libero, commodo quis porta malesuada, varius in quam. Cras tellus sem, malesuada nec molestie at, dignissim ac mauris. Aenean viverra ipsum at aliquet cursus. Nam porta eu ipsum quis facilisis. Suspendisse vel commodo risus. Ut malesuada metus accumsan egestas feugiat.
74
+
75
+ Nullam dapibus massa quis arcu cursus rhoncus. Fusce a nulla at lacus accumsan adipiscing vitae id tellus. Duis consequat erat sit amet felis congue viverra. Morbi sed est odio. Maecenas malesuada euismod ante, vitae fermentum quam fringilla at. Nullam congue elit in nisl aliquam semper. Fusce aliquam lacus eget fermentum euismod. Sed vitae arcu mauris.
76
+
77
+ Nullam congue dolor sed ligula gravida, nec lacinia dui tempus. Duis vitae tempus mi. Fusce feugiat est id fringilla vulputate. Mauris ultricies sem feugiat dolor cursus, eu semper libero molestie. Donec lacinia nulla urna, non molestie ante volutpat quis. Mauris mollis magna lacus, quis tristique metus aliquam vel. Ut eget tristique erat.
78
+
79
+ Duis fringilla nulla nec euismod consectetur. Maecenas sed turpis arcu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed auctor augue nec porta hendrerit. Fusce vitae cursus augue. Morbi urna sem, convallis bibendum faucibus ac, tincidunt et nibh. Cras lacinia, lorem eu vestibulum dignissim, ligula nisi consequat erat, eu placerat lacus sem at metus. Cras aliquet urna at nisi volutpat, id tincidunt lacus accumsan.
80
+
81
+ Aliquam euismod bibendum mauris. Sed pellentesque, lacus ut sagittis fermentum, diam nibh bibendum metus, ut porttitor libero urna vel sapien. Nunc non urna elementum, volutpat odio vitae, accumsan turpis. Sed pharetra, est non sodales gravida, lacus lacus egestas lacus, a consequat risus libero vitae magna. Sed non molestie felis, in cursus orci.
82
+ Sed amet." * 25
83
+
84
+ end
85
+
86
+ # start the server if ruby file executed directly
87
+ run! if app_file == $0
88
+
89
+ end