passenger 5.0.4 → 5.0.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (550) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.editorconfig +10 -0
  5. data/CHANGELOG +21 -0
  6. data/build/agents.rb +2 -2
  7. data/build/apache2.rb +6 -5
  8. data/build/common_library.rb +22 -7
  9. data/build/cxx_tests.rb +0 -3
  10. data/build/misc.rb +1 -1
  11. data/dev/parse_file_descriptor_log +119 -0
  12. data/doc/CloudLicensingConfiguration.html +387 -0
  13. data/doc/Design and Architecture.html +2430 -0
  14. data/doc/Packaging.html +488 -0
  15. data/doc/Security of user switching support.html +1833 -0
  16. data/doc/ServerOptimizationGuide.html +659 -0
  17. data/doc/ServerOptimizationGuide.txt.md +8 -0
  18. data/doc/Users guide Apache.html +9116 -0
  19. data/doc/Users guide Apache.idmap.txt +6 -2
  20. data/doc/Users guide Apache.txt +26 -7
  21. data/doc/Users guide Nginx.html +9025 -0
  22. data/doc/Users guide Nginx.idmap.txt +7 -3
  23. data/doc/Users guide Nginx.txt +29 -6
  24. data/doc/Users guide Standalone.html +3983 -0
  25. data/doc/Users guide.html +1748 -0
  26. data/doc/users_guide_snippets/installation.txt +4 -4
  27. data/ext/apache2/Configuration.cpp +16 -5
  28. data/ext/apache2/Configuration.hpp +4 -2
  29. data/ext/apache2/Hooks.cpp +44 -19
  30. data/ext/boost/libs/thread/src/pthread/once.cpp +2 -0
  31. data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +6 -0
  32. data/ext/common/AgentsStarter.h +3 -2
  33. data/ext/common/ApplicationPool2/DirectSpawner.h +14 -4
  34. data/ext/common/ApplicationPool2/DummySpawner.h +12 -7
  35. data/ext/common/ApplicationPool2/Implementation.cpp +1 -1
  36. data/ext/common/ApplicationPool2/Process.h +2 -1
  37. data/ext/common/ApplicationPool2/Session.h +6 -6
  38. data/ext/common/ApplicationPool2/SmartSpawner.h +19 -4
  39. data/ext/common/ApplicationPool2/Socket.h +59 -27
  40. data/ext/common/ApplicationPool2/Spawner.h +2 -2
  41. data/ext/common/BackgroundEventLoop.cpp +6 -1
  42. data/ext/common/Constants.h +1 -1
  43. data/ext/common/EventedClient.h +1 -1
  44. data/ext/common/EventedServer.h +2 -2
  45. data/ext/common/FileDescriptor.h +25 -6
  46. data/ext/common/Logging.cpp +107 -52
  47. data/ext/common/Logging.h +146 -19
  48. data/ext/common/MessageClient.h +2 -2
  49. data/ext/common/MessageServer.h +3 -2
  50. data/ext/common/RandomGenerator.h +8 -7
  51. data/ext/common/SafeLibev.h +5 -1
  52. data/ext/common/ServerKit/AcceptLoadBalancer.h +9 -4
  53. data/ext/common/ServerKit/FdSinkChannel.h +5 -2
  54. data/ext/common/ServerKit/FdSourceChannel.h +5 -2
  55. data/ext/common/ServerKit/FileBufferedChannel.h +2 -0
  56. data/ext/common/ServerKit/FileBufferedFdSinkChannel.h +7 -2
  57. data/ext/common/ServerKit/HttpServer.h +6 -0
  58. data/ext/common/ServerKit/Server.h +40 -3
  59. data/ext/common/StaticString.h +20 -0
  60. data/ext/common/UnionStation/Connection.h +3 -1
  61. data/ext/common/UnionStation/Core.h +6 -4
  62. data/ext/common/Utils.cpp +4 -3
  63. data/ext/common/Utils/DateParsing.h +19 -5
  64. data/ext/common/Utils/FastStringStream.h +183 -0
  65. data/ext/common/Utils/IOUtils.cpp +47 -28
  66. data/ext/common/Utils/IOUtils.h +56 -12
  67. data/ext/common/Utils/MessagePassing.h +3 -3
  68. data/ext/common/Utils/ProcessMetricsCollector.h +2 -2
  69. data/ext/common/Utils/ScopeGuard.h +16 -5
  70. data/ext/common/Utils/SpeedMeter.h +2 -2
  71. data/ext/common/Utils/StrIntUtils.cpp +6 -6
  72. data/ext/common/Utils/StrIntUtils.h +2 -1
  73. data/ext/common/agents/Base.cpp +56 -4
  74. data/ext/common/agents/Base.h +2 -1
  75. data/ext/common/agents/HelperAgent/AdminServer.h +122 -11
  76. data/ext/common/agents/HelperAgent/Main.cpp +16 -5
  77. data/ext/common/agents/HelperAgent/OptionParser.h +7 -1
  78. data/ext/common/agents/HelperAgent/RequestHandler.h +1 -1
  79. data/ext/common/agents/HelperAgent/RequestHandler/Hooks.cpp +10 -1
  80. data/ext/common/agents/HelperAgent/RequestHandler/Request.h +8 -0
  81. data/ext/common/agents/HelperAgent/RequestHandler/TurboCaching.h +4 -3
  82. data/ext/common/agents/LoggingAgent/AdminServer.h +57 -11
  83. data/ext/common/agents/LoggingAgent/LoggingServer.h +3 -3
  84. data/ext/common/agents/LoggingAgent/Main.cpp +11 -3
  85. data/ext/common/agents/Watchdog/AdminServer.h +53 -11
  86. data/ext/common/agents/Watchdog/AgentWatcher.cpp +3 -3
  87. data/ext/common/agents/Watchdog/Main.cpp +13 -6
  88. data/ext/libeio/ecb.h +1 -1
  89. data/ext/libev/ev.c +13 -1
  90. data/ext/libev/ev.h +3 -0
  91. data/ext/nginx/Configuration.c +28 -6
  92. data/ext/nginx/Configuration.h +2 -1
  93. data/ext/nginx/ngx_http_passenger_module.c +5 -4
  94. data/ext/oxt/dynamic_thread_group.hpp +38 -5
  95. data/lib/phusion_passenger.rb +1 -1
  96. data/lib/phusion_passenger/common_library.rb +9 -5
  97. data/lib/phusion_passenger/config/reopen_logs_command.rb +2 -2
  98. data/lib/phusion_passenger/packaging.rb +23 -37
  99. data/passenger.gemspec +21 -21
  100. metadata +4 -453
  101. metadata.gz.asc +7 -7
  102. data/.gitignore +0 -68
  103. data/.travis.yml +0 -16
  104. data/Gemfile +0 -17
  105. data/Gemfile.lock +0 -39
  106. data/Vagrantfile +0 -54
  107. data/debian.template/README.Debian +0 -15
  108. data/debian.template/changelog +0 -316
  109. data/debian.template/compat +0 -1
  110. data/debian.template/control.erb +0 -91
  111. data/debian.template/copyright +0 -385
  112. data/debian.template/libapache2-mod-passenger.install +0 -3
  113. data/debian.template/libapache2-mod-passenger.postinst +0 -36
  114. data/debian.template/libapache2-mod-passenger.prerm +0 -15
  115. data/debian.template/locations.ini.erb +0 -14
  116. data/debian.template/passenger-dev.install.erb +0 -3
  117. data/debian.template/passenger-doc.install.erb +0 -2
  118. data/debian.template/passenger.conf +0 -6
  119. data/debian.template/passenger.docs +0 -4
  120. data/debian.template/passenger.install.erb +0 -14
  121. data/debian.template/passenger.load +0 -3
  122. data/debian.template/passenger.manpages +0 -3
  123. data/debian.template/patches/series +0 -0
  124. data/debian.template/rules.erb +0 -76
  125. data/debian.template/source/format +0 -1
  126. data/ext/common/EventedBufferedInput.h +0 -458
  127. data/packaging/rpm/LICENSE.txt +0 -19
  128. data/packaging/rpm/Makefile +0 -13
  129. data/packaging/rpm/README.md +0 -41
  130. data/packaging/rpm/Vagrantfile +0 -38
  131. data/packaging/rpm/Vagrantfile.centos +0 -30
  132. data/packaging/rpm/build +0 -170
  133. data/packaging/rpm/create_project +0 -41
  134. data/packaging/rpm/git_update +0 -88
  135. data/packaging/rpm/image/Dockerfile +0 -37
  136. data/packaging/rpm/image/Gemfile +0 -3
  137. data/packaging/rpm/image/Gemfile.lock +0 -12
  138. data/packaging/rpm/image/RPM-GPG-KEY-amazon-ga +0 -19
  139. data/packaging/rpm/image/amazon2014-i386.cfg +0 -96
  140. data/packaging/rpm/image/amazon2014-x86_64.cfg +0 -96
  141. data/packaging/rpm/image/site-defaults.cfg +0 -168
  142. data/packaging/rpm/internal/build_tasks.rb +0 -238
  143. data/packaging/rpm/internal/dummygpg +0 -11
  144. data/packaging/rpm/internal/exec_build +0 -42
  145. data/packaging/rpm/internal/get_distro_arch +0 -14
  146. data/packaging/rpm/internal/get_distro_id +0 -10
  147. data/packaging/rpm/internal/git_update +0 -27
  148. data/packaging/rpm/internal/inituidgid +0 -17
  149. data/packaging/rpm/internal/my_init +0 -344
  150. data/packaging/rpm/internal/python27 +0 -3
  151. data/packaging/rpm/internal/repo_update +0 -46
  152. data/packaging/rpm/internal/setuser +0 -26
  153. data/packaging/rpm/internal/tracking_helper +0 -40
  154. data/packaging/rpm/jenkins_release +0 -99
  155. data/packaging/rpm/lib/build_tasks_support.rb +0 -402
  156. data/packaging/rpm/lib/preprocessor.rb +0 -341
  157. data/packaging/rpm/nginx_spec/404.html +0 -119
  158. data/packaging/rpm/nginx_spec/50x.html +0 -119
  159. data/packaging/rpm/nginx_spec/index.html +0 -116
  160. data/packaging/rpm/nginx_spec/nginx-auto-cc-gcc.patch +0 -13
  161. data/packaging/rpm/nginx_spec/nginx-logo.png +0 -0
  162. data/packaging/rpm/nginx_spec/nginx-upgrade +0 -13
  163. data/packaging/rpm/nginx_spec/nginx-upgrade.8 +0 -151
  164. data/packaging/rpm/nginx_spec/nginx.conf +0 -131
  165. data/packaging/rpm/nginx_spec/nginx.init +0 -144
  166. data/packaging/rpm/nginx_spec/nginx.logrotate +0 -13
  167. data/packaging/rpm/nginx_spec/nginx.service +0 -15
  168. data/packaging/rpm/nginx_spec/nginx.spec.template +0 -560
  169. data/packaging/rpm/nginx_spec/nginx.sysconfig +0 -4
  170. data/packaging/rpm/nginx_spec/passenger.conf +0 -9
  171. data/packaging/rpm/nginx_spec/poweredby.png +0 -0
  172. data/packaging/rpm/passenger_spec/apache-passenger.conf.in +0 -26
  173. data/packaging/rpm/passenger_spec/config.json +0 -30
  174. data/packaging/rpm/passenger_spec/passenger.logrotate +0 -7
  175. data/packaging/rpm/passenger_spec/passenger.spec.template +0 -478
  176. data/packaging/rpm/passenger_spec/passenger_dynamic_thread_group.patch +0 -16
  177. data/packaging/rpm/passenger_spec/passenger_tests_default_config_example.patch +0 -44
  178. data/packaging/rpm/passenger_spec/rubygem-passenger-4.0.18-GLIBC_HAVE_LONG_LONG.patch +0 -21
  179. data/packaging/rpm/repo_update +0 -114
  180. data/packaging/rpm/setup-system +0 -61
  181. data/packaging/rpm/shell +0 -10
  182. data/test/.rspec +0 -4
  183. data/test/config.json.example +0 -42
  184. data/test/config.json.rpm-automation +0 -15
  185. data/test/config.json.travis +0 -15
  186. data/test/config.json.vagrant +0 -30
  187. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +0 -124
  188. data/test/cxx/ApplicationPool2/OptionsTest.cpp +0 -30
  189. data/test/cxx/ApplicationPool2/PoolTest.cpp +0 -2062
  190. data/test/cxx/ApplicationPool2/ProcessTest.cpp +0 -130
  191. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +0 -243
  192. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +0 -823
  193. data/test/cxx/BufferedIOTest.cpp +0 -364
  194. data/test/cxx/CachedFileStatTest.cpp +0 -402
  195. data/test/cxx/CxxTestMain.cpp +0 -181
  196. data/test/cxx/DataStructures/LStringTest.cpp +0 -275
  197. data/test/cxx/DataStructures/StringKeyTableTest.cpp +0 -199
  198. data/test/cxx/DateParsingTest.cpp +0 -75
  199. data/test/cxx/DechunkerTest.cpp +0 -250
  200. data/test/cxx/EventedBufferedInputTest.cpp +0 -758
  201. data/test/cxx/EventedClientTest.cpp +0 -523
  202. data/test/cxx/FileChangeCheckerTest.cpp +0 -331
  203. data/test/cxx/FileDescriptorTest.cpp +0 -69
  204. data/test/cxx/FilterSupportTest.cpp +0 -433
  205. data/test/cxx/IOUtilsTest.cpp +0 -861
  206. data/test/cxx/MemoryKit/MbufTest.cpp +0 -213
  207. data/test/cxx/MessageIOTest.cpp +0 -360
  208. data/test/cxx/MessagePassingTest.cpp +0 -81
  209. data/test/cxx/MessageReadersWritersTest.cpp +0 -576
  210. data/test/cxx/MessageServerTest.cpp +0 -393
  211. data/test/cxx/ProcessMetricsCollectorTest.cpp +0 -123
  212. data/test/cxx/RequestHandlerTest.cpp +0 -1463
  213. data/test/cxx/ResponseCacheTest.cpp +0 -322
  214. data/test/cxx/ServerKit/ChannelTest.cpp +0 -1467
  215. data/test/cxx/ServerKit/CookieUtilsTest.cpp +0 -274
  216. data/test/cxx/ServerKit/FileBufferedChannelTest.cpp +0 -992
  217. data/test/cxx/ServerKit/HeaderTableTest.cpp +0 -177
  218. data/test/cxx/ServerKit/HttpServerTest.cpp +0 -1580
  219. data/test/cxx/ServerKit/ServerTest.cpp +0 -408
  220. data/test/cxx/StaticStringTest.cpp +0 -220
  221. data/test/cxx/StringMapTest.cpp +0 -131
  222. data/test/cxx/SystemTimeTest.cpp +0 -37
  223. data/test/cxx/TemplateTest.cpp +0 -118
  224. data/test/cxx/TestSupport.cpp +0 -207
  225. data/test/cxx/TestSupport.h +0 -333
  226. data/test/cxx/UnionStationTest.cpp +0 -741
  227. data/test/cxx/Utils/StrIntUtilsTest.cpp +0 -39
  228. data/test/cxx/UtilsTest.cpp +0 -672
  229. data/test/cxx/VariantMapTest.cpp +0 -191
  230. data/test/gdbinit.example +0 -34
  231. data/test/integration_tests/apache2_tests.rb +0 -585
  232. data/test/integration_tests/downloaded_binaries_tests.rb +0 -185
  233. data/test/integration_tests/native_packaging_spec.rb +0 -368
  234. data/test/integration_tests/nginx_tests.rb +0 -402
  235. data/test/integration_tests/shared/example_webapp_tests.rb +0 -289
  236. data/test/integration_tests/source_packaging_test.rb +0 -201
  237. data/test/integration_tests/spec_helper.rb +0 -22
  238. data/test/integration_tests/standalone_tests.rb +0 -392
  239. data/test/node/line_reader_spec.js +0 -338
  240. data/test/node/spec_helper.js +0 -65
  241. data/test/oxt/backtrace_test.cpp +0 -88
  242. data/test/oxt/counter.hpp +0 -55
  243. data/test/oxt/dynamic_thread_group_test.cpp +0 -131
  244. data/test/oxt/oxt_test_main.cpp +0 -27
  245. data/test/oxt/spin_lock_test.cpp +0 -59
  246. data/test/oxt/syscall_interruption_test.cpp +0 -39
  247. data/test/ruby/debug_logging_spec.rb +0 -145
  248. data/test/ruby/message_channel_spec.rb +0 -196
  249. data/test/ruby/rack/loader_spec.rb +0 -42
  250. data/test/ruby/rack/preloader_spec.rb +0 -48
  251. data/test/ruby/rails3.0/loader_spec.rb +0 -26
  252. data/test/ruby/rails3.0/preloader_spec.rb +0 -32
  253. data/test/ruby/rails3.1/loader_spec.rb +0 -26
  254. data/test/ruby/rails3.1/preloader_spec.rb +0 -32
  255. data/test/ruby/rails3.2/loader_spec.rb +0 -26
  256. data/test/ruby/rails3.2/preloader_spec.rb +0 -32
  257. data/test/ruby/rails4.0/loader_spec.rb +0 -28
  258. data/test/ruby/rails4.0/preloader_spec.rb +0 -34
  259. data/test/ruby/rails4.1/loader_spec.rb +0 -28
  260. data/test/ruby/rails4.1/preloader_spec.rb +0 -34
  261. data/test/ruby/request_handler_spec.rb +0 -747
  262. data/test/ruby/shared/loader_sharedspec.rb +0 -247
  263. data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +0 -357
  264. data/test/ruby/shared/ruby_loader_sharedspec.rb +0 -55
  265. data/test/ruby/spec_helper.rb +0 -114
  266. data/test/ruby/standalone/runtime_installer_spec.rb +0 -402
  267. data/test/ruby/union_station_spec.rb +0 -288
  268. data/test/ruby/utils/file_system_watcher_spec.rb +0 -229
  269. data/test/ruby/utils/hosts_file_parser.rb +0 -258
  270. data/test/ruby/utils/tee_input_spec.rb +0 -235
  271. data/test/ruby/utils/unseekable_socket_spec.rb +0 -66
  272. data/test/ruby/utils_spec.rb +0 -41
  273. data/test/stub/apache2/httpd.conf.erb +0 -122
  274. data/test/stub/apache2/mime.types +0 -748
  275. data/test/stub/garbage1.dat +0 -0
  276. data/test/stub/garbage2.dat +0 -0
  277. data/test/stub/garbage3.dat +0 -0
  278. data/test/stub/http_request.yml +0 -23
  279. data/test/stub/index.html +0 -1
  280. data/test/stub/nginx/koi-utf +0 -109
  281. data/test/stub/nginx/koi-win +0 -103
  282. data/test/stub/nginx/mime.types +0 -70
  283. data/test/stub/nginx/nginx.conf.erb +0 -70
  284. data/test/stub/nginx/win-utf +0 -126
  285. data/test/stub/node/app.js +0 -133
  286. data/test/stub/node/public/.gitignore +0 -0
  287. data/test/stub/node/tmp/.gitignore +0 -0
  288. data/test/stub/rack/config.ru +0 -95
  289. data/test/stub/rack/library.rb +0 -16
  290. data/test/stub/rack/public/.gitignore +0 -0
  291. data/test/stub/rack/start.rb +0 -52
  292. data/test/stub/rack/tmp/.gitignore +0 -0
  293. data/test/stub/rails3.0/.gitignore +0 -4
  294. data/test/stub/rails3.0/Gemfile +0 -22
  295. data/test/stub/rails3.0/Gemfile.lock +0 -80
  296. data/test/stub/rails3.0/Rakefile +0 -10
  297. data/test/stub/rails3.0/app/controllers/application_controller.rb +0 -4
  298. data/test/stub/rails3.0/app/helpers/application_helper.rb +0 -2
  299. data/test/stub/rails3.0/app/views/layouts/application.html.erb +0 -14
  300. data/test/stub/rails3.0/config.ru +0 -4
  301. data/test/stub/rails3.0/config/application.rb +0 -48
  302. data/test/stub/rails3.0/config/boot.rb +0 -13
  303. data/test/stub/rails3.0/config/database.yml +0 -22
  304. data/test/stub/rails3.0/config/environment.rb +0 -5
  305. data/test/stub/rails3.0/config/environments/development.rb +0 -19
  306. data/test/stub/rails3.0/config/environments/production.rb +0 -48
  307. data/test/stub/rails3.0/config/environments/test.rb +0 -32
  308. data/test/stub/rails3.0/config/initializers/backtrace_silencers.rb +0 -7
  309. data/test/stub/rails3.0/config/initializers/inflections.rb +0 -10
  310. data/test/stub/rails3.0/config/initializers/mime_types.rb +0 -5
  311. data/test/stub/rails3.0/config/initializers/passenger.rb +0 -2
  312. data/test/stub/rails3.0/config/initializers/secret_token.rb +0 -7
  313. data/test/stub/rails3.0/config/initializers/session_store.rb +0 -8
  314. data/test/stub/rails3.0/config/locales/en.yml +0 -5
  315. data/test/stub/rails3.0/config/routes.rb +0 -58
  316. data/test/stub/rails3.0/db/seeds.rb +0 -7
  317. data/test/stub/rails3.0/doc/README_FOR_APP +0 -2
  318. data/test/stub/rails3.0/lib/tasks/.gitkeep +0 -0
  319. data/test/stub/rails3.0/log/.gitignore +0 -0
  320. data/test/stub/rails3.0/public/404.html +0 -26
  321. data/test/stub/rails3.0/public/422.html +0 -26
  322. data/test/stub/rails3.0/public/500.html +0 -26
  323. data/test/stub/rails3.0/public/favicon.ico +0 -0
  324. data/test/stub/rails3.0/public/index.html +0 -279
  325. data/test/stub/rails3.0/public/robots.txt +0 -5
  326. data/test/stub/rails3.0/public/stylesheets/.gitkeep +0 -0
  327. data/test/stub/rails3.0/script/rails +0 -9
  328. data/test/stub/rails3.0/test/performance/browsing_test.rb +0 -9
  329. data/test/stub/rails3.0/test/test_helper.rb +0 -13
  330. data/test/stub/rails3.0/vendor/plugins/.gitkeep +0 -0
  331. data/test/stub/rails3.1/.gitignore +0 -15
  332. data/test/stub/rails3.1/Gemfile +0 -37
  333. data/test/stub/rails3.1/Gemfile.lock +0 -115
  334. data/test/stub/rails3.1/README +0 -261
  335. data/test/stub/rails3.1/Rakefile +0 -7
  336. data/test/stub/rails3.1/app/assets/images/rails.png +0 -0
  337. data/test/stub/rails3.1/app/assets/stylesheets/application.css +0 -7
  338. data/test/stub/rails3.1/app/controllers/application_controller.rb +0 -3
  339. data/test/stub/rails3.1/app/helpers/application_helper.rb +0 -2
  340. data/test/stub/rails3.1/app/mailers/.gitkeep +0 -0
  341. data/test/stub/rails3.1/app/models/.gitkeep +0 -0
  342. data/test/stub/rails3.1/app/views/layouts/application.html.erb +0 -14
  343. data/test/stub/rails3.1/config.ru +0 -4
  344. data/test/stub/rails3.1/config/application.rb +0 -48
  345. data/test/stub/rails3.1/config/boot.rb +0 -6
  346. data/test/stub/rails3.1/config/database.yml +0 -25
  347. data/test/stub/rails3.1/config/environment.rb +0 -5
  348. data/test/stub/rails3.1/config/environments/development.rb +0 -30
  349. data/test/stub/rails3.1/config/environments/production.rb +0 -60
  350. data/test/stub/rails3.1/config/environments/test.rb +0 -39
  351. data/test/stub/rails3.1/config/initializers/backtrace_silencers.rb +0 -7
  352. data/test/stub/rails3.1/config/initializers/inflections.rb +0 -10
  353. data/test/stub/rails3.1/config/initializers/mime_types.rb +0 -5
  354. data/test/stub/rails3.1/config/initializers/passenger.rb +0 -2
  355. data/test/stub/rails3.1/config/initializers/secret_token.rb +0 -7
  356. data/test/stub/rails3.1/config/initializers/session_store.rb +0 -8
  357. data/test/stub/rails3.1/config/initializers/wrap_parameters.rb +0 -14
  358. data/test/stub/rails3.1/config/locales/en.yml +0 -5
  359. data/test/stub/rails3.1/config/routes.rb +0 -58
  360. data/test/stub/rails3.1/db/seeds.rb +0 -7
  361. data/test/stub/rails3.1/doc/README_FOR_APP +0 -2
  362. data/test/stub/rails3.1/lib/assets/.gitkeep +0 -0
  363. data/test/stub/rails3.1/lib/tasks/.gitkeep +0 -0
  364. data/test/stub/rails3.1/log/.gitkeep +0 -0
  365. data/test/stub/rails3.1/public/404.html +0 -26
  366. data/test/stub/rails3.1/public/422.html +0 -26
  367. data/test/stub/rails3.1/public/500.html +0 -26
  368. data/test/stub/rails3.1/public/favicon.ico +0 -0
  369. data/test/stub/rails3.1/public/index.html +0 -241
  370. data/test/stub/rails3.1/public/robots.txt +0 -5
  371. data/test/stub/rails3.1/script/rails +0 -6
  372. data/test/stub/rails3.1/test/fixtures/.gitkeep +0 -0
  373. data/test/stub/rails3.1/test/functional/.gitkeep +0 -0
  374. data/test/stub/rails3.1/test/integration/.gitkeep +0 -0
  375. data/test/stub/rails3.1/test/performance/browsing_test.rb +0 -12
  376. data/test/stub/rails3.1/test/test_helper.rb +0 -13
  377. data/test/stub/rails3.1/test/unit/.gitkeep +0 -0
  378. data/test/stub/rails3.1/vendor/assets/stylesheets/.gitkeep +0 -0
  379. data/test/stub/rails3.1/vendor/plugins/.gitkeep +0 -0
  380. data/test/stub/rails3.2/.gitignore +0 -15
  381. data/test/stub/rails3.2/Gemfile +0 -39
  382. data/test/stub/rails3.2/Gemfile.lock +0 -113
  383. data/test/stub/rails3.2/Rakefile +0 -7
  384. data/test/stub/rails3.2/app/assets/images/rails.png +0 -0
  385. data/test/stub/rails3.2/app/assets/stylesheets/application.css +0 -13
  386. data/test/stub/rails3.2/app/controllers/application_controller.rb +0 -3
  387. data/test/stub/rails3.2/app/helpers/application_helper.rb +0 -2
  388. data/test/stub/rails3.2/app/mailers/.gitkeep +0 -0
  389. data/test/stub/rails3.2/app/models/.gitkeep +0 -0
  390. data/test/stub/rails3.2/app/views/layouts/application.html.erb +0 -14
  391. data/test/stub/rails3.2/config.ru +0 -4
  392. data/test/stub/rails3.2/config/application.rb +0 -62
  393. data/test/stub/rails3.2/config/boot.rb +0 -6
  394. data/test/stub/rails3.2/config/database.yml +0 -25
  395. data/test/stub/rails3.2/config/environment.rb +0 -5
  396. data/test/stub/rails3.2/config/environments/development.rb +0 -37
  397. data/test/stub/rails3.2/config/environments/production.rb +0 -67
  398. data/test/stub/rails3.2/config/environments/test.rb +0 -37
  399. data/test/stub/rails3.2/config/initializers/backtrace_silencers.rb +0 -7
  400. data/test/stub/rails3.2/config/initializers/inflections.rb +0 -15
  401. data/test/stub/rails3.2/config/initializers/mime_types.rb +0 -5
  402. data/test/stub/rails3.2/config/initializers/passenger.rb +0 -2
  403. data/test/stub/rails3.2/config/initializers/secret_token.rb +0 -7
  404. data/test/stub/rails3.2/config/initializers/session_store.rb +0 -8
  405. data/test/stub/rails3.2/config/initializers/wrap_parameters.rb +0 -14
  406. data/test/stub/rails3.2/config/locales/en.yml +0 -5
  407. data/test/stub/rails3.2/config/routes.rb +0 -58
  408. data/test/stub/rails3.2/db/seeds.rb +0 -7
  409. data/test/stub/rails3.2/doc/README_FOR_APP +0 -2
  410. data/test/stub/rails3.2/lib/assets/.gitkeep +0 -0
  411. data/test/stub/rails3.2/lib/tasks/.gitkeep +0 -0
  412. data/test/stub/rails3.2/log/.gitkeep +0 -0
  413. data/test/stub/rails3.2/public/404.html +0 -26
  414. data/test/stub/rails3.2/public/422.html +0 -26
  415. data/test/stub/rails3.2/public/500.html +0 -25
  416. data/test/stub/rails3.2/public/favicon.ico +0 -0
  417. data/test/stub/rails3.2/public/index.html +0 -241
  418. data/test/stub/rails3.2/public/robots.txt +0 -5
  419. data/test/stub/rails3.2/script/rails +0 -6
  420. data/test/stub/rails3.2/test/fixtures/.gitkeep +0 -0
  421. data/test/stub/rails3.2/test/functional/.gitkeep +0 -0
  422. data/test/stub/rails3.2/test/integration/.gitkeep +0 -0
  423. data/test/stub/rails3.2/test/performance/browsing_test.rb +0 -12
  424. data/test/stub/rails3.2/test/test_helper.rb +0 -13
  425. data/test/stub/rails3.2/test/unit/.gitkeep +0 -0
  426. data/test/stub/rails3.2/vendor/assets/stylesheets/.gitkeep +0 -0
  427. data/test/stub/rails3.2/vendor/plugins/.gitkeep +0 -0
  428. data/test/stub/rails4.0/.gitignore +0 -16
  429. data/test/stub/rails4.0/Gemfile +0 -45
  430. data/test/stub/rails4.0/Gemfile.lock +0 -126
  431. data/test/stub/rails4.0/README.rdoc +0 -28
  432. data/test/stub/rails4.0/Rakefile +0 -6
  433. data/test/stub/rails4.0/app/assets/images/.keep +0 -0
  434. data/test/stub/rails4.0/app/assets/javascripts/application.js +0 -16
  435. data/test/stub/rails4.0/app/assets/stylesheets/application.css +0 -13
  436. data/test/stub/rails4.0/app/controllers/application_controller.rb +0 -5
  437. data/test/stub/rails4.0/app/controllers/concerns/.keep +0 -0
  438. data/test/stub/rails4.0/app/helpers/application_helper.rb +0 -2
  439. data/test/stub/rails4.0/app/mailers/.keep +0 -0
  440. data/test/stub/rails4.0/app/models/.keep +0 -0
  441. data/test/stub/rails4.0/app/models/concerns/.keep +0 -0
  442. data/test/stub/rails4.0/app/views/layouts/application.html.erb +0 -14
  443. data/test/stub/rails4.0/bin/bundle +0 -3
  444. data/test/stub/rails4.0/bin/rails +0 -4
  445. data/test/stub/rails4.0/bin/rake +0 -4
  446. data/test/stub/rails4.0/config.ru +0 -4
  447. data/test/stub/rails4.0/config/application.rb +0 -23
  448. data/test/stub/rails4.0/config/boot.rb +0 -4
  449. data/test/stub/rails4.0/config/database.yml +0 -25
  450. data/test/stub/rails4.0/config/environment.rb +0 -5
  451. data/test/stub/rails4.0/config/environments/development.rb +0 -29
  452. data/test/stub/rails4.0/config/environments/production.rb +0 -80
  453. data/test/stub/rails4.0/config/environments/test.rb +0 -36
  454. data/test/stub/rails4.0/config/initializers/backtrace_silencers.rb +0 -7
  455. data/test/stub/rails4.0/config/initializers/filter_parameter_logging.rb +0 -4
  456. data/test/stub/rails4.0/config/initializers/inflections.rb +0 -16
  457. data/test/stub/rails4.0/config/initializers/mime_types.rb +0 -5
  458. data/test/stub/rails4.0/config/initializers/passenger.rb +0 -2
  459. data/test/stub/rails4.0/config/initializers/secret_token.rb +0 -12
  460. data/test/stub/rails4.0/config/initializers/session_store.rb +0 -3
  461. data/test/stub/rails4.0/config/initializers/wrap_parameters.rb +0 -14
  462. data/test/stub/rails4.0/config/locales/en.yml +0 -23
  463. data/test/stub/rails4.0/config/routes.rb +0 -57
  464. data/test/stub/rails4.0/db/seeds.rb +0 -7
  465. data/test/stub/rails4.0/lib/assets/.keep +0 -0
  466. data/test/stub/rails4.0/lib/tasks/.keep +0 -0
  467. data/test/stub/rails4.0/log/.keep +0 -0
  468. data/test/stub/rails4.0/public/404.html +0 -58
  469. data/test/stub/rails4.0/public/422.html +0 -58
  470. data/test/stub/rails4.0/public/500.html +0 -57
  471. data/test/stub/rails4.0/public/favicon.ico +0 -0
  472. data/test/stub/rails4.0/public/robots.txt +0 -5
  473. data/test/stub/rails4.0/test/controllers/.keep +0 -0
  474. data/test/stub/rails4.0/test/fixtures/.keep +0 -0
  475. data/test/stub/rails4.0/test/helpers/.keep +0 -0
  476. data/test/stub/rails4.0/test/integration/.keep +0 -0
  477. data/test/stub/rails4.0/test/mailers/.keep +0 -0
  478. data/test/stub/rails4.0/test/models/.keep +0 -0
  479. data/test/stub/rails4.0/test/test_helper.rb +0 -15
  480. data/test/stub/rails4.0/vendor/assets/javascripts/.keep +0 -0
  481. data/test/stub/rails4.0/vendor/assets/stylesheets/.keep +0 -0
  482. data/test/stub/rails4.1/.gitignore +0 -16
  483. data/test/stub/rails4.1/Gemfile +0 -45
  484. data/test/stub/rails4.1/Gemfile.lock +0 -129
  485. data/test/stub/rails4.1/README.rdoc +0 -28
  486. data/test/stub/rails4.1/Rakefile +0 -6
  487. data/test/stub/rails4.1/app/assets/images/.keep +0 -0
  488. data/test/stub/rails4.1/app/assets/javascripts/application.js +0 -16
  489. data/test/stub/rails4.1/app/assets/stylesheets/application.css +0 -13
  490. data/test/stub/rails4.1/app/controllers/application_controller.rb +0 -5
  491. data/test/stub/rails4.1/app/controllers/concerns/.keep +0 -0
  492. data/test/stub/rails4.1/app/helpers/application_helper.rb +0 -2
  493. data/test/stub/rails4.1/app/mailers/.keep +0 -0
  494. data/test/stub/rails4.1/app/models/.keep +0 -0
  495. data/test/stub/rails4.1/app/models/concerns/.keep +0 -0
  496. data/test/stub/rails4.1/app/views/layouts/application.html.erb +0 -14
  497. data/test/stub/rails4.1/bin/bundle +0 -3
  498. data/test/stub/rails4.1/bin/rails +0 -4
  499. data/test/stub/rails4.1/bin/rake +0 -4
  500. data/test/stub/rails4.1/config.ru +0 -4
  501. data/test/stub/rails4.1/config/application.rb +0 -23
  502. data/test/stub/rails4.1/config/boot.rb +0 -4
  503. data/test/stub/rails4.1/config/database.yml +0 -25
  504. data/test/stub/rails4.1/config/environment.rb +0 -5
  505. data/test/stub/rails4.1/config/environments/development.rb +0 -29
  506. data/test/stub/rails4.1/config/environments/production.rb +0 -80
  507. data/test/stub/rails4.1/config/environments/test.rb +0 -36
  508. data/test/stub/rails4.1/config/initializers/backtrace_silencers.rb +0 -7
  509. data/test/stub/rails4.1/config/initializers/filter_parameter_logging.rb +0 -4
  510. data/test/stub/rails4.1/config/initializers/inflections.rb +0 -16
  511. data/test/stub/rails4.1/config/initializers/mime_types.rb +0 -5
  512. data/test/stub/rails4.1/config/initializers/passenger.rb +0 -5
  513. data/test/stub/rails4.1/config/initializers/secret_token.rb +0 -12
  514. data/test/stub/rails4.1/config/initializers/session_store.rb +0 -3
  515. data/test/stub/rails4.1/config/initializers/wrap_parameters.rb +0 -14
  516. data/test/stub/rails4.1/config/locales/en.yml +0 -23
  517. data/test/stub/rails4.1/config/routes.rb +0 -57
  518. data/test/stub/rails4.1/db/seeds.rb +0 -7
  519. data/test/stub/rails4.1/lib/assets/.keep +0 -0
  520. data/test/stub/rails4.1/lib/tasks/.keep +0 -0
  521. data/test/stub/rails4.1/log/.keep +0 -0
  522. data/test/stub/rails4.1/public/404.html +0 -58
  523. data/test/stub/rails4.1/public/422.html +0 -58
  524. data/test/stub/rails4.1/public/500.html +0 -57
  525. data/test/stub/rails4.1/public/favicon.ico +0 -0
  526. data/test/stub/rails4.1/public/robots.txt +0 -5
  527. data/test/stub/rails4.1/test/controllers/.keep +0 -0
  528. data/test/stub/rails4.1/test/fixtures/.keep +0 -0
  529. data/test/stub/rails4.1/test/helpers/.keep +0 -0
  530. data/test/stub/rails4.1/test/integration/.keep +0 -0
  531. data/test/stub/rails4.1/test/mailers/.keep +0 -0
  532. data/test/stub/rails4.1/test/models/.keep +0 -0
  533. data/test/stub/rails4.1/test/test_helper.rb +0 -15
  534. data/test/stub/rails4.1/vendor/assets/javascripts/.keep +0 -0
  535. data/test/stub/rails4.1/vendor/assets/stylesheets/.keep +0 -0
  536. data/test/stub/start_error.pl +0 -24
  537. data/test/stub/upload_data.txt +0 -494
  538. data/test/stub/wsgi/passenger_wsgi.py +0 -212
  539. data/test/stub/wsgi/public/.gitignore +0 -0
  540. data/test/stub/wsgi/tmp/.gitignore +0 -0
  541. data/test/support/allocate_memory.c +0 -14
  542. data/test/support/apache2_controller.rb +0 -258
  543. data/test/support/multipart.rb +0 -62
  544. data/test/support/nginx_controller.rb +0 -97
  545. data/test/support/placebo-preloader.rb +0 -88
  546. data/test/support/test_helper.rb +0 -455
  547. data/test/support/valgrind.h +0 -2539
  548. data/test/tut/tut.h +0 -1310
  549. data/test/tut/tut_reporter.h +0 -256
  550. data/test/valgrind-osx.supp +0 -7
