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,288 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
- require 'stringio'
3
- require 'tmpdir'
4
- require 'fileutils'
5
- PhusionPassenger.require_passenger_lib 'union_station/core'
6
-
7
- module PhusionPassenger
8
-
9
- describe UnionStation::Core do
10
- YESTERDAY = Time.utc(2010, 4, 11, 11, 56, 02)
11
- TODAY = Time.utc(2010, 4, 11, 12, 56, 02)
12
- TOMORROW = Time.utc(2010, 4, 11, 13, 56, 02)
13
-
14
- before :each do
15
- @username = "logging"
16
- @password = "1234"
17
- @tmpdir = Dir.mktmpdir
18
- @dump_file = "#{@tmpdir}/transaction.txt"
19
- start_agent
20
- @core = UnionStation::Core.new(@socket_address, @username, @password, "localhost")
21
- @core2 = UnionStation::Core.new(@socket_address, @username, @password, "localhost")
22
- end
23
-
24
- after :each do
25
- @core.close
26
- @core2.close
27
- FileUtils.rm_rf(@tmpdir) if @tmpdir
28
- if @agent_pid
29
- Process.kill('KILL', @agent_pid)
30
- Process.waitpid(@agent_pid)
31
- end
32
- end
33
-
34
- def mock_time(time)
35
- UnionStation::Core.stub(:current_time).and_return(time)
36
- end
37
-
38
- def start_agent
39
- @agent_pid, @socket_filename, @socket_address = spawn_logging_agent(
40
- @tmpdir, @dump_file, @password)
41
- end
42
-
43
- def kill_agent
44
- if @agent_pid
45
- Process.kill('KILL', @agent_pid)
46
- Process.waitpid(@agent_pid)
47
- File.unlink(@socket_filename)
48
- @agent_pid = nil
49
- end
50
- end
51
-
52
- specify "logging with #new_transaction works" do
53
- mock_time(TODAY)
54
-
55
- transaction = @core.new_transaction("foobar")
56
- transaction.should_not be_null
57
- begin
58
- transaction.message("hello")
59
- ensure
60
- transaction.close(true)
61
- end
62
-
63
- File.read(@dump_file).should =~ /hello/
64
-
65
- transaction = @core.new_transaction("foobar", :processes)
66
- transaction.should_not be_null
67
- begin
68
- transaction.message("world")
69
- ensure
70
- transaction.close(true)
71
- end
72
-
73
- File.read(@dump_file).should =~ /world/
74
- end
75
-
76
- specify "#new_transaction reestablishes the connection if disconnected" do
77
- mock_time(TODAY)
78
-
79
- @core.new_transaction("foobar").close(true)
80
- connection = @core.instance_variable_get(:"@connection")
81
- connection.synchronize do
82
- connection.channel.close
83
- connection.channel = nil
84
- end
85
-
86
- transaction = @core.new_transaction("foobar")
87
- begin
88
- transaction.message("hello")
89
- ensure
90
- transaction.close(true)
91
- end
92
-
93
- File.read(@dump_file).should =~ /hello/
94
- end
95
-
96
- specify "#new_transaction does not reconnect to the server for a short period of time if connecting failed" do
97
- @core.reconnect_timeout = 60
98
- @core.max_connect_tries = 1
99
-
100
- mock_time(TODAY)
101
- kill_agent
102
- @core.new_transaction("foobar").should be_null
103
-
104
- mock_time(TODAY + 30)
105
- start_agent
106
- @core.new_transaction("foobar").should be_null
107
-
108
- mock_time(TODAY + 61)
109
- @core.new_transaction("foobar").should_not be_null
110
- end
111
-
112
- specify "logging with #continue_transaction works" do
113
- mock_time(TODAY)
114
-
115
- transaction = @core.new_transaction("foobar", :processes)
116
- begin
117
- transaction.message("hello")
118
- transaction2 = @core2.continue_transaction(transaction.txn_id, "foobar", :processes)
119
- transaction2.should_not be_null
120
- transaction2.txn_id.should == transaction.txn_id
121
- begin
122
- transaction2.message("world")
123
- ensure
124
- transaction2.close(true)
125
- end
126
- ensure
127
- transaction.close(true)
128
- end
129
-
130
- File.read(@dump_file).should =~ /#{Regexp.escape transaction.txn_id} .* hello$/
131
- File.read(@dump_file).should =~ /#{Regexp.escape transaction.txn_id} .* world$/
132
- end
133
-
134
- specify "#continue_transaction reestablishes the connection if disconnected" do
135
- mock_time(TODAY)
136
-
137
- transaction = @core.new_transaction("foobar")
138
- transaction.close(true)
139
- transaction2 = @core2.continue_transaction(transaction.txn_id, "foobar")
140
- transaction2.close(true)
141
-
142
- connection = @core2.instance_variable_get(:"@connection")
143
- connection.synchronize do
144
- connection.channel.close
145
- connection.channel = nil
146
- end
147
-
148
- transaction2 = @core2.continue_transaction(transaction.txn_id, "foobar")
149
- begin
150
- transaction2.message("hello")
151
- ensure
152
- transaction2.close(true)
153
- end
154
-
155
- File.read(@dump_file).should =~ /hello/
156
- end
157
-
158
- specify "#new_transaction and #continue_transaction eventually reestablish the connection to the logging server if the logging server crashed and was restarted" do
159
- mock_time(TODAY)
160
-
161
- transaction = @core.new_transaction("foobar")
162
- @core2.continue_transaction(transaction.txn_id, "foobar").close
163
- kill_agent
164
- start_agent
165
-
166
- transaction = @core.new_transaction("foobar")
167
- transaction.should be_null
168
- transaction2 = @core2.continue_transaction("1234-abcd", "foobar")
169
- transaction2.should be_null
170
-
171
- mock_time(TODAY + 60)
172
- transaction = @core.new_transaction("foobar")
173
- transaction2 = @core2.continue_transaction(transaction.txn_id, "foobar")
174
- begin
175
- transaction2.message("hello")
176
- ensure
177
- transaction2.close(true)
178
- end
179
- transaction.close(true)
180
-
181
- File.read(@dump_file).should =~ /hello/
182
- end
183
-
184
- specify "#continue_transaction does not reconnect to the server for a short period of time if connecting failed" do
185
- @core.reconnect_timeout = 60
186
- @core.max_connect_tries = 1
187
- @core2.reconnect_timeout = 60
188
- @core2.max_connect_tries = 1
189
-
190
- mock_time(TODAY)
191
- transaction = @core.new_transaction("foobar")
192
- @core2.continue_transaction(transaction.txn_id, "foobar")
193
- kill_agent
194
- @core2.continue_transaction(transaction.txn_id, "foobar").should be_null
195
-
196
- mock_time(TODAY + 30)
197
- start_agent
198
- @core2.continue_transaction(transaction.txn_id, "foobar").should be_null
199
-
200
- mock_time(TODAY + 61)
201
- @core2.continue_transaction(transaction.txn_id, "foobar").should_not be_null
202
- end
203
-
204
- it "only creates null Transaction objects if no server address is given" do
205
- core = UnionStation::Core.new(nil, nil, nil, nil)
206
- begin
207
- core.new_transaction("foobar").should be_null
208
- ensure
209
- core.close
210
- end
211
- end
212
-
213
- specify "#clear_connection closes the connection" do
214
- @core.new_transaction("foobar").close
215
- @core.clear_connection
216
- connection = @core.instance_variable_get(:"@connection")
217
- connection.synchronize do
218
- connection.channel.should be_nil
219
- end
220
- end
221
-
222
- describe "transaction objects" do
223
- it "becomes null once it is closed" do
224
- transaction = @core.new_transaction("foobar")
225
- transaction.close
226
- transaction.should be_null
227
- end
228
-
229
- it "does nothing if it's null" do
230
- logger = UnionStation::Core.new(nil, nil, nil, nil)
231
- begin
232
- transaction = logger.new_transaction("foobar")
233
- transaction.message("hello")
234
- transaction.close(true)
235
- ensure
236
- logger.close
237
- end
238
-
239
- File.exist?("#{@log_dir}/1").should be_false
240
- end
241
-
242
- describe "#begin_measure" do
243
- it "sends a BEGIN message" do
244
- transaction = @core.new_transaction("foobar")
245
- begin
246
- transaction.should_receive(:message).with(/^BEGIN: hello \(.+?,.+?,.+?\) $/)
247
- transaction.begin_measure("hello")
248
- ensure
249
- transaction.close
250
- end
251
- end
252
-
253
- it "adds extra information as base64" do
254
- transaction = @core.new_transaction("foobar")
255
- begin
256
- transaction.should_receive(:message).with(/^BEGIN: hello \(.+?,.+?,.+?\) YWJjZA==$/)
257
- transaction.begin_measure("hello", "abcd")
258
- ensure
259
- transaction.close
260
- end
261
- end
262
- end
263
-
264
- describe "#end_measure" do
265
- it "sends an END message if error_countered=false" do
266
- transaction = @core.new_transaction("foobar")
267
- begin
268
- transaction.should_receive(:message).with(/^END: hello \(.+?,.+?,.+?\)$/)
269
- transaction.end_measure("hello")
270
- ensure
271
- transaction.close
272
- end
273
- end
274
-
275
- it "sends a FAIL message if error_countered=true" do
276
- transaction = @core.new_transaction("foobar")
277
- begin
278
- transaction.should_receive(:message).with(/^FAIL: hello \(.+?,.+?,.+?\)$/)
279
- transaction.end_measure("hello", true)
280
- ensure
281
- transaction.close
282
- end
283
- end
284
- end
285
- end
286
- end
287
-
288
- end # module PhusionPassenger
@@ -1,229 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- PhusionPassenger.require_passenger_lib 'utils/file_system_watcher'
3
-
4
- module PhusionPassenger
5
-
6
- describe Utils::FileSystemWatcher do
7
- before :each do
8
- @tmpdir = "tmp.fs_watcher"
9
- @tmpdir2 = "tmp.fs_watcher2"
10
- @tmpdir3 = "tmp.fs_watcher3"
11
- @term_pipe = IO.pipe
12
- [@tmpdir, @tmpdir2, @tmpdir3].each do |dir|
13
- remove_dir_tree(dir)
14
- Dir.mkdir(dir)
15
- end
16
- end
17
-
18
- after :each do
19
- if @thread
20
- @term_pipe[1].write("x")
21
- @thread.join
22
- end
23
- @watcher.close if @watcher
24
- @term_pipe[0].close
25
- @term_pipe[1].close
26
- [@tmpdir, @tmpdir2, @tmpdir3].each do |dir|
27
- remove_dir_tree(dir)
28
- end
29
- end
30
-
31
- def create(*args)
32
- @watcher = Utils::FileSystemWatcher.new(*args)
33
- @watcher.poll_interval = 0.1 if @watcher.respond_to?(:poll_interval=)
34
- return @watcher
35
- end
36
-
37
- describe "#wait_for_change blocks until" do
38
- def test_block(filenames)
39
- create(filenames, @term_pipe[0])
40
- result = nil
41
- thread = Thread.new do
42
- result = @watcher.wait_for_change
43
- end
44
- yield if block_given?
45
- eventually do
46
- !thread.alive?
47
- end
48
- return result
49
- ensure
50
- if thread
51
- @term_pipe[1].write("x")
52
- thread.join
53
- end
54
- @watcher.close
55
- end
56
-
57
- specify "a subdirectory has been created in one of the watched directories" do
58
- result = test_block([@tmpdir, @tmpdir2]) do
59
- Dir.mkdir("#{@tmpdir}/foo")
60
- end
61
- result.should be_true
62
- end
63
-
64
- specify "a subdirectory has been removed in one of the watched directories" do
65
- Dir.mkdir("#{@tmpdir2}/foo")
66
- result = test_block([@tmpdir, @tmpdir2]) do
67
- Dir.rmdir("#{@tmpdir2}/foo")
68
- end
69
- result.should be_true
70
- end
71
-
72
- specify "a subdirectory has been renamed in one of the watched directories" do
73
- Dir.mkdir("#{@tmpdir}/foo")
74
- result = test_block([@tmpdir, @tmpdir2]) do
75
- File.rename("#{@tmpdir}/foo", "#{@tmpdir3}/bar")
76
- end
77
- result.should be_true
78
- end
79
-
80
- specify "a file has been created in one of the watched directories" do
81
- result = test_block([@tmpdir, @tmpdir2]) do
82
- File.touch("#{@tmpdir}/foo")
83
- end
84
- result.should be_true
85
- end
86
-
87
- specify "a file has been removed in one of the watched directories" do
88
- File.touch("#{@tmpdir2}/foo")
89
- result = test_block([@tmpdir, @tmpdir2]) do
90
- File.unlink("#{@tmpdir2}/foo")
91
- end
92
- result.should be_true
93
- end
94
-
95
- specify "a file has been renamed in one of the watched directories" do
96
- File.touch("#{@tmpdir}/foo")
97
- result = test_block([@tmpdir, @tmpdir2]) do
98
- File.rename("#{@tmpdir}/foo", "#{@tmpdir3}/bar")
99
- end
100
- result.should be_true
101
- end
102
-
103
- specify "a watched file has been written to" do
104
- File.touch("#{@tmpdir}/foo")
105
- result = test_block(["#{@tmpdir}/foo"]) do
106
- File.write("#{@tmpdir}/foo", "bar")
107
- end
108
- end
109
-
110
- specify "a watched file has been truncated" do
111
- File.write("#{@tmpdir}/foo", "contents")
112
- result = test_block(["#{@tmpdir}/foo"]) do
113
- if RUBY_PLATFORM =~ /darwin/
114
- # OS X kernel bug in kqueue... sigh...
115
- File.open("#{@tmpdir}/foo", "w") do |f|
116
- f.write("a")
117
- f.truncate(0)
118
- end
119
- else
120
- File.open("#{@tmpdir}/foo", "w").close
121
- end
122
- end
123
- end
124
-
125
- specify "a watched file has been removed" do
126
- File.touch("#{@tmpdir}/foo")
127
- result = test_block(["#{@tmpdir}/foo"]) do
128
- File.unlink("#{@tmpdir}/foo")
129
- end
130
- end
131
-
132
- specify "a watched file has been renamed" do
133
- File.touch("#{@tmpdir}/foo")
134
- result = test_block(["#{@tmpdir}/foo"]) do
135
- File.rename("#{@tmpdir}/foo", "#{@tmpdir}/bar")
136
- end
137
- end
138
-
139
- specify "the termination pipe became readable" do
140
- result = test_block([@tmpdir]) do
141
- @term_pipe[1].write("x")
142
- end
143
- result.should be_nil
144
- end
145
-
146
- specify "one of the watched files or directories could not be statted while constructing the object" do
147
- test_block([@tmpdir, "#{@tmpdir}/foo"]).should be_false
148
-
149
- when_not_running_as_root do
150
- Dir.mkdir("#{@tmpdir}/foo")
151
- File.touch("#{@tmpdir}/foo/file")
152
- Dir.mkdir("#{@tmpdir}/foo/dir")
153
- File.chmod(0000, "#{@tmpdir}/foo")
154
-
155
- test_block([@tmpdir, "#{@tmpdir}/foo/file"]).should be_false
156
- test_block([@tmpdir, "#{@tmpdir}/foo/dir"]).should be_false
157
- end
158
- end
159
-
160
- if Utils::FileSystemWatcher.opens_files?
161
- when_not_running_as_root do
162
- specify "one of the watched files or directories could not be opened while constructing the object" do
163
- File.touch("#{@tmpdir}/file")
164
- File.chmod(0000, "#{@tmpdir}/file")
165
- test_block([@tmpdir, "#{@tmpdir}/file"]).should be_false
166
-
167
- Dir.mkdir("#{@tmpdir}/dir")
168
- File.chmod(0000, "#{@tmpdir}/dir")
169
- test_block([@tmpdir, "#{@tmpdir}/dir"]).should be_false
170
- end
171
- end
172
- end # if
173
- end
174
-
175
- describe "#wait_for_change does not return if" do
176
- def test_block(filenames)
177
- create(filenames, @term_pipe[0])
178
- @thread = Thread.new do
179
- @watcher.wait_for_change
180
- end
181
- yield
182
- should_never_happen(0.4) do
183
- !@thread.alive?
184
- end
185
- end
186
-
187
- specify "nothing happened in one of its watched files or directories" do
188
- test_block([@tmpdir, @tmpdir2]) do
189
- File.touch("#{@tmpdir3}/file")
190
- Dir.mkdir("#{@tmpdir3}/dir")
191
- end
192
- end
193
-
194
- specify "something happened in a subdirectory that isn't on the watch list" do
195
- # In other words it does not watch subdirectories recursively.
196
- Dir.mkdir("#{@tmpdir}/subdir")
197
- test_block([@tmpdir, @tmpdir2]) do
198
- File.touch("#{@tmpdir}/subdir/file")
199
- end
200
- end
201
-
202
- specify "a file in a watched directory is merely modified" do
203
- File.touch("#{@tmpdir}/hello", 10)
204
- test_block([@tmpdir, @tmpdir2]) do
205
- File.touch("#{@tmpdir}/hello", 4567)
206
- File.write("#{@tmpdir}/hello", "foobar")
207
- end
208
- end
209
- end
210
-
211
- specify "#wait_for_change notices events that have occurred after object construction but before #wait_for_change has been called" do
212
- create([@tmpdir, @tmpdir2], @term_pipe[0])
213
- @thread = Thread.new do
214
- @watcher.wait_for_change
215
- end
216
- File.touch("#{@tmpdir}/foo", Time.now - 10)
217
- eventually do
218
- !@thread.alive?
219
- end
220
- end
221
-
222
- it "can be closed multiple times" do
223
- create([@tmpdir])
224
- @watcher.close
225
- @watcher.close
226
- end
227
- end
228
-
229
- end # module PhusionPassenger