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,247 +0,0 @@
1
- require 'socket'
2
- PhusionPassenger.require_passenger_lib 'utils'
3
- PhusionPassenger.require_passenger_lib 'message_channel'
4
-
5
- module PhusionPassenger
6
-
7
- class Loader
8
- attr_reader :pid, :input, :output, :sockets
9
-
10
- def initialize(command, app_root)
11
- @app_root = app_root
12
- a, input = UNIXSocket.pair
13
- c, output = UNIXSocket.pair
14
- @pid = pid = fork do
15
- STDIN.reopen(a)
16
- STDOUT.reopen(c)
17
- input.close
18
- output.close
19
- Dir.chdir(app_root)
20
- ENV['RAILS_ENV'] = ENV['RACK_ENV'] = ENV['PASSENGER_ENV'] = 'production'
21
- exec(*command)
22
- end
23
- a.close
24
- c.close
25
- @input = input
26
- @output = output
27
- @sockets = {}
28
- end
29
-
30
- def self.new_with_sockets(input, output, app_root)
31
- result = allocate
32
- result.instance_variable_set(:@input, input)
33
- result.instance_variable_set(:@output, output)
34
- result.instance_variable_set(:@app_root, app_root)
35
- result.instance_variable_set(:@sockets, {})
36
- return result
37
- end
38
-
39
- def close
40
- @input.close_write
41
- # Wait at most 100 msec for process to exit.
42
- select([@output], nil, nil, 0.1)
43
-
44
- @input.close if !@input.closed?
45
- @output.close if !@output.closed?
46
- if @pid
47
- begin
48
- Process.kill('TERM', @pid)
49
- rescue Errno::ESRCH
50
- end
51
- begin
52
- Process.waitpid(@pid)
53
- rescue Errno::ECHILD
54
- end
55
- end
56
- end
57
-
58
- def start(options = {})
59
- init_message = read_response_line
60
- if init_message != "I have control 1.0\n"
61
- raise "Unknown response initialization message: #{init_message.inspect}"
62
- end
63
- write_request_line "You have control 1.0"
64
- write_start_request(options)
65
- return process_response
66
- end
67
-
68
- def connect_and_send_request(headers)
69
- socket = Utils.connect_to_server(sockets["main"][:address])
70
- channel = MessageChannel.new(socket)
71
- data = ""
72
- headers["REQUEST_METHOD"] ||= "GET"
73
- headers["REQUEST_URI"] ||= headers["PATH_INFO"]
74
- headers["QUERY_STRING"] ||= ""
75
- headers["SCRIPT_NAME"] ||= ""
76
- headers.each_pair do |key, value|
77
- data << "#{key}\0#{value}\0"
78
- end
79
- channel.write_scalar(data)
80
- return socket
81
- end
82
-
83
- private
84
- def write_request_line(line = "")
85
- STDERR.puts "---> #{line}" if DEBUG
86
- @input.puts line
87
- end
88
-
89
- def read_response_line
90
- while true
91
- line = @output.readline
92
- STDERR.puts "<--- #{line.strip}" if DEBUG
93
- if line.start_with?("!> ")
94
- line.sub!(/^\!> /, '')
95
- return line
96
- end
97
- end
98
- end
99
-
100
- def write_start_request(options)
101
- write_request_line "passenger_root: #{PhusionPassenger.install_spec}"
102
- write_request_line "ruby_libdir: #{PhusionPassenger.ruby_libdir}"
103
- write_request_line "keepalive: false"
104
- write_request_line "log_level: 6" if DEBUG
105
- options.each_pair do |key, value|
106
- write_request_line "#{key}: #{value}"
107
- end
108
- write_request_line
109
- end
110
-
111
- def process_response
112
- status = read_response_line
113
-
114
- headers = {}
115
- line = read_response_line
116
- while line != "\n"
117
- key, value = line.strip.split(/ *: */, 2)
118
- if key == "socket"
119
- process_socket(value)
120
- else
121
- headers[key] = value
122
- end
123
- line = read_response_line
124
- end
125
-
126
- if status == "Error\n"
127
- body = @output.read
128
- STDERR.puts "<--- #{body}" if DEBUG
129
- end
130
-
131
- return { :status => status.strip, :headers => headers, :body => body }
132
- end
133
-
134
- def process_socket(spec)
135
- name, address, protocol, concurrency = spec.split(';')
136
- @sockets[name] = { :address => address, :protocol => protocol, :concurrency => concurrency }
137
- end
138
- end
139
-
140
- class Preloader < Loader
141
- def spawn(options = {})
142
- socket = Utils.connect_to_server(sockets["spawn"])
143
- loader = Loader.new_with_sockets(socket, socket.dup, @app_root)
144
- begin
145
- loader.send(:write_request_line, "spawn")
146
- loader.send(:write_start_request, options)
147
-
148
- line = loader.output.readline
149
- puts "<--- #{line.strip}" if DEBUG
150
- if line != "OK\n"
151
- raise "Unexpected spawn response status #{line.inspect}"
152
- end
153
-
154
- line = loader.output.readline
155
- puts "<--- #{line.strip}" if DEBUG
156
- loader.instance_variable_set(:@pid, line.to_i)
157
-
158
- return loader
159
- rescue
160
- loader.close
161
- raise
162
- end
163
- end
164
-
165
- private
166
- def process_socket(spec)
167
- sockets["spawn"] = spec
168
- end
169
- end
170
-
171
- module LoaderSpecHelper
172
- def self.included(klass)
173
- klass.before(:each) do
174
- @stubs = []
175
- end
176
-
177
- klass.after(:each) do
178
- begin
179
- @loader.close if @loader
180
- @preloader.close if @preloader
181
- ensure
182
- @stubs.each do |stub|
183
- stub.destroy
184
- end
185
- end
186
- end
187
- end
188
-
189
- def before_start(code)
190
- @before_start = code
191
- end
192
-
193
- def after_start(code)
194
- @after_start = code
195
- end
196
-
197
- def register_stub(stub)
198
- @stubs << stub
199
- File.prepend(stub.startup_file, "#{@before_start}\n")
200
- File.append(stub.startup_file, "\n#{@after_start}")
201
- return stub
202
- end
203
-
204
- def register_app(app)
205
- @apps << app
206
- return app
207
- end
208
-
209
- def start!(options = {})
210
- result = start(options)
211
- if result[:status] != "Ready"
212
- raise "Loader failed to start; error page:\n#{result[:body]}"
213
- end
214
- end
215
-
216
- def perform_request(headers)
217
- socket = @loader.connect_and_send_request(headers)
218
- headers = {}
219
- line = socket.readline
220
- headers["Status"] = line.split(" ")[1]
221
- while line != "\r\n"
222
- key, value = line.strip.split(/ *: */, 2)
223
- headers[key] = value
224
- line = socket.readline
225
- end
226
- body = socket.read
227
- socket.close
228
- return [headers, body]
229
- end
230
- end
231
-
232
- shared_examples_for "a loader" do
233
- it "works" do
234
- result = start
235
- result[:status].should == "Ready"
236
- headers, body = perform_request(
237
- "REQUEST_METHOD" => "GET",
238
- "PATH_INFO" => "/",
239
- # For Rails 2
240
- "REQUEST_URI" => "/"
241
- )
242
- headers["Status"].should == "200"
243
- body.should == "front page"
244
- end
245
- end
246
-
247
- end # module PhusionPassenger
@@ -1,357 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
- require 'socket'
3
- require 'fileutils'
4
- require 'tmpdir'
5
- PhusionPassenger.require_passenger_lib 'union_station/core'
6
-
7
- module PhusionPassenger
8
-
9
- shared_examples_for "Union Station extensions for Rails" do
10
- before :each do
11
- @logging_agent_password = "1234"
12
- @us_tmpdir = Dir.mktmpdir
13
- @dump_file = "#{@us_tmpdir}/log.txt"
14
- @agent_pid, @socket_filename, @socket_address = spawn_logging_agent(@us_tmpdir,
15
- @dump_file, @logging_agent_password)
16
- @options = {
17
- "analytics" => true,
18
- "logging_agent_address" => @socket_address,
19
- "logging_agent_username" => "logging",
20
- "logging_agent_password" => "1234",
21
- "node_name" => "localhost",
22
- "app_group_name" => "foobar"
23
- }
24
- end
25
-
26
- after :each do
27
- FileUtils.rm_rf(@us_tmpdir) if @us_tmpdir
28
- @connection.close if @connection && @connection.closed?
29
- Process.kill('KILL', @agent_pid)
30
- Process.waitpid(@agent_pid)
31
- end
32
-
33
- def send_request_to_app(headers)
34
- headers = {
35
- "PASSENGER_TXN_ID" => "1234-abcd"
36
- }.merge(headers)
37
- return perform_request(headers)
38
- end
39
-
40
- def read_log
41
- return File.read(@dump_file)
42
- end
43
-
44
- def base64(data)
45
- return [data].pack('m').gsub("\n", "")
46
- end
47
-
48
- it "doesn't install Union Station extensions if analytics logging is turned off" do
49
- @options.delete("analytics")
50
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
51
- class FooController < ActionController::Base
52
- def index
53
- File.open("out.txt", "w") do |f|
54
- f.write(request.env["UNION_STATION_REQUEST_TRANSACTION"].class.to_s)
55
- end
56
- render :nothing => true
57
- end
58
- end
59
- })
60
- start!(@options)
61
- send_request_to_app("PATH_INFO" => "/foo")
62
- eventually(5) do
63
- filename = "#{@stub.app_root}/out.txt"
64
- File.exist?(filename) && File.read(filename) == "NilClass"
65
- end
66
- end
67
-
68
- it "logs the controller and action name" do
69
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
70
- class FooController < ActionController::Base
71
- def index
72
- render :nothing => true
73
- end
74
- end
75
- })
76
- start!(@options)
77
- send_request_to_app("PATH_INFO" => "/foo")
78
- eventually(5) do
79
- flush_logging_agent(@logging_agent_password, @socket_address)
80
- log = read_log
81
- log.include?("Controller action: FooController#index\n")
82
- end
83
- end
84
-
85
- it "logs uncaught exceptions in controller actions" do
86
- File.write("#{@stub.app_root}/app/controllers/crash_controller.rb", %Q{
87
- class CrashController < ActionController::Base
88
- def index
89
- raise "something went wrong"
90
- end
91
- end
92
- })
93
- start!(@options)
94
- send_request_to_app("PATH_INFO" => "/crash")
95
- eventually(5) do
96
- flush_logging_agent(@logging_agent_password, @socket_address)
97
- log = read_log
98
- log.include?("Request transaction ID: 1234-abcd\n") &&
99
- log.include?("Message: " + base64("something went wrong")) &&
100
- log.include?("Class: RuntimeError") &&
101
- log.include?("Backtrace: ") &&
102
- log.include?("Controller action: CrashController#index")
103
- end
104
- end
105
-
106
- it "logs ActionController benchmarks" do
107
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
108
- class FooController < ActionController::Base
109
- def index
110
- if respond_to?(:benchmark, true)
111
- benchmark("hello") do
112
- end
113
- else
114
- ActionController::Base.benchmark("hello") do
115
- end
116
- end
117
- render :nothing => true
118
- end
119
- end
120
- })
121
- start!(@options)
122
- send_request_to_app("PATH_INFO" => "/foo")
123
- eventually(5) do
124
- flush_logging_agent(@logging_agent_password, @socket_address)
125
- log = read_log
126
- log.include?('BEGIN: BENCHMARK: hello') &&
127
- log.include?('END: BENCHMARK: hello')
128
- end
129
- end
130
-
131
- it "logs ActionView benchmarks" do
132
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
133
- class FooController < ActionController::Base
134
- end
135
- })
136
- FileUtils.mkdir_p("#{@stub.app_root}/app/views/foo")
137
- File.write("#{@stub.app_root}/app/views/foo/index.html.erb", %Q{
138
- <% benchmark("hello") do %>
139
- <% end %>
140
- })
141
- start!(@options)
142
- send_request_to_app("PATH_INFO" => "/foo")
143
- eventually(5) do
144
- flush_logging_agent(@logging_agent_password, @socket_address)
145
- log = read_log
146
- log.include?('BEGIN: BENCHMARK: hello') &&
147
- log.include?('END: BENCHMARK: hello')
148
- end
149
- end
150
-
151
- it "logs successful SQL queries" do
152
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
153
- class FooController < ActionController::Base
154
- def index
155
- db = ActiveRecord::Base.connection
156
- db.execute("CREATE TABLE foobar (id INT)")
157
- db.execute("INSERT INTO foobar VALUES (1)")
158
- render :nothing => true
159
- end
160
- end
161
- })
162
- start!(@options.merge("active_record" => true))
163
- send_request_to_app("PATH_INFO" => "/foo")
164
- extra_info_regex = Regexp.escape(base64("SQL\nCREATE TABLE foobar (id INT)"))
165
- eventually(5) do
166
- flush_logging_agent(@logging_agent_password, @socket_address)
167
- log = read_log
168
- log =~ /BEGIN: DB BENCHMARK: .* \(.*\) #{extra_info_regex}$/ &&
169
- log =~ /END: DB BENCHMARK: .* \(.*\)$/
170
- end
171
- end
172
-
173
- it "applies event preprocessor to log events" do
174
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
175
- class FooController < ActionController::Base
176
- def index
177
- db = ActiveRecord::Base.connection
178
- db.execute("CREATE TABLE foobar (id INT)--secret")
179
- db.execute("INSERT INTO foobar VALUES (1)")
180
- render :nothing => true
181
- end
182
- end
183
- })
184
- start!(@options.merge("active_record" => true))
185
- send_request_to_app("PATH_INFO" => "/foo")
186
- extra_info_regex = Regexp.escape(base64("SQL\nCREATE TABLE foobar (id INT)--PASSWORD"))
187
- eventually(5) do
188
- flush_logging_agent(@logging_agent_password, @socket_address)
189
- log = read_log
190
- log =~ /BEGIN: DB BENCHMARK: .* \(.*\) #{extra_info_regex}$/ &&
191
- log =~ /END: DB BENCHMARK: .* \(.*\)$/
192
- end
193
- end
194
-
195
- it "logs failed SQL queries" do
196
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
197
- class FooController < ActionController::Base
198
- def index
199
- db = ActiveRecord::Base.connection
200
- db.execute("INVALID QUERY")
201
- render :nothing => true
202
- end
203
- end
204
- })
205
- start!(@options.merge("active_record" => true))
206
- send_request_to_app("PATH_INFO" => "/foo")
207
- extra_info_regex = Regexp.escape(base64("SQL\nINVALID QUERY"))
208
- if rails_version >= '3.0'
209
- pending do
210
- eventually(5) do
211
- log = read_log
212
- log =~ /BEGIN: DB BENCHMARK: .* \(.*\) #{extra_info_regex}$/ &&
213
- log =~ /FAIL: DB BENCHMARK: .* \(.*\)$/
214
- end
215
- end
216
- else
217
- eventually(5) do
218
- flush_logging_agent(@logging_agent_password, @socket_address)
219
- log = read_log
220
- log =~ /BEGIN: DB BENCHMARK: .* \(.*\) #{extra_info_regex}$/ &&
221
- log =~ /FAIL: DB BENCHMARK: .* \(.*\)$/
222
- end
223
- end
224
- end
225
-
226
- it "logs controller processing time of successful actions" do
227
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
228
- class FooController < ActionController::Base
229
- def index
230
- render :nothing => true
231
- end
232
- end
233
- })
234
- start!(@options)
235
- send_request_to_app("PATH_INFO" => "/foo")
236
- eventually(5) do
237
- flush_logging_agent(@logging_agent_password, @socket_address)
238
- log = read_log
239
- log.include?("BEGIN: framework request processing") &&
240
- log.include?("END: framework request processing")
241
- end
242
- end
243
-
244
- it "logs controller processing time of failed actions" do
245
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
246
- class FooController < ActionController::Base
247
- def index
248
- raise "crash"
249
- end
250
- end
251
- })
252
- start!(@options)
253
- send_request_to_app("PATH_INFO" => "/foo")
254
- eventually(5) do
255
- flush_logging_agent(@logging_agent_password, @socket_address)
256
- log = read_log
257
- log.include?("BEGIN: framework request processing") &&
258
- log.include?("FAIL: framework request processing")
259
- end
260
- end
261
-
262
- it "logs view rendering time of successful actions" do
263
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
264
- class FooController < ActionController::Base
265
- def index
266
- end
267
- end
268
- })
269
- FileUtils.mkdir_p("#{@stub.app_root}/app/views/foo")
270
- File.write("#{@stub.app_root}/app/views/foo/index.html.erb", %Q{
271
- hello world
272
- })
273
- start!(@options)
274
- send_request_to_app("PATH_INFO" => "/foo")
275
- eventually(5) do
276
- flush_logging_agent(@logging_agent_password, @socket_address)
277
- log = read_log
278
- log.include?("BEGIN: view rendering") &&
279
- log.include?("END: view rendering") &&
280
- log =~ /View rendering time: \d+$/
281
- end
282
- end
283
-
284
- it "logs view rendering time of failed actions" do
285
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
286
- class FooController < ActionController::Base
287
- def index
288
- end
289
- end
290
- })
291
- FileUtils.mkdir_p("#{@stub.app_root}/app/views/foo")
292
- File.write("#{@stub.app_root}/app/views/foo/index.html.erb", %Q{
293
- <% raise "crash!" %>
294
- })
295
- start!(@options)
296
- send_request_to_app("PATH_INFO" => "/foo")
297
- eventually(5) do
298
- flush_logging_agent(@logging_agent_password, @socket_address)
299
- log = read_log
300
- log.include?("BEGIN: view rendering") &&
301
- log.include?("FAIL: view rendering")
302
- end
303
- end
304
-
305
- it "logs cache hits" do
306
- if rails_version >= '2.1'
307
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
308
- class FooController < ActionController::Base
309
- def index
310
- Rails.cache.write("key1", "foo")
311
- Rails.cache.write("key2", "foo")
312
- Rails.cache.write("key3", "foo")
313
- Rails.cache.read("key1")
314
- Rails.cache.fetch("key2")
315
- Rails.cache.fetch("key3") { "bar" }
316
- render :text => 'ok'
317
- end
318
- end
319
- })
320
- start!(@options)
321
- send_request_to_app("PATH_INFO" => "/foo")
322
- eventually(5) do
323
- flush_logging_agent(@logging_agent_password, @socket_address)
324
- log = read_log
325
- log.include?("Cache hit: key1") &&
326
- log.include?("Cache hit: key2") &&
327
- log.include?("Cache hit: key3")
328
- end
329
- end
330
- end
331
-
332
- it "logs cache misses" do
333
- if rails_version >= '2.1'
334
- File.write("#{@stub.app_root}/app/controllers/foo_controller.rb", %Q{
335
- class FooController < ActionController::Base
336
- def index
337
- Rails.cache.read("key1")
338
- Rails.cache.fetch("key2")
339
- Rails.cache.fetch("key3") { "bar" }
340
- render :text => 'ok'
341
- end
342
- end
343
- })
344
- start!(@options)
345
- send_request_to_app("PATH_INFO" => "/foo")
346
- eventually(5) do
347
- flush_logging_agent(@logging_agent_password, @socket_address)
348
- log = read_log
349
- log.include?("Cache miss: key1") &&
350
- log.include?("Cache miss: key2") &&
351
- log =~ /Cache miss \(\d+\): key3/
352
- end
353
- end
354
- end
355
- end
356
-
357
- end # module PhusionPassenger