@@ -1,191 +0,0 @@
1
- #include "TestSupport.h"
2
- #include "Utils/VariantMap.h"
3
-
4
- using namespace Passenger;
5
-
6
- namespace tut {
7
- struct VariantMapTest {
8
- VariantMap map;
9
- };
10
-
11
- DEFINE_TEST_GROUP(VariantMapTest);
12
-
13
- TEST_METHOD(1) {
14
- // Test empty map.
15
- ensure_equals(map.size(), 0u);
16
- ensure(!map.has("hello"));
17
- ensure(!map.has("foo"));
18
- }
19
-
20
- TEST_METHOD(2) {
21
- // Test setting and getting string values.
22
- map.set("hello", "world");
23
- map.set("abcd", "efgh");
24
- map.set("", "bar");
25
- ensure_equals("(1)", map.get("hello"), "world");
26
- ensure_equals("(2)", map.get("abcd"), "efgh");
27
- ensure_equals("(3)", map.get(""), "bar");
28
- ensure_equals("(4)", map.size(), 3u);
29
- ensure("(5)", map.has("hello"));
30
- ensure("(6)", map.has("abcd"));
31
- ensure("(7)", map.has(""));
32
- ensure("(8)", !map.has("xyz"));
33
- }
34
-
35
- TEST_METHOD(3) {
36
- // Test setting and getting non-string values.
37
- map.set("str", "1234");
38
- map.setInt("int", 5678);
39
- map.setULL("ull", 18446744073709551615ull);
40
- map.setPid("pid", 47326);
41
- map.setUid("uid", (uid_t) 500);
42
- map.setGid("gid", (gid_t) 510);
43
- map.setUid("negative_uid", (uid_t) -1);
44
- map.setGid("negative_gid", (gid_t) -2);
45
- map.setBool("true", true);
46
- map.setBool("false", false);
47
- ensure_equals(map.size(), 10u);
48
- ensure(map.has("str"));
49
- ensure(map.has("int"));
50
- ensure(map.has("ull"));
51
- ensure(map.has("pid"));
52
- ensure(map.has("uid"));
53
- ensure(map.has("gid"));
54
- ensure(map.has("negative_uid"));
55
- ensure(map.has("negative_gid"));
56
- ensure(map.has("true"));
57
- ensure(map.has("false"));
58
- ensure(!map.has("foo"));
59
-
60
- ensure_equals(map.get("str"), "1234");
61
- ensure_equals(map.get("int"), "5678");
62
- ensure_equals(map.get("ull"), "18446744073709551615");
63
- ensure_equals(map.get("pid"), "47326");
64
- ensure_equals(map.get("uid"), "500");
65
- ensure_equals(map.get("gid"), "510");
66
- // No idea how negative_uid and negative_gid are casted to string;
67
- // depends on whether the platform defines them as signed or unsigned.
68
- ensure_equals(map.get("true"), "true");
69
- ensure_equals(map.get("false"), "false");
70
-
71
- ensure_equals(map.getInt("str"), 1234);
72
- ensure_equals(map.getInt("int"), 5678);
73
- ensure_equals(map.getInt("pid"), 47326);
74
- ensure_equals(map.getInt("uid"), 500);
75
- ensure_equals(map.getInt("gid"), 510);
76
- if (sizeof(uid_t) == sizeof(int)) {
77
- ensure_equals(map.getInt("negative_uid"), -1);
78
- }
79
- if (sizeof(gid_t) == sizeof(int)) {
80
- ensure_equals(map.getInt("negative_gid"), -2);
81
- }
82
-
83
- ensure_equals(map.getULL("ull"), 18446744073709551615ull);
84
- ensure_equals(map.getPid("pid"), (pid_t) 47326);
85
- ensure_equals(map.getUid("uid"), (uid_t) 500);
86
- ensure_equals(map.getGid("gid"), (gid_t) 510);
87
- ensure_equals(map.getUid("negative_uid"), (uid_t) -1);
88
- ensure_equals(map.getGid("negative_gid"), (gid_t) -2);
89
- ensure_equals(map.getBool("true"), true);
90
- ensure_equals(map.getBool("false"), false);
91
- }
92
-
93
- TEST_METHOD(4) {
94
- // get() throws MissingKeyException if the key doesn't
95
- // exist and 'required' is true (which it is by default).
96
- try {
97
- map.get("str");
98
- fail("MissingKeyException expected (str)");
99
- } catch (const VariantMap::MissingKeyException &e) {
100
- ensure_equals(e.getKey(), "str");
101
- }
102
-
103
- try {
104
- map.getInt("int");
105
- fail("MissingKeyException expected (int)");
106
- } catch (const VariantMap::MissingKeyException &e) {
107
- ensure_equals(e.getKey(), "int");
108
- }
109
-
110
- try {
111
- map.getULL("ull");
112
- fail("MissingKeyException expected (ull)");
113
- } catch (const VariantMap::MissingKeyException &e) {
114
- ensure_equals(e.getKey(), "ull");
115
- }
116
-
117
- try {
118
- map.getPid("pid");
119
- fail("MissingKeyException expected (pid)");
120
- } catch (const VariantMap::MissingKeyException &e) {
121
- ensure_equals(e.getKey(), "pid");
122
- }
123
-
124
- try {
125
- map.getUid("uid");
126
- fail("MissingKeyException expected (uid)");
127
- } catch (const VariantMap::MissingKeyException &e) {
128
- ensure_equals(e.getKey(), "uid");
129
- }
130
-
131
- try {
132
- map.getGid("gid");
133
- fail("MissingKeyException expected (gid)");
134
- } catch (const VariantMap::MissingKeyException &e) {
135
- ensure_equals(e.getKey(), "gid");
136
- }
137
-
138
- try {
139
- map.getBool("bool");
140
- fail("MissingKeyException expected (bool)");
141
- } catch (const VariantMap::MissingKeyException &e) {
142
- ensure_equals(e.getKey(), "bool");
143
- }
144
- }
145
-
146
- TEST_METHOD(5) {
147
- // get() returns the default value if 'required' is false.
148
- ensure_equals(map.get("foo", false, "1234"), "1234");
149
- ensure_equals(map.getInt("foo", false, 1234), 1234);
150
- ensure_equals(map.getULL("foo", false, 18446744073709551615ull), 18446744073709551615ull);
151
- ensure_equals(map.getPid("foo", false, 1234), (pid_t) 1234);
152
- ensure_equals(map.getUid("foo", false, 1234), (gid_t) 1234);
153
- ensure_equals(map.getGid("foo", false, 1234), (uid_t) 1234);
154
- ensure_equals(map.getBool("foo", false, true), true);
155
- ensure_equals(map.getBool("foo", false, false), false);
156
- }
157
-
158
- TEST_METHOD(6) {
159
- // Test populating from array.
160
- const char *ary[] = {
161
- "foo", "1234",
162
- "bar", "5678"
163
- };
164
-
165
- try {
166
- map.readFrom(ary, 3);
167
- fail("ArgumentException expected");
168
- } catch (const ArgumentException &) {
169
- // Pass.
170
- }
171
-
172
- map.readFrom(ary, 4);
173
- ensure_equals(map.get("foo"), "1234");
174
- ensure_equals(map.get("bar"), "5678");
175
- }
176
-
177
- TEST_METHOD(7) {
178
- // Setting an empty value result in the deletion of the key.
179
- map.set("a", "a");
180
- map.set("b", "b");
181
- map.set("b", "");
182
- try {
183
- map.get("b");
184
- fail("MissingKeyException expected");
185
- } catch (const VariantMap::MissingKeyException &e) {
186
- // Pass.
187
- }
188
- ensure(!map.has("foo"));
189
- ensure_equals(map.size(), 1u);
190
- }
191
- }
@@ -1,34 +0,0 @@
1
- # This is a sample .gdbinit file that can aid you in debugging
2
- # Phusion Passenger with GDB. Modify it to your liking and copy
3
- # it to test/.gdbinit. See also CONTRIBUTING.md.
4
-
5
- # Ignore some signals.
6
- handle SIGUSR1 noprint pass
7
- handle SIGPIPE noprint pass
8
-
9
- # Use Intel syntax for disassembles.
10
- set disassembly-flavor intel
11
-
12
- # Convenience command.
13
- define rake
14
- shell rake $arg0
15
- end
16
-
17
- # Break on breakpoint() function.
18
- break Passenger::breakpoint
19
-
20
- # Linux-only. Comment out when not on Linux.
21
- set print thread-events off
22
-
23
- # On OS X, you may sometimes want to enable memory debugger libraries.
24
- #set env DYLD_INSERT_LIBRARIES /usr/lib/libgmalloc.dylib
25
- #set env MALLOC_FILL_SPACE YES
26
- #set env MALLOC_PROTECT_BEFORE YES
27
- #set env MallocStackLogging YES
28
- #set env MallocGuardEdges YES
29
- #set env MallocScribble YES
30
- #set env MallocPreScribble YES
31
- #set env MallocCheckHeapStart 10
32
- #set env MallocCheckHeapEach 1
33
- #set env MallocCheckHeapAbort YES
34
- #set env MallocBadFreeAbort YES
@@ -1,585 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
2
- require 'socket'
3
- require 'fileutils'
4
- require 'net/http'
5
- require 'rexml/document'
6
- require 'support/apache2_controller'
7
- PhusionPassenger.require_passenger_lib 'platform_info'
8
- PhusionPassenger.require_passenger_lib 'admin_tools'
9
- PhusionPassenger.require_passenger_lib 'admin_tools/instance_registry'
10
-
11
- WEB_SERVER_DECHUNKS_REQUESTS = false
12
-
13
- require 'integration_tests/shared/example_webapp_tests'
14
-
15
- # TODO: test the 'PassengerUserSwitching' and 'PassengerDefaultUser' option.
16
- # TODO: test custom page caching directory
17
-
18
- describe "Apache 2 module" do
19
- before :all do
20
- check_hosts_configuration
21
- @passenger_temp_dir = "/tmp/passenger-test.#{$$}"
22
- Dir.mkdir(@passenger_temp_dir)
23
- FileUtils.chmod_R(0777, @passenger_temp_dir)
24
- ENV['TMPDIR'] = @passenger_temp_dir
25
- end
26
-
27
- after :all do
28
- @apache2.stop if @apache2
29
- FileUtils.chmod_R(0777, @passenger_temp_dir)
30
- FileUtils.rm_rf(@passenger_temp_dir)
31
- end
32
-
33
- before :each do
34
- File.open("test.log", "a") do |f|
35
- # Make sure that all Apache log output is prepended by the test description
36
- # so that we know which messages are associated with which tests.
37
- f.puts "\n#### #{Time.now}: #{example.full_description}"
38
- @test_log_pos = f.pos
39
- end
40
- end
41
-
42
- after :each do
43
- log "End of test"
44
- if example.exception
45
- puts "\t---------------- Begin logs -------------------"
46
- File.open("test.log", "r") do |f|
47
- f.seek(@test_log_pos)
48
- puts f.read.split("\n").map{ |line| "\t#{line}" }.join("\n")
49
- end
50
- puts "\t---------------- End logs -------------------"
51
- puts "\tThe following test failed. The web server logs are printed above."
52
- end
53
- end
54
-
55
- def create_apache2_controller
56
- @apache2 = Apache2Controller.new
57
- @apache2.set(:passenger_temp_dir => @passenger_temp_dir)
58
- if Process.uid == 0
59
- @apache2.set(
60
- :www_user => CONFIG['normal_user_1'],
61
- :www_group => Etc.getgrgid(Etc.getpwnam(CONFIG['normal_user_1']).gid).name
62
- )
63
- end
64
- end
65
-
66
- def log(message)
67
- File.open("test.log", "a") do |f|
68
- f.puts "[#{Time.now}] Spec: #{message}"
69
- end
70
- end
71
-
72
- describe "a Ruby app running on the root URI" do
73
- before :all do
74
- create_apache2_controller
75
- @server = "http://1.passenger.test:#{@apache2.port}"
76
- @stub = RackStub.new('rack')
77
- @apache2 << "PassengerMaxPoolSize 1"
78
- @apache2.set_vhost("1.passenger.test", "#{@stub.full_app_root}/public")
79
- @apache2.start
80
- end
81
-
82
- after :all do
83
- @stub.destroy
84
- @apache2.stop if @apache2
85
- end
86
-
87
- before :each do
88
- @stub.reset
89
- end
90
-
91
- it_should_behave_like "an example web app"
92
- end
93
-
94
- describe "a Ruby app running in a sub-URI" do
95
- before :all do
96
- create_apache2_controller
97
- @server = "http://1.passenger.test:#{@apache2.port}/subapp"
98
- @stub = RackStub.new('rack')
99
- @apache2 << "PassengerMaxPoolSize 1"
100
- @apache2.set_vhost("1.passenger.test", File.expand_path("stub")) do |vhost|
101
- vhost << %Q{
102
- Alias /subapp #{@stub.full_app_root}/public
103
- <Location /subapp>
104
- PassengerBaseURI /subapp
105
- PassengerAppRoot #{@stub.full_app_root}
106
- </Location>
107
- }
108
- end
109
- @apache2.start
110
- end
111
-
112
- after :all do
113
- @stub.destroy
114
- @apache2.stop if @apache2
115
- end
116
-
117
- before :each do
118
- @stub.reset
119
- end
120
-
121
- it_should_behave_like "an example web app"
122
-
123
- it "does not interfere with the root website" do
124
- @server = "http://1.passenger.test:#{@apache2.port}"
125
- get('/').should == "This is the stub directory."
126
- end
127
- end
128
-
129
- describe "a Python app running on the root URI" do
130
- before :all do
131
- create_apache2_controller
132
- @server = "http://1.passenger.test:#{@apache2.port}"
133
- @stub = PythonStub.new('wsgi')
134
- @apache2 << "PassengerMaxPoolSize 1"
135
- @apache2.set_vhost("1.passenger.test", "#{@stub.full_app_root}/public")
136
- @apache2.start
137
- end
138
-
139
- after :all do
140
- @stub.destroy
141
- @apache2.stop if @apache2
142
- end
143
-
144
- before :each do
145
- @stub.reset
146
- end
147
-
148
- it_should_behave_like "an example web app"
149
- end
150
-
151
- describe "a Python app running in a sub-URI" do
152
- before :all do
153
- create_apache2_controller
154
- @server = "http://1.passenger.test:#{@apache2.port}/subapp"
155
- @stub = PythonStub.new('wsgi')
156
- @apache2 << "PassengerMaxPoolSize 1"
157
- @apache2.set_vhost("1.passenger.test", File.expand_path("stub")) do |vhost|
158
- vhost << %Q{
159
- Alias /subapp #{@stub.full_app_root}/public
160
- <Location /subapp>
161
- PassengerBaseURI /subapp
162
- PassengerAppRoot #{@stub.full_app_root}
163
- </Location>
164
- }
165
- end
166
- @apache2.start
167
- end
168
-
169
- after :all do
170
- @stub.destroy
171
- @apache2.stop if @apache2
172
- end
173
-
174
- before :each do
175
- @stub.reset
176
- end
177
-
178
- it_should_behave_like "an example web app"
179
-
180
- it "does not interfere with the root website" do
181
- @server = "http://1.passenger.test:#{@apache2.port}"
182
- get('/').should == "This is the stub directory."
183
- end
184
- end
185
-
186
- describe "a Node.js app running on the root URI" do
187
- before :all do
188
- create_apache2_controller
189
- @server = "http://1.passenger.test:#{@apache2.port}"
190
- @stub = NodejsStub.new('node')
191
- @apache2 << "PassengerMaxPoolSize 1"
192
- @apache2.set_vhost("1.passenger.test", "#{@stub.full_app_root}/public")
193
- @apache2.start
194
- end
195
-
196
- after :all do
197
- @stub.destroy
198
- @apache2.stop if @apache2
199
- end
200
-
201
- before :each do
202
- @stub.reset
203
- end
204
-
205
- it_should_behave_like "an example web app"
206
- end
207
-
208
- describe "a Node.js app running in a sub-URI" do
209
- before :all do
210
- create_apache2_controller
211
- @server = "http://1.passenger.test:#{@apache2.port}/subapp"
212
- @stub = NodejsStub.new('node')
213
- @apache2 << "PassengerMaxPoolSize 1"
214
- @apache2.set_vhost("1.passenger.test", File.expand_path("stub")) do |vhost|
215
- vhost << %Q{
216
- Alias /subapp #{@stub.full_app_root}/public
217
- <Location /subapp>
218
- PassengerBaseURI /subapp
219
- PassengerAppRoot #{@stub.full_app_root}
220
- </Location>
221
- }
222
- end
223
- @apache2.start
224
- end
225
-
226
- after :all do
227
- @stub.destroy
228
- @apache2.stop if @apache2
229
- end
230
-
231
- before :each do
232
- @stub.reset
233
- end
234
-
235
- it_should_behave_like "an example web app"
236
-
237
- it "does not interfere with the root website" do
238
- @server = "http://1.passenger.test:#{@apache2.port}"
239
- get('/').should == "This is the stub directory."
240
- end
241
- end
242
-
243
- describe "compatibility with other modules" do
244
- before :all do
245
- create_apache2_controller
246
- @apache2 << "PassengerMaxPoolSize 1"
247
- @apache2 << "PassengerStatThrottleRate 0"
248
-
249
- @stub = RackStub.new('rack')
250
- @server = "http://1.passenger.test:#{@apache2.port}"
251
- @apache2.set_vhost("1.passenger.test", "#{@stub.full_app_root}/public") do |vhost|
252
- vhost << "RewriteEngine on"
253
- vhost << "RewriteRule ^/rewritten_frontpage$ / [PT,QSA,L]"
254
- vhost << "RewriteRule ^/rewritten_env$ /env [PT,QSA,L]"
255
- end
256
- @apache2.start
257
- end
258
-
259
- after :all do
260
- @stub.destroy
261
- @apache2.stop if @apache2
262
- end
263
-
264
- before :each do
265
- @stub.reset
266
- end
267
-
268
- it "supports environment variable passing through mod_env" do
269
- File.write("#{@stub.app_root}/public/.htaccess", 'SetEnv FOO "Foo Bar!"')
270
- File.touch("#{@stub.app_root}/tmp/restart.txt", 2) # Activate ENV changes.
271
- get('/system_env').should =~ /^FOO = Foo Bar\!$/
272
- end
273
-
274
- it "supports mod_rewrite in the virtual host block" do
275
- get('/rewritten_frontpage').should == "front page"
276
- cgi_envs = get('/rewritten_env?foo=bar+baz')
277
- cgi_envs.should include("REQUEST_URI = /env?foo=bar+baz\n")
278
- cgi_envs.should include("PATH_INFO = /env\n")
279
- end
280
-
281
- it "supports mod_rewrite in .htaccess" do
282
- File.write("#{@stub.app_root}/public/.htaccess", %Q{
283
- RewriteEngine on
284
- RewriteRule ^htaccess_frontpage$ / [PT,QSA,L]
285
- RewriteRule ^htaccess_env$ env [PT,QSA,L]
286
- })
287
- get('/htaccess_frontpage').should == "front page"
288
- cgi_envs = get('/htaccess_env?foo=bar+baz')
289
- cgi_envs.should include("REQUEST_URI = /env?foo=bar+baz\n")
290
- cgi_envs.should include("PATH_INFO = /env\n")
291
- end
292
- end
293
-
294
- describe "configuration options" do
295
- before :all do
296
- create_apache2_controller
297
- @apache2 << "PassengerMaxPoolSize 3"
298
- @apache2 << "PassengerStatThrottleRate 0"
299
-
300
- @stub = RackStub.new('rack')
301
- @stub_url_root = "http://5.passenger.test:#{@apache2.port}"
302
- @apache2.set_vhost('5.passenger.test', "#{@stub.full_app_root}/public") do |vhost|
303
- vhost << "PassengerBufferUpload off"
304
- vhost << "PassengerFriendlyErrorPages on"
305
- vhost << "AllowEncodedSlashes on"
306
- end
307
-
308
- @stub2 = RackStub.new('rack')
309
- @stub2_url_root = "http://6.passenger.test:#{@apache2.port}"
310
- @apache2.set_vhost('6.passenger.test', "#{@stub2.full_app_root}/public") do |vhost|
311
- vhost << "PassengerAppEnv development"
312
- vhost << "PassengerSpawnMethod conservative"
313
- vhost << "PassengerRestartDir #{@stub2.full_app_root}/public"
314
- vhost << "AllowEncodedSlashes off"
315
- end
316
-
317
- @apache2.start
318
- end
319
-
320
- after :all do
321
- @stub.destroy
322
- @stub2.destroy
323
- @apache2.stop if @apache2
324
- end
325
-
326
- before :each do
327
- @stub.reset
328
- @stub2.reset
329
- end
330
-
331
- specify "PassengerAppEnv is per-virtual host" do
332
- @server = @stub_url_root
333
- get('/system_env').should =~ /PASSENGER_APP_ENV = production/
334
-
335
- @server = @stub2_url_root
336
- get('/system_env').should =~ /PASSENGER_APP_ENV = development/
337
- end
338
-
339
- it "looks for restart.txt in the directory specified by PassengerRestartDir" do
340
- @server = @stub2_url_root
341
- startup_file = "#{@stub2.app_root}/config.ru"
342
- restart_file = "#{@stub2.app_root}/public/restart.txt"
343
-
344
- File.write(startup_file, %Q{
345
- require File.expand_path(File.dirname(__FILE__) + "/library")
346
-
347
- app = lambda do |env|
348
- case env['PATH_INFO']
349
- when '/'
350
- text_response("hello world")
351
- else
352
- [404, { "Content-Type" => "text/plain" }, ["Unknown URI"]]
353
- end
354
- end
355
-
356
- run app
357
- })
358
-
359
- now = Time.now
360
- File.touch(restart_file, now - 5)
361
- get('/').should == "hello world"
362
-
363
- File.write(startup_file, %Q{
364
- require File.expand_path(File.dirname(__FILE__) + "/library")
365
-
366
- app = lambda do |env|
367
- case env['PATH_INFO']
368
- when '/'
369
- text_response("oh hai")
370
- else
371
- [404, { "Content-Type" => "text/plain" }, ["Unknown URI"]]
372
- end
373
- end
374
-
375
- run app
376
- })
377
-
378
- File.touch(restart_file, now - 10)
379
- get('/').should == "oh hai"
380
- end
381
-
382
- describe "PassengerAppRoot" do
383
- before :each do
384
- @server = @stub_url_root
385
- File.write("#{@stub.full_app_root}/public/cached.html", "Static cached.html")
386
- File.write("#{@stub.full_app_root}/public/dir.html", "Static dir.html")
387
- Dir.mkdir("#{@stub.full_app_root}/public/dir")
388
- end
389
-
390
- it "supports page caching on non-index URIs" do
391
- get('/cached').should == "Static cached.html"
392
- end
393
-
394
- it "supports page caching on directory index URIs" do
395
- get('/dir').should == "Static dir.html"
396
- end
397
-
398
- it "works" do
399
- result = get('/parameters?first=one&second=Green+Bananas')
400
- result.should =~ %r{First: one\n}
401
- result.should =~ %r{Second: Green Bananas\n}
402
- end
403
- end
404
-
405
- it "resolves symlinks in the document root if PassengerResolveSymlinksInDocumentRoot is set" do
406
- orig_app_root = @stub.app_root
407
- @stub.move(File.expand_path('tmp.mycook.symlinktest'))
408
- FileUtils.mkdir_p(orig_app_root)
409
- File.symlink("#{@stub.app_root}/public", "#{orig_app_root}/public")
410
- begin
411
- File.write("#{@stub.app_root}/public/.htaccess", "PassengerResolveSymlinksInDocumentRoot on")
412
- @server = @stub_url_root
413
- get('/').should == "front page"
414
- ensure
415
- FileUtils.rm_rf(orig_app_root)
416
- @stub.move(orig_app_root)
417
- end
418
- end
419
-
420
- it "supports encoded slashes in the URL if AllowEncodedSlashes is turned on" do
421
- @server = @stub_url_root
422
- get('/env/foo%2fbar').should =~ %r{PATH_INFO = /env/foo/bar\n}
423
-
424
- @server = @stub2_url_root
425
- get('/env/foo%2fbar').should =~ %r{404 Not Found}
426
- end
427
-
428
- describe "when handling POST requests with 'chunked' transfer encoding, if PassengerBufferUpload is off" do
429
- it "sets Transfer-Encoding to 'chunked' and removes Content-Length" do
430
- @uri = URI.parse(@stub_url_root)
431
- socket = TCPSocket.new(@uri.host, @uri.port)
432
- begin
433
- socket.write("POST #{@stub_url_root}/env HTTP/1.1\r\n")
434
- socket.write("Host: #{@uri.host}:#{@uri.port}\r\n")
435
- socket.write("Transfer-Encoding: chunked\r\n")
436
- socket.write("Content-Type: text/plain\r\n")
437
- socket.write("Connection: close\r\n")
438
- socket.write("\r\n")
439
-
440
- chunk = "foo=bar!"
441
- socket.write("%X\r\n%s\r\n" % [chunk.size, chunk])
442
- socket.write("0\r\n\r\n")
443
- socket.flush
444
-
445
- response = socket.read
446
- response.should_not include("CONTENT_LENGTH = ")
447
- response.should include("HTTP_TRANSFER_ENCODING = chunked\n")
448
- ensure
449
- socket.close
450
- end
451
- end
452
- end
453
-
454
- ####################################
455
- end
456
-
457
- describe "error handling" do
458
- before :all do
459
- create_apache2_controller
460
- FileUtils.rm_rf('tmp.webdir')
461
- FileUtils.mkdir_p('tmp.webdir')
462
- @webdir = File.expand_path('tmp.webdir')
463
- @apache2.set_vhost('1.passenger.test', @webdir) do |vhost|
464
- vhost << "PassengerBaseURI /app-that-crashes-during-startup/public"
465
- end
466
-
467
- @stub = RackStub.new('rack')
468
- @stub_url_root = "http://2.passenger.test:#{@apache2.port}"
469
- @apache2.set_vhost('2.passenger.test', "#{@stub.full_app_root}/public")
470
-
471
- @apache2 << "PassengerFriendlyErrorPages on"
472
- @apache2.start
473
- end
474
-
475
- after :all do
476
- FileUtils.rm_rf('tmp.webdir')
477
- @stub.destroy
478
- @apache2.stop if @apache2
479
- end
480
-
481
- before :each do
482
- @server = "http://1.passenger.test:#{@apache2.port}"
483
- @error_page_signature = /<meta name="generator" content="Phusion Passenger">/
484
- @stub.reset
485
- end
486
-
487
- it "displays an error page if the application crashes during startup" do
488
- RackStub.use('rack', "#{@webdir}/app-that-crashes-during-startup") do |stub|
489
- File.prepend(stub.startup_file, "raise 'app crash'")
490
- result = get("/app-that-crashes-during-startup/public")
491
- result.should =~ @error_page_signature
492
- result.should =~ /app crash/
493
- end
494
- end
495
-
496
- it "doesn't display a Ruby spawn error page if PassengerFriendlyErrorPages is off" do
497
- RackStub.use('rack', "#{@webdir}/app-that-crashes-during-startup") do |stub|
498
- File.write("#{stub.app_root}/public/.htaccess", "PassengerFriendlyErrorPages off")
499
- File.prepend(stub.startup_file, "raise 'app crash'")
500
- result = get("/app-that-crashes-during-startup/public")
501
- result.should_not =~ @error_page_signature
502
- result.should_not =~ /app crash/
503
- end
504
- end
505
- end
506
-
507
- describe "HelperAgent" do
508
- AdminTools = PhusionPassenger::AdminTools
509
-
510
- before :all do
511
- create_apache2_controller
512
- @stub = RackStub.new('rack')
513
- @stub_url_root = "http://1.passenger.test:#{@apache2.port}"
514
- @apache2 << "PassengerStatThrottleRate 0"
515
- @apache2.set_vhost('1.passenger.test', "#{@stub.full_app_root}/public")
516
- @apache2.start
517
- @server = "http://1.passenger.test:#{@apache2.port}"
518
- end
519
-
520
- after :all do
521
- @stub.destroy
522
- @apache2.stop if @apache2
523
- end
524
-
525
- before :each do
526
- @stub.reset
527
- end
528
-
529
- it "is restarted if it crashes" do
530
- # Make sure that all Apache worker processes have connected to
531
- # the helper agent.
532
- 10.times do
533
- get('/').should == "front page"
534
- sleep 0.1
535
- end
536
-
537
- # Now kill the helper agent.
538
- instance = AdminTools::InstanceRegistry.new.list.first
539
- Process.kill('SIGKILL', instance.server_pid)
540
- sleep 0.02 # Give the signal a small amount of time to take effect.
541
-
542
- # Each worker process should detect that the old
543
- # helper agent has died, and should reconnect.
544
- 10.times do
545
- get('/').should == "front page"
546
- sleep 0.1
547
- end
548
- end
549
-
550
- it "exposes the application pool for passenger-status" do
551
- File.touch("#{@stub.app_root}/tmp/restart.txt", 1) # Get rid of all previous app processes.
552
- get('/').should == "front page"
553
- instance = AdminTools::InstanceRegistry.new.list.first
554
-
555
- # Wait until the server has processed the session close event.
556
- sleep 0.1
557
-
558
- request = Net::HTTP::Get.new("/pool.xml")
559
- request.basic_auth("ro_admin", instance.read_only_admin_password)
560
- response = instance.http_request("agents.s/server_admin", request)
561
- if response.code.to_i / 100 == 2
562
- doc = REXML::Document.new(response.body)
563
- else
564
- raise response.body
565
- end
566
-
567
- groups = doc.get_elements("info/supergroups/supergroup/group")
568
- groups.should have(1).item
569
- groups.each do |group|
570
- group.elements["name"].text.should == "#{@stub.full_app_root} (production)#default"
571
- processes = group.get_elements("processes/process")
572
- processes.should have(1).item
573
- processes[0].elements["processed"].text.should == "1"
574
- end
575
- end
576
- end
577
-
578
- ##### Helper methods #####
579
-
580
- def start_web_server_if_necessary
581
- if !@apache2.running?
582
- @apache2.start
583
- end
584
- end
585
- end