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,55 +0,0 @@
1
- module PhusionPassenger
2
-
3
- shared_examples_for "a Ruby loader" do
4
- it "prints an error page if the startup file fails to load" do
5
- File.write(@stub.startup_file, %q{
6
- raise "oh no!"
7
- })
8
- result = start
9
- result[:status].should == "Error"
10
- result[:body].should include("oh no!")
11
- end
12
-
13
- it "calls the starting_worker_process event after the startup file has been loaded" do
14
- File.prepend(@stub.startup_file, %q{
15
- history_file = "history.txt"
16
- PhusionPassenger.on_event(:starting_worker_process) do |forked|
17
- ::File.open(history_file, 'a') do |f|
18
- f.puts "worker_process_started\n"
19
- end
20
- end
21
- ::File.open(history_file, 'a') do |f|
22
- f.puts "end of startup file\n"
23
- end
24
- })
25
- result = start
26
- result[:status].should == "Ready"
27
- File.read("#{@stub.app_root}/history.txt").should ==
28
- "end of startup file\n" +
29
- "worker_process_started\n"
30
- end
31
-
32
- it "calls the stopping_worker_process event on exit" do
33
- File.prepend(@stub.startup_file, %q{
34
- history_file = "history.txt"
35
- PhusionPassenger.on_event(:stopping_worker_process) do
36
- ::File.open(history_file, 'a') do |f|
37
- f.puts "worker_process_stopped\n"
38
- end
39
- end
40
- ::File.open(history_file, 'a') do |f|
41
- f.puts "end of startup file\n"
42
- end
43
- })
44
- result = start
45
- result[:status].should == "Ready"
46
- @loader.input.close_write
47
- eventually(3) do
48
- File.read("#{@stub.app_root}/history.txt") ==
49
- "end of startup file\n" +
50
- "worker_process_stopped\n"
51
- end
52
- end
53
- end
54
-
55
- end # module PhusionPassenger
@@ -1,114 +0,0 @@
1
- if GC.respond_to?(:copy_on_write_friendly?) && !GC.copy_on_write_friendly?
2
- GC.copy_on_write_friendly = true
3
- end
4
-
5
- RUBY_VERSION_INT = RUBY_VERSION.split('.')[0..2].join.to_i
6
-
7
- source_root = File.expand_path(File.dirname(__FILE__) + "/../..")
8
- Dir.chdir("#{source_root}/test")
9
-
10
- require 'rubygems'
11
- require 'json'
12
- begin
13
- CONFIG = JSON.load(File.read('config.json'))
14
- rescue Errno::ENOENT
15
- STDERR.puts "*** You do not have the file test/config.json. " <<
16
- "Please copy test/config.json.example to " <<
17
- "test/config.json, and edit it."
18
- exit 1
19
- end
20
-
21
- def boolean_option(name, default_value = false)
22
- value = ENV[name]
23
- if value.nil? || value.empty?
24
- return default_value
25
- else
26
- return value == "yes" || value == "on" || value == "true" || value == "1"
27
- end
28
- end
29
-
30
- DEBUG = boolean_option('DEBUG')
31
-
32
- ENV.delete('PASSENGER_DEBUG')
33
-
34
- $LOAD_PATH.unshift("#{source_root}/lib")
35
- $LOAD_PATH.unshift("#{source_root}/test")
36
-
37
- require 'thread'
38
- require 'timeout'
39
- require 'fileutils'
40
- require 'phusion_passenger'
41
- PhusionPassenger.locate_directories
42
- PhusionPassenger.require_passenger_lib 'debug_logging'
43
- PhusionPassenger.require_passenger_lib 'utils'
44
- require 'support/test_helper'
45
-
46
- include TestHelper
47
-
48
- # Seed the pseudo-random number generator here
49
- # so that it doesn't happen in the child processes.
50
- srand
51
-
52
- trap "QUIT" do
53
- STDERR.puts PhusionPassenger::Utils.global_backtrace_report
54
- end
55
-
56
- class DeadlineTimer
57
- def initialize(main_thread, deadline)
58
- @mutex = Mutex.new
59
- @cond = ConditionVariable.new
60
- @iteration = 0
61
- @pipe = IO.pipe
62
-
63
- @thread = Thread.new do
64
- Thread.current.abort_on_exception = true
65
- expected_iteration = 1
66
- ios = [@pipe[0]]
67
- while true
68
- @mutex.synchronize do
69
- while @iteration != expected_iteration
70
- @cond.wait(@mutex)
71
- end
72
- end
73
- if !select(ios, nil, nil, deadline)
74
- STDERR.puts "*** Test timed out (#{deadline} seconds)"
75
- STDERR.puts PhusionPassenger::Utils.global_backtrace_report
76
- main_thread.raise(Timeout::Error, "Test timed out")
77
- expected_iteration += 1
78
- elsif @pipe[0].read(1).nil?
79
- break
80
- else
81
- expected_iteration += 1
82
- end
83
- end
84
- end
85
- end
86
-
87
- def start
88
- @mutex.synchronize do
89
- @iteration += 1
90
- @cond.signal
91
- end
92
- end
93
-
94
- def stop
95
- @pipe[1].write('x')
96
- end
97
- end
98
-
99
- DEADLINE_TIMER = DeadlineTimer.new(Thread.current, 30)
100
-
101
- RSpec.configure do |config|
102
- config.before(:each) do
103
- # Suppress warning messages.
104
- PhusionPassenger::DebugLogging.log_level = PhusionPassenger::LVL_CRIT
105
- PhusionPassenger::DebugLogging.log_file = nil
106
- PhusionPassenger::DebugLogging.stderr_evaluator = nil
107
-
108
- DEADLINE_TIMER.start
109
- end
110
-
111
- config.after(:each) do
112
- DEADLINE_TIMER.stop
113
- end
114
- end
@@ -1,402 +0,0 @@
1
- # TODO: move these tests to config/install_standalone_runtime_command_spec.rb
2
- if false
3
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
4
- PhusionPassenger.require_passenger_lib 'constants'
5
- PhusionPassenger.require_passenger_lib 'standalone/runtime_installer'
6
- require 'tmpdir'
7
- require 'fileutils'
8
- require 'stringio'
9
-
10
- module PhusionPassenger
11
- module Standalone
12
-
13
- describe RuntimeInstaller do
14
- before :each do
15
- @temp_dir = Dir.mktmpdir
16
- Dir.mkdir("#{@temp_dir}/support")
17
- Dir.mkdir("#{@temp_dir}/nginx")
18
- @logs = StringIO.new
19
- PhusionPassenger.stub(:installed_from_release_package?).and_return(true)
20
- end
21
-
22
- after :each do
23
- FileUtils.remove_entry_secure(@temp_dir)
24
- end
25
-
26
- let(:binaries_url_root) { "http://somewhere" }
27
- let(:version) { PhusionPassenger::VERSION_STRING }
28
- let(:nginx_version) { PhusionPassenger::PREFERRED_NGINX_VERSION }
29
- let(:cxx_compat_id) { PlatformInfo.cxx_binary_compatibility_id }
30
- let(:support_binaries_url) { "#{binaries_url_root}/#{version}/support-#{cxx_compat_id}.tar.gz" }
31
- let(:nginx_binary_url) { "#{binaries_url_root}/#{version}/webhelper-#{nginx_version}-#{cxx_compat_id}.tar.gz" }
32
- let(:nginx_source_url) { "http://nginx.org/download/nginx-#{nginx_version}.tar.gz" }
33
-
34
- def create_installer(options = {})
35
- options = {
36
- :binaries_url_root => binaries_url_root,
37
- :stdout => @logs,
38
- :stderr => @logs
39
- }.merge(options)
40
- @installer = RuntimeInstaller.new(options)
41
- end
42
-
43
- def create_tarball(filename, contents = nil)
44
- Dir.mktmpdir("tarball-", @temp_dir) do |tarball_dir|
45
- Dir.chdir(tarball_dir) do
46
- if block_given?
47
- yield
48
- else
49
- contents.each do |content_name|
50
- File.open(content_name, "w").close
51
- end
52
- end
53
- sh "tar", "-czf", filename, "."
54
- end
55
- end
56
- end
57
-
58
- def create_dummy_support_binaries
59
- Dir.mkdir("support-binaries")
60
- File.open("support-binaries/#{AGENT_EXE}", "w") do |f|
61
- f.puts "#!/bin/bash"
62
- f.puts "echo PASS"
63
- end
64
- File.chmod(0755, "support-binaries/#{AGENT_EXE}")
65
- end
66
-
67
- def create_dummy_nginx_binary
68
- File.open("PassengerWebHelper", "w") do |f|
69
- f.puts "#!/bin/bash"
70
- f.puts "echo nginx version: 1.0.0"
71
- end
72
- File.chmod(0755, "PassengerWebHelper")
73
- end
74
-
75
- def create_dummy_nginx_source
76
- Dir.mkdir("nginx-#{nginx_version}")
77
- File.open("nginx-#{nginx_version}/configure", "w") do |f|
78
- f.puts %Q{echo "$@" > '#{@temp_dir}/configure.txt'}
79
- end
80
- File.chmod(0700, "nginx-#{nginx_version}/configure")
81
- File.open("nginx-#{nginx_version}/Makefile", "w") do |f|
82
- f.puts("all:")
83
- f.puts(" mkdir objs")
84
- f.puts(" echo ok > objs/nginx")
85
- end
86
- end
87
-
88
- def create_file(filename)
89
- File.open(filename, "w").close
90
- end
91
-
92
- def sh(*command)
93
- if !system(*command)
94
- raise "Command failed: #{command.join(' ')}"
95
- end
96
- end
97
-
98
- def test_download_nginx_binary
99
- create_installer(:targets => [:nginx],
100
- :nginx_dir => "#{@temp_dir}/nginx",
101
- :lib_dir => PhusionPassenger.lib_dir)
102
-
103
- @installer.should_receive(:download).
104
- and_return do |url, output, options|
105
- url.should == nginx_binary_url
106
- options[:use_cache].should be_true
107
- create_tarball(output) do
108
- create_dummy_nginx_binary
109
- end
110
- true
111
- end
112
-
113
- @installer.should_receive(:check_for_download_tool)
114
- @installer.should_not_receive(:check_depdendencies)
115
- @installer.should_not_receive(:compile_support_binaries)
116
- @installer.should_not_receive(:download_and_extract_nginx_sources)
117
- @installer.should_not_receive(:compile_nginx)
118
- @installer.run
119
-
120
- File.exist?("#{@temp_dir}/nginx/PassengerWebHelper").should be_true
121
- end
122
-
123
- def test_building_nginx_binary
124
- create_installer(:targets => [:nginx],
125
- :nginx_dir => "#{@temp_dir}/nginx",
126
- :lib_dir => PhusionPassenger.lib_dir)
127
-
128
- @installer.should_receive(:download).twice.and_return do |url, output|
129
- if url == nginx_binary_url
130
- false
131
- elsif url == nginx_source_url
132
- create_tarball(output) do
133
- create_dummy_nginx_source
134
- end
135
- true
136
- else
137
- raise "Unexpected download URL: #{url}"
138
- end
139
- end
140
-
141
- @installer.should_receive(:check_for_download_tool)
142
- @installer.should_receive(:check_dependencies).and_return(true)
143
- @installer.should_not_receive(:compile_support_binaries)
144
- @installer.should_receive(:strip_binary).
145
- with(an_instance_of(String)).
146
- and_return(true)
147
- @installer.run
148
-
149
- File.read("#{@temp_dir}/nginx/PassengerWebHelper").should == "ok\n"
150
- File.read("#{@temp_dir}/configure.txt").should include(
151
- "--add-module=#{PhusionPassenger.nginx_module_source_dir}")
152
- end
153
-
154
- context "when originally packaged" do
155
- before :each do
156
- PhusionPassenger.stub(:originally_packaged?).and_return(true)
157
- PhusionPassenger.stub(:natively_packaged?).and_return(false)
158
- end
159
-
160
- it "downloads the support binaries from the Internet if :support_binaries is specified as target" do
161
- create_installer(:targets => [:support_binaries],
162
- :support_dir => "#{@temp_dir}/support")
163
-
164
- @installer.should_receive(:download).
165
- and_return do |url, output, options|
166
- url.should == "#{binaries_url_root}/#{version}/support-#{cxx_compat_id}.tar.gz"
167
- options[:use_cache].should be_true
168
- create_tarball(output) do
169
- create_dummy_support_binaries
170
- end
171
- true
172
- end
173
-
174
- @installer.should_receive(:check_for_download_tool)
175
- @installer.should_not_receive(:check_depdendencies)
176
- @installer.should_not_receive(:compile_support_binaries)
177
- @installer.should_not_receive(:download_and_extract_nginx_sources)
178
- @installer.should_not_receive(:compile_nginx)
179
- @installer.run
180
-
181
- File.exist?("#{@temp_dir}/support/support-binaries/#{AGENT_EXE}").should be_true
182
- end
183
-
184
- it "downloads the Nginx binary from the Internet if :nginx is specified as target" do
185
- test_download_nginx_binary
186
- end
187
-
188
- it "downloads everything if :support_binaries and :nginx are both specified as target" do
189
- create_installer(:targets => [:support_binaries, :nginx],
190
- :support_dir => "#{@temp_dir}/support",
191
- :nginx_dir => "#{@temp_dir}/nginx",
192
- :lib_dir => PhusionPassenger.lib_dir)
193
-
194
- @installer.should_receive(:download).
195
- twice.
196
- and_return do |url, output, options|
197
- if url == support_binaries_url
198
- create_tarball(output) do
199
- create_dummy_support_binaries
200
- end
201
- elsif url == nginx_binary_url
202
- create_tarball(output) do
203
- create_dummy_nginx_binary
204
- end
205
- else
206
- raise "Unexpected download URL: #{url}"
207
- end
208
- options[:use_cache].should be_true
209
- true
210
- end
211
-
212
- @installer.should_receive(:check_for_download_tool)
213
- @installer.should_not_receive(:check_depdendencies)
214
- @installer.should_not_receive(:compile_support_binaries)
215
- @installer.should_not_receive(:download_and_extract_nginx_sources)
216
- @installer.should_not_receive(:compile_nginx)
217
- @installer.run
218
-
219
- File.exist?("#{@temp_dir}/support/support-binaries/#{AGENT_EXE}").should be_true
220
- File.exist?("#{@temp_dir}/nginx/PassengerWebHelper").should be_true
221
- end
222
-
223
- it "builds the support binaries if it cannot be downloaded" do
224
- create_installer(:targets => [:support_binaries],
225
- :support_dir => "#{@temp_dir}/support")
226
- nginx_libs = COMMON_LIBRARY.
227
- only(*NGINX_LIBS_SELECTOR).
228
- set_output_dir("#{@temp_dir}/support/libpassenger_common").
229
- link_objects
230
- built_files = nil
231
-
232
- @installer.should_receive(:run_rake_task!).with(
233
- "nginx_without_native_support CACHING=false OUTPUT_DIR='#{@temp_dir}/support'").
234
- and_return do
235
- FileUtils.mkdir_p("#{@temp_dir}/support-binaries")
236
- create_file("#{@temp_dir}/support-binaries/#{AGENT_EXE}")
237
-
238
- nginx_libs.each do |object_filename|
239
- dir = File.dirname(object_filename)
240
- FileUtils.mkdir_p(dir)
241
- create_file(object_filename)
242
- end
243
-
244
- built_files = `find '#{@temp_dir}/support'`
245
- end
246
-
247
- @installer.should_receive(:check_for_download_tool)
248
- @installer.should_receive(:download).and_return(false)
249
- @installer.should_receive(:check_dependencies).and_return(true)
250
- @installer.should_not_receive(:download_and_extract_nginx_sources)
251
- @installer.should_not_receive(:compile_nginx)
252
- @installer.run
253
- `find '#{@temp_dir}/support'`.should == built_files
254
- end
255
-
256
- it "builds the Nginx binary if it cannot be downloaded" do
257
- test_building_nginx_binary
258
- end
259
-
260
- it "aborts if the support binaries cannot be built" do
261
- create_installer(:targets => [:support_binaries],
262
- :support_dir => "#{@temp_dir}/support")
263
-
264
- @installer.should_receive(:run_rake_task!).with(
265
- "nginx_without_native_support CACHING=false OUTPUT_DIR='#{@temp_dir}/support'").
266
- and_raise(RuntimeError, "Rake failed")
267
-
268
- @installer.should_receive(:check_for_download_tool)
269
- @installer.should_receive(:download).and_return(false)
270
- @installer.should_receive(:check_dependencies).and_return(true)
271
- @installer.should_not_receive(:download_and_extract_nginx_sources)
272
- @installer.should_not_receive(:compile_nginx)
273
- lambda { @installer.run }.should raise_error(SystemExit)
274
- @logs.string.should include("Rake failed")
275
- end
276
- end
277
-
278
- context "when natively packaged" do
279
- before :each do
280
- PhusionPassenger.stub(:source_root).and_return("/locations.ini")
281
- PhusionPassenger.stub(:originally_packaged?).and_return(false)
282
- PhusionPassenger.stub(:natively_packaged?).and_return(true)
283
- end
284
-
285
- it "refuses to accept :support_binaries as target" do
286
- block = lambda do
287
- create_installer(:targets => [:support_binaries],
288
- :support_dir => "#{@temp_dir}/support")
289
- end
290
- block.should raise_error(ArgumentError, /You cannot specify :support_binaries/)
291
- end
292
-
293
- it "downloads the Nginx binary from the Internet if :nginx is specified as target" do
294
- test_download_nginx_binary
295
- end
296
-
297
- it "builds the Nginx binary if it cannot be downloaded" do
298
- test_building_nginx_binary
299
- end
300
- end
301
-
302
- it "commits downloaded binaries after checking whether they're usable" do
303
- create_installer(:targets => [:support_binaries, :nginx],
304
- :support_dir => "#{@temp_dir}/support",
305
- :nginx_dir => "#{@temp_dir}/nginx",
306
- :lib_dir => PhusionPassenger.lib_dir)
307
-
308
- @installer.should_receive(:download).
309
- exactly(3).times.
310
- and_return do |url, output, options|
311
- if url == support_binaries_url
312
- options[:use_cache].should be_true
313
- create_tarball(output) do
314
- create_dummy_support_binaries
315
- end
316
- elsif url == nginx_binary_url
317
- options[:use_cache].should be_true
318
- create_tarball(output) do
319
- create_dummy_nginx_binary
320
- end
321
- elsif url == nginx_source_url
322
- create_tarball(output) do
323
- create_dummy_nginx_source
324
- end
325
- else
326
- raise "Unexpected download URL: #{url}"
327
- end
328
- true
329
- end
330
-
331
- @installer.should_receive(:check_for_download_tool)
332
- @installer.should_receive(:check_support_binaries).and_return(false)
333
- @installer.should_receive(:check_nginx_binary).and_return(false)
334
- @installer.should_receive(:check_dependencies).and_return(true)
335
- @installer.should_receive(:compile_support_binaries)
336
- @installer.should_receive(:compile_nginx)
337
- @installer.run
338
-
339
- Dir["#{@temp_dir}/nginx/*"].should be_empty
340
- Dir["#{@temp_dir}/support/*"].should be_empty
341
- end
342
-
343
- it "aborts if the Nginx source tarball cannot be extracted" do
344
- create_installer(:targets => [:nginx],
345
- :nginx_dir => "#{@temp_dir}/nginx",
346
- :lib_dir => PhusionPassenger.lib_dir)
347
-
348
- @installer.should_receive(:download).twice.and_return do |url, output, options|
349
- if url == nginx_binary_url
350
- false
351
- elsif url == nginx_source_url
352
- File.open(output, "w") do |f|
353
- f.write("garbage")
354
- end
355
- true
356
- else
357
- raise "Unexpected download URL: #{url}"
358
- end
359
- end
360
-
361
- @installer.should_receive(:check_for_download_tool)
362
- @installer.should_receive(:check_dependencies).and_return(true)
363
- @installer.should_not_receive(:compile_support_binaries)
364
- lambda { @installer.run }.should raise_error(SystemExit)
365
- @logs.string.should =~ %r{Unable to download or extract Nginx source tarball}
366
- end
367
-
368
- it "aborts if the Nginx binary cannot be built" do
369
- create_installer(:targets => [:nginx],
370
- :nginx_dir => "#{@temp_dir}/nginx",
371
- :lib_dir => PhusionPassenger.lib_dir)
372
-
373
- @installer.should_receive(:download).twice.and_return do |url, output, options|
374
- if url == nginx_binary_url
375
- false
376
- elsif url == nginx_source_url
377
- create_tarball(output) do
378
- Dir.mkdir("nginx-#{nginx_version}")
379
- File.open("nginx-#{nginx_version}/configure", "w") do |f|
380
- f.puts("#!/bin/bash")
381
- f.puts("echo error")
382
- f.puts("exit 1")
383
- end
384
- File.chmod(0700, "nginx-#{nginx_version}/configure")
385
- end
386
- true
387
- else
388
- raise "Unexpected download URL: #{url}"
389
- end
390
- end
391
-
392
- @installer.should_receive(:check_for_download_tool)
393
- @installer.should_receive(:check_dependencies).and_return(true)
394
- @installer.should_not_receive(:compile_support_binaries)
395
- lambda { @installer.run }.should raise_error(SystemExit)
396
- @logs.string.should =~ %r{command failed:.*./configure}
397
- end
398
- end
399
-
400
- end # module Standalone
401
- end # module PhusionPassenger
402
- end