passenger 5.0.0.beta3 → 5.0.0.rc1
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.
- checksums.yaml +8 -8
- checksums.yaml.gz.asc +7 -7
- data.tar.gz.asc +7 -7
- data/.editorconfig +11 -5
- data/CHANGELOG +38 -0
- data/CONTRIBUTING.md +1 -4
- data/Gemfile +0 -1
- data/Gemfile.lock +0 -2
- data/Rakefile +33 -33
- data/bin/passenger +1 -1
- data/bin/passenger-config +1 -1
- data/bin/passenger-install-apache2-module +800 -800
- data/bin/passenger-install-nginx-module +592 -592
- data/bin/passenger-memory-stats +127 -127
- data/bin/passenger-status +216 -216
- data/build/agents.rb +127 -127
- data/build/apache2.rb +87 -87
- data/build/basics.rb +60 -60
- data/build/common_library.rb +165 -165
- data/build/cplusplus_support.rb +51 -51
- data/build/cxx_tests.rb +268 -268
- data/build/debian.rb +143 -143
- data/build/documentation.rb +58 -58
- data/build/integration_tests.rb +81 -81
- data/build/misc.rb +132 -132
- data/build/nginx.rb +20 -20
- data/build/node_tests.rb +7 -7
- data/build/oxt_tests.rb +14 -14
- data/build/packaging.rb +570 -570
- data/build/preprocessor.rb +260 -260
- data/build/rake_extensions.rb +71 -71
- data/build/ruby_extension.rb +29 -29
- data/build/ruby_tests.rb +6 -6
- data/build/test_basics.rb +37 -37
- data/debian.template/control.template +3 -5
- data/dev/copy_boost_headers +134 -134
- data/dev/install_scripts_bootstrap_code.rb +25 -25
- data/dev/list_tests +20 -20
- data/dev/ruby_server.rb +223 -223
- data/dev/runner +18 -18
- data/doc/ServerOptimizationGuide.txt.md +55 -2
- data/doc/Users guide Nginx.txt +0 -26
- data/doc/Users guide Standalone.txt +5 -1
- data/doc/users_guide_snippets/tips.txt +9 -0
- data/ext/common/ApplicationPool2/Group.h +23 -11
- data/ext/common/ApplicationPool2/Implementation.cpp +32 -7
- data/ext/common/ApplicationPool2/Pool.h +22 -17
- data/ext/common/ApplicationPool2/SmartSpawner.h +4 -1
- data/ext/common/ApplicationPool2/Spawner.h +1 -1
- data/ext/common/Constants.h +1 -1
- data/ext/common/agents/Base.cpp +35 -20
- data/ext/common/agents/HelperAgent/Main.cpp +8 -1
- data/ext/common/agents/HelperAgent/OptionParser.h +18 -4
- data/ext/common/agents/HelperAgent/RequestHandler.h +2 -83
- data/ext/common/agents/HelperAgent/RequestHandler/ForwardResponse.cpp +54 -1
- data/ext/common/agents/HelperAgent/RequestHandler/InitRequest.cpp +7 -4
- data/ext/common/agents/Main.cpp +1 -1
- data/ext/common/agents/Watchdog/Main.cpp +54 -19
- data/ext/nginx/Configuration.c +7 -0
- data/ext/nginx/ContentHandler.c +9 -1
- data/helper-scripts/backtrace-sanitizer.rb +106 -87
- data/helper-scripts/crash-watch.rb +32 -0
- data/helper-scripts/download_binaries/extconf.rb +38 -38
- data/helper-scripts/meteor-loader.rb +107 -107
- data/helper-scripts/prespawn +101 -101
- data/helper-scripts/rack-loader.rb +96 -96
- data/helper-scripts/rack-preloader.rb +137 -137
- data/lib/phusion_passenger.rb +292 -292
- data/lib/phusion_passenger/abstract_installer.rb +438 -438
- data/lib/phusion_passenger/active_support3_extensions/init.rb +168 -170
- data/lib/phusion_passenger/admin_tools.rb +20 -20
- data/lib/phusion_passenger/admin_tools/instance.rb +178 -178
- data/lib/phusion_passenger/admin_tools/instance_registry.rb +61 -61
- data/lib/phusion_passenger/admin_tools/memory_stats.rb +267 -267
- data/lib/phusion_passenger/apache2/config_options.rb +182 -182
- data/lib/phusion_passenger/common_library.rb +479 -485
- data/lib/phusion_passenger/config/about_command.rb +161 -161
- data/lib/phusion_passenger/config/admin_command_command.rb +129 -129
- data/lib/phusion_passenger/config/agent_compiler.rb +121 -121
- data/lib/phusion_passenger/config/build_native_support_command.rb +43 -43
- data/lib/phusion_passenger/config/command.rb +25 -25
- data/lib/phusion_passenger/config/compile_agent_command.rb +62 -62
- data/lib/phusion_passenger/config/compile_nginx_engine_command.rb +88 -73
- data/lib/phusion_passenger/config/detach_process_command.rb +72 -72
- data/lib/phusion_passenger/config/download_agent_command.rb +246 -227
- data/lib/phusion_passenger/config/download_nginx_engine_command.rb +245 -224
- data/lib/phusion_passenger/config/install_agent_command.rb +144 -132
- data/lib/phusion_passenger/config/install_standalone_runtime_command.rb +205 -185
- data/lib/phusion_passenger/config/installation_utils.rb +204 -204
- data/lib/phusion_passenger/config/list_instances_command.rb +64 -64
- data/lib/phusion_passenger/config/main.rb +152 -152
- data/lib/phusion_passenger/config/nginx_engine_compiler.rb +319 -300
- data/lib/phusion_passenger/config/reopen_logs_command.rb +67 -67
- data/lib/phusion_passenger/config/restart_app_command.rb +155 -155
- data/lib/phusion_passenger/config/system_metrics_command.rb +13 -13
- data/lib/phusion_passenger/config/utils.rb +95 -95
- data/lib/phusion_passenger/config/validate_install_command.rb +198 -198
- data/lib/phusion_passenger/console_text_template.rb +25 -25
- data/lib/phusion_passenger/constants.rb +90 -90
- data/lib/phusion_passenger/debug_logging.rb +106 -106
- data/lib/phusion_passenger/loader_shared_helpers.rb +447 -432
- data/lib/phusion_passenger/message_channel.rb +312 -312
- data/lib/phusion_passenger/message_client.rb +176 -176
- data/lib/phusion_passenger/native_support.rb +369 -369
- data/lib/phusion_passenger/nginx/config_options.rb +297 -297
- data/lib/phusion_passenger/packaging.rb +131 -131
- data/lib/phusion_passenger/platform_info.rb +360 -360
- data/lib/phusion_passenger/platform_info/apache.rb +767 -767
- data/lib/phusion_passenger/platform_info/apache_detector.rb +199 -199
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +107 -107
- data/lib/phusion_passenger/platform_info/compiler.rb +570 -570
- data/lib/phusion_passenger/platform_info/curl.rb +32 -32
- data/lib/phusion_passenger/platform_info/cxx_portability.rb +188 -188
- data/lib/phusion_passenger/platform_info/depcheck.rb +372 -372
- data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +109 -109
- data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
- data/lib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -34
- data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +101 -101
- data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -5
- data/lib/phusion_passenger/platform_info/depcheck_specs/utilities.rb +13 -13
- data/lib/phusion_passenger/platform_info/linux.rb +55 -55
- data/lib/phusion_passenger/platform_info/operating_system.rb +149 -149
- data/lib/phusion_passenger/platform_info/ruby.rb +468 -448
- data/lib/phusion_passenger/platform_info/zlib.rb +9 -9
- data/lib/phusion_passenger/plugin.rb +66 -66
- data/lib/phusion_passenger/preloader_shared_helpers.rb +126 -126
- data/lib/phusion_passenger/public_api.rb +191 -191
- data/lib/phusion_passenger/rack/out_of_band_gc.rb +93 -94
- data/lib/phusion_passenger/rack/thread_handler_extension.rb +231 -227
- data/lib/phusion_passenger/request_handler.rb +567 -577
- data/lib/phusion_passenger/request_handler/thread_handler.rb +379 -381
- data/lib/phusion_passenger/ruby_core_enhancements.rb +86 -86
- data/lib/phusion_passenger/ruby_core_io_enhancements.rb +74 -74
- data/lib/phusion_passenger/simple_benchmarking.rb +25 -25
- data/lib/phusion_passenger/standalone/app_finder.rb +153 -150
- data/lib/phusion_passenger/standalone/command.rb +44 -40
- data/lib/phusion_passenger/standalone/config_utils.rb +53 -53
- data/lib/phusion_passenger/standalone/control_utils.rb +38 -59
- data/lib/phusion_passenger/standalone/main.rb +73 -73
- data/lib/phusion_passenger/standalone/start_command.rb +697 -685
- data/lib/phusion_passenger/standalone/start_command/builtin_engine.rb +193 -155
- data/lib/phusion_passenger/standalone/start_command/nginx_engine.rb +162 -133
- data/lib/phusion_passenger/standalone/status_command.rb +64 -64
- data/lib/phusion_passenger/standalone/stop_command.rb +72 -72
- data/lib/phusion_passenger/standalone/version_command.rb +9 -9
- data/lib/phusion_passenger/union_station/connection.rb +32 -32
- data/lib/phusion_passenger/union_station/core.rb +251 -251
- data/lib/phusion_passenger/union_station/transaction.rb +126 -126
- data/lib/phusion_passenger/utils.rb +199 -167
- data/lib/phusion_passenger/utils/ansi_colors.rb +128 -128
- data/lib/phusion_passenger/utils/download.rb +196 -196
- data/lib/phusion_passenger/utils/file_system_watcher.rb +158 -158
- data/lib/phusion_passenger/utils/hosts_file_parser.rb +101 -101
- data/lib/phusion_passenger/utils/lock.rb +31 -31
- data/lib/phusion_passenger/utils/native_support_utils.rb +31 -31
- data/lib/phusion_passenger/utils/progress_bar.rb +26 -26
- data/lib/phusion_passenger/utils/shellwords.rb +20 -20
- data/lib/phusion_passenger/utils/terminal_choice_menu.rb +206 -206
- data/lib/phusion_passenger/utils/unseekable_socket.rb +272 -272
- data/lib/phusion_passenger/vendor/crash_watch/app.rb +129 -0
- data/lib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +341 -0
- data/lib/phusion_passenger/vendor/crash_watch/version.rb +24 -0
- data/lib/phusion_passenger/vendor/daemon_controller.rb +877 -0
- data/lib/phusion_passenger/vendor/daemon_controller/lock_file.rb +127 -0
- data/lib/phusion_passenger/vendor/daemon_controller/spawn.rb +26 -0
- data/lib/phusion_passenger/vendor/daemon_controller/version.rb +29 -0
- data/packaging/rpm/passenger_spec/passenger.spec.template +0 -1
- data/passenger.gemspec +0 -1
- data/resources/templates/config/nginx_engine_compiler/possible_solutions_for_download_and_extraction_problems.txt.erb +27 -0
- data/resources/templates/standalone/config.erb +19 -15
- data/test/integration_tests/apache2_tests.rb +566 -566
- data/test/integration_tests/downloaded_binaries_tests.rb +126 -125
- data/test/integration_tests/native_packaging_spec.rb +296 -296
- data/test/integration_tests/nginx_tests.rb +393 -393
- data/test/integration_tests/shared/example_webapp_tests.rb +282 -280
- data/test/integration_tests/source_packaging_test.rb +138 -138
- data/test/integration_tests/spec_helper.rb +5 -5
- data/test/integration_tests/standalone_tests.rb +367 -367
- data/test/ruby/debug_logging_spec.rb +133 -133
- data/test/ruby/message_channel_spec.rb +186 -186
- data/test/ruby/rack/loader_spec.rb +28 -28
- data/test/ruby/rack/preloader_spec.rb +34 -34
- data/test/ruby/rails3.0/loader_spec.rb +12 -12
- data/test/ruby/rails3.0/preloader_spec.rb +18 -18
- data/test/ruby/rails3.1/loader_spec.rb +12 -12
- data/test/ruby/rails3.1/preloader_spec.rb +18 -18
- data/test/ruby/rails3.2/loader_spec.rb +12 -12
- data/test/ruby/rails3.2/preloader_spec.rb +18 -18
- data/test/ruby/rails4.0/loader_spec.rb +12 -12
- data/test/ruby/rails4.0/preloader_spec.rb +18 -18
- data/test/ruby/rails4.1/loader_spec.rb +12 -12
- data/test/ruby/rails4.1/preloader_spec.rb +18 -18
- data/test/ruby/request_handler_spec.rb +730 -730
- data/test/ruby/shared/loader_sharedspec.rb +224 -224
- data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +327 -327
- data/test/ruby/shared/ruby_loader_sharedspec.rb +47 -47
- data/test/ruby/spec_helper.rb +65 -65
- data/test/ruby/standalone/runtime_installer_spec.rb +384 -384
- data/test/ruby/union_station_spec.rb +276 -276
- data/test/ruby/utils/file_system_watcher_spec.rb +220 -220
- data/test/ruby/utils/hosts_file_parser.rb +248 -248
- data/test/ruby/utils/tee_input_spec.rb +215 -215
- data/test/ruby/utils/unseekable_socket_spec.rb +57 -57
- data/test/ruby/utils_spec.rb +21 -21
- data/test/stub/rack/config.ru +87 -87
- data/test/stub/rack/library.rb +8 -8
- data/test/stub/rack/start.rb +30 -30
- data/test/support/apache2_controller.rb +191 -191
- data/test/support/nginx_controller.rb +90 -99
- data/test/support/placebo-preloader.rb +57 -57
- data/test/support/test_helper.rb +435 -435
- metadata +11 -21
- metadata.gz.asc +7 -7
- data/lib/phusion_passenger/standalone/command2.rb +0 -292
- data/lib/phusion_passenger/standalone/start2_command.rb +0 -799
- data/resources/templates/standalone/download_tool_missing.txt.erb +0 -18
- data/resources/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -17
- data/resources/templates/standalone/run_installer_as_root.txt.erb +0 -8
@@ -35,167 +35,167 @@ require 'yaml'
|
|
35
35
|
PACKAGE_NAME = PhusionPassenger::PACKAGE_NAME
|
36
36
|
VERSION = PhusionPassenger::VERSION_STRING
|
37
37
|
if RUBY_PLATFORM =~ /linux/
|
38
|
-
|
38
|
+
TAR = "tar --warning=none"
|
39
39
|
else
|
40
|
-
|
40
|
+
TAR = "tar"
|
41
41
|
end
|
42
42
|
|
43
43
|
def sh(*command)
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
if !system(*command)
|
45
|
+
abort "Command failed: #{command.join(' ')}"
|
46
|
+
end
|
47
47
|
end
|
48
48
|
|
49
49
|
shared_examples_for "a proper package" do
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
50
|
+
it "includes all files in the git repository" do
|
51
|
+
git_files = `git ls-files`.split("\n")
|
52
|
+
git_files.reject! { |filename| filename =~ /^Passenger.xcodeproj\// }
|
53
|
+
git_files.delete(".gitmodules")
|
54
|
+
git_files.delete("packaging/rpm")
|
55
|
+
git_files.delete("ext/libeio/eio.3")
|
56
|
+
git_files.delete("ext/libeio/eio.pod")
|
57
|
+
|
58
|
+
package_files = {}
|
59
|
+
Dir.chdir(@pkg_contents_dir) do
|
60
|
+
`find .`.split("\n").each do |filename|
|
61
|
+
filename.sub!(/^.\//, '')
|
62
|
+
if !File.directory?(filename)
|
63
|
+
package_files[filename] = true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
error = false
|
69
|
+
git_files.each do |filename|
|
70
|
+
if !package_files[filename]
|
71
|
+
error = true
|
72
|
+
puts "File \"#{filename}\" is not in the package"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
raise "Some files are not in the package" if error
|
76
|
+
end
|
77
|
+
|
78
|
+
it "includes documentation HTML files" do
|
79
|
+
File.exist?("#{@pkg_contents_dir}/doc/Users guide Apache.html").should be_true
|
80
|
+
File.exist?("#{@pkg_contents_dir}/doc/Users guide Nginx.html").should be_true
|
81
|
+
File.exist?("#{@pkg_contents_dir}/doc/Users guide Standalone.html").should be_true
|
82
|
+
end
|
83
83
|
end
|
84
84
|
|
85
85
|
shared_examples_for "a user-generated package" do
|
86
|
-
|
87
|
-
|
88
|
-
|
86
|
+
it "isn't marked official" do
|
87
|
+
File.exist?("#{@pkg_contents_dir}/resources/release.txt").should be_false
|
88
|
+
end
|
89
89
|
end
|
90
90
|
|
91
91
|
shared_examples_for "an official package" do
|
92
|
-
|
93
|
-
|
94
|
-
|
92
|
+
it "is marked official" do
|
93
|
+
File.exist?("#{@pkg_contents_dir}/resources/release.txt").should be_true
|
94
|
+
end
|
95
95
|
end
|
96
96
|
|
97
97
|
describe "A user-generated gem" do
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
98
|
+
before :all do
|
99
|
+
ENV['PKG_DIR'] = @temp_dir = Dir.mktmpdir
|
100
|
+
basename = "#{PACKAGE_NAME}-#{VERSION}"
|
101
|
+
@pkg_contents_dir = "#{@temp_dir}/#{basename}"
|
102
|
+
Dir.chdir(SOURCE_ROOT) do
|
103
|
+
sh "rake", *PhusionPassenger::Packaging::PREGENERATED_FILES
|
104
|
+
sh "gem build #{PACKAGE_NAME}.gemspec"
|
105
|
+
sh "mv #{PACKAGE_NAME}-#{VERSION}.gem #{@temp_dir}/"
|
106
|
+
end
|
107
|
+
Dir.chdir(@temp_dir) do
|
108
|
+
sh "#{TAR} -xf #{basename}.gem"
|
109
|
+
sh "mkdir #{basename}"
|
110
|
+
sh "gunzip metadata.gz"
|
111
|
+
Dir.chdir(basename) do
|
112
|
+
sh "#{TAR} -xzf ../data.tar.gz"
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
after :all do
|
118
|
+
ENV.delete('PKG_DIR')
|
119
|
+
FileUtils.remove_entry_secure(@temp_dir)
|
120
|
+
end
|
121
|
+
|
122
|
+
it_behaves_like "a proper package"
|
123
|
+
it_behaves_like "a user-generated package"
|
124
|
+
|
125
|
+
it "doesn't invoke the binaries downloader upon gem installation" do
|
126
|
+
spec = YAML.load_file("#{@temp_dir}/metadata")
|
127
|
+
spec.extensions.should be_empty
|
128
|
+
end
|
129
129
|
end
|
130
130
|
|
131
131
|
describe "A user-generated tarball" do
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
132
|
+
before :all do
|
133
|
+
ENV['PKG_DIR'] = @temp_dir = Dir.mktmpdir
|
134
|
+
basename = "#{PACKAGE_NAME}-#{VERSION}"
|
135
|
+
@pkg_contents_dir = "#{@temp_dir}/#{basename}"
|
136
|
+
sh "rake package:tarball"
|
137
|
+
Dir.chdir(@temp_dir) do
|
138
|
+
sh "#{TAR} -xzf #{basename}.tar.gz"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
after :all do
|
143
|
+
ENV.delete('PKG_DIR')
|
144
|
+
FileUtils.remove_entry_secure(@temp_dir)
|
145
|
+
end
|
146
|
+
|
147
|
+
it_behaves_like "a proper package"
|
148
|
+
it_behaves_like "a user-generated package"
|
149
149
|
end
|
150
150
|
|
151
151
|
describe "An officially-generated gem" do
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
152
|
+
before :all do
|
153
|
+
ENV['PKG_DIR'] = @temp_dir = Dir.mktmpdir
|
154
|
+
basename = "#{PACKAGE_NAME}-#{VERSION}"
|
155
|
+
@pkg_contents_dir = "#{@temp_dir}/#{basename}"
|
156
|
+
Dir.chdir(SOURCE_ROOT) do
|
157
|
+
sh "rake package:set_official package:gem SKIP_SIGNING=1"
|
158
|
+
end
|
159
|
+
Dir.chdir(@temp_dir) do
|
160
|
+
sh "#{TAR} -xf #{basename}.gem"
|
161
|
+
sh "mkdir #{basename}"
|
162
|
+
sh "gunzip metadata.gz"
|
163
|
+
Dir.chdir(basename) do
|
164
|
+
sh "#{TAR} -xzf ../data.tar.gz"
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
after :all do
|
170
|
+
ENV.delete('PKG_DIR')
|
171
|
+
FileUtils.remove_entry_secure(@temp_dir)
|
172
|
+
end
|
173
|
+
|
174
|
+
it_behaves_like "a proper package"
|
175
|
+
it_behaves_like "an official package"
|
176
|
+
|
177
|
+
it "invokes the binaries downloader upon gem installation" do
|
178
|
+
spec = YAML.load_file("#{@temp_dir}/metadata")
|
179
|
+
spec.extensions.should_not be_empty
|
180
|
+
end
|
181
181
|
end
|
182
182
|
|
183
183
|
describe "An officially-generated tarball" do
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
184
|
+
before :all do
|
185
|
+
ENV['PKG_DIR'] = @temp_dir = Dir.mktmpdir
|
186
|
+
basename = "#{PACKAGE_NAME}-#{VERSION}"
|
187
|
+
@pkg_contents_dir = "#{@temp_dir}/#{basename}"
|
188
|
+
sh "rake package:set_official package:tarball"
|
189
|
+
Dir.chdir(@temp_dir) do
|
190
|
+
sh "#{TAR} -xzf #{basename}.tar.gz"
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
after :all do
|
195
|
+
ENV.delete('PKG_DIR')
|
196
|
+
FileUtils.remove_entry_secure(@temp_dir)
|
197
|
+
end
|
198
|
+
|
199
|
+
it_behaves_like "a proper package"
|
200
|
+
it_behaves_like "an official package"
|
201
201
|
end
|
@@ -4,12 +4,12 @@ Dir.chdir("#{source_root}/test")
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'json'
|
6
6
|
begin
|
7
|
-
|
7
|
+
CONFIG = JSON.load(File.read('config.json'))
|
8
8
|
rescue Errno::ENOENT
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
STDERR.puts "*** You do not have the file test/config.json. " <<
|
10
|
+
"Please copy test/config.json.example to " <<
|
11
|
+
"test/config.json, and edit it."
|
12
|
+
exit 1
|
13
13
|
end
|
14
14
|
|
15
15
|
$LOAD_PATH.unshift("#{source_root}/lib")
|
@@ -20,373 +20,373 @@ ENV['PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY'] = '0'
|
|
20
20
|
module PhusionPassenger
|
21
21
|
|
22
22
|
describe "Passenger Standalone" do
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
23
|
+
let(:version) { PhusionPassenger::VERSION_STRING }
|
24
|
+
let(:nginx_version) { PhusionPassenger::PREFERRED_NGINX_VERSION }
|
25
|
+
let(:compat_id) { PhusionPassenger::PlatformInfo.cxx_binary_compatibility_id }
|
26
|
+
|
27
|
+
def sh(*command)
|
28
|
+
if !system(*command)
|
29
|
+
abort "Command failed: #{command.join(' ')}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def capture_output(command)
|
34
|
+
output = `#{command} 2>&1`.strip
|
35
|
+
if $?.exitstatus == 0
|
36
|
+
return output
|
37
|
+
else
|
38
|
+
abort "Command #{command} exited with status #{$?.exitstatus}; output:\n#{output}"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def start_server(document_root)
|
43
|
+
server = WEBrick::HTTPServer.new(:BindAddress => '127.0.0.1',
|
44
|
+
:Port => 0,
|
45
|
+
:DocumentRoot => document_root,
|
46
|
+
:Logger => WEBrick::Log.new("/dev/null"),
|
47
|
+
:AccessLog => [])
|
48
|
+
Thread.new do
|
49
|
+
Thread.current.abort_on_exception = true
|
50
|
+
server.start
|
51
|
+
end
|
52
|
+
[server, "http://127.0.0.1:#{server.config[:Port]}"]
|
53
|
+
end
|
54
|
+
|
55
|
+
def create_tarball(filename, contents = nil)
|
56
|
+
filename = File.expand_path(filename)
|
57
|
+
Dir.mktmpdir("tarball-") do |tarball_dir|
|
58
|
+
Dir.chdir(tarball_dir) do
|
59
|
+
if block_given?
|
60
|
+
yield
|
61
|
+
else
|
62
|
+
contents.each do |content_name|
|
63
|
+
create_file(content_name)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
sh "tar", "-czf", filename, "."
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def create_dummy_support_binaries
|
72
|
+
Dir.mkdir("support-binaries") if !File.exist?("support-binaries")
|
73
|
+
File.open("support-binaries/#{AGENT_EXE}", "w") do |f|
|
74
|
+
f.puts "#!/bin/bash"
|
75
|
+
f.puts "echo PASS"
|
76
|
+
end
|
77
|
+
File.chmod(0755, "support-binaries/#{AGENT_EXE}")
|
78
|
+
end
|
79
|
+
|
80
|
+
def create_dummy_nginx_binary
|
81
|
+
File.open("PassengerWebHelper", "w") do |f|
|
82
|
+
f.puts "#!/bin/bash"
|
83
|
+
f.puts "echo nginx version: 1.0.0"
|
84
|
+
end
|
85
|
+
File.chmod(0755, "PassengerWebHelper")
|
86
|
+
end
|
87
|
+
|
88
|
+
def create_file(filename, contents = nil)
|
89
|
+
File.open(filename, "wb") do |f|
|
90
|
+
f.write(contents) if contents
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
specify "invoking 'passenger' without an argument is equivalent to 'passenger help'" do
|
95
|
+
output = capture_output("passenger")
|
96
|
+
output.should == capture_output("passenger help")
|
97
|
+
end
|
98
|
+
|
99
|
+
specify "'passenger --help' is equivalent to 'passenger help'" do
|
100
|
+
output = capture_output("passenger")
|
101
|
+
output.should == capture_output("passenger help")
|
102
|
+
end
|
103
|
+
|
104
|
+
specify "'passenger --version' displays the version number" do
|
105
|
+
output = capture_output("passenger --version")
|
106
|
+
output.should include("version #{PhusionPassenger::VERSION_STRING}\n")
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "start command" do
|
110
|
+
AGENT_BINARY_DOWNLOAD_MESSAGE = "--> Downloading a #{PROGRAM_NAME} agent binary for your platform"
|
111
|
+
AGENT_BINARY_COMPILE_MESSAGE = "Compiling #{PROGRAM_NAME} agent"
|
112
|
+
NGINX_BINARY_INSTALL_MESSAGE = "Installing Nginx"
|
113
|
+
|
114
|
+
def test_serving_application(passenger_command)
|
115
|
+
Dir.mktmpdir do |tmpdir|
|
116
|
+
Dir.chdir(tmpdir) do
|
117
|
+
File.open("config.ru", "w") do |f|
|
118
|
+
f.write(%Q{
|
119
|
+
app = lambda do |env|
|
120
|
+
[200, { "Content-Type" => "text/plain" }, ["ok"]]
|
121
|
+
end
|
122
|
+
run app
|
123
|
+
})
|
124
|
+
end
|
125
|
+
Dir.mkdir("public")
|
126
|
+
Dir.mkdir("tmp")
|
127
|
+
sh("#{passenger_command} -p 4000 -d --disable-turbocaching >/dev/null")
|
128
|
+
begin
|
129
|
+
open("http://127.0.0.1:4000/") do |f|
|
130
|
+
f.read.should == "ok"
|
131
|
+
end
|
132
|
+
ensure
|
133
|
+
sh("passenger stop -p 4000")
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context "if the runtime is not installed" do
|
140
|
+
before :each do
|
141
|
+
@user_dir = File.expand_path("~/#{USER_NAMESPACE_DIRNAME}")
|
142
|
+
if File.exist?("buildout.old")
|
143
|
+
raise "buildout.old exists. Please fix this first."
|
144
|
+
end
|
145
|
+
if File.exist?("#{@user_dir}.old")
|
146
|
+
raise "#{@user_dir} exists. Please fix this first."
|
147
|
+
end
|
148
|
+
if PhusionPassenger.build_system_dir
|
149
|
+
FileUtils.mv("#{PhusionPassenger.build_system_dir}/buildout",
|
150
|
+
"#{PhusionPassenger.build_system_dir}/buildout.old")
|
151
|
+
end
|
152
|
+
if File.exist?(@user_dir)
|
153
|
+
FileUtils.mv(@user_dir, "#{@user_dir}.old")
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
after :each do
|
158
|
+
FileUtils.rm_rf("#{PhusionPassenger.build_system_dir}/buildout")
|
159
|
+
FileUtils.rm_rf(@user_dir)
|
160
|
+
if PhusionPassenger.build_system_dir
|
161
|
+
FileUtils.mv("#{PhusionPassenger.build_system_dir}/buildout.old",
|
162
|
+
"#{PhusionPassenger.build_system_dir}/buildout")
|
163
|
+
end
|
164
|
+
if File.exist?("#{@user_dir}.old")
|
165
|
+
FileUtils.mv("#{@user_dir}.old", @user_dir)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
context "when natively packaged" do
|
170
|
+
it "tries to install the runtime" do
|
171
|
+
command = "passenger start --no-install-runtime --runtime-check-only"
|
172
|
+
`#{command} 2>&1`.should include("Refusing to install")
|
173
|
+
end
|
174
|
+
|
175
|
+
it "starts a server which serves the application" do
|
176
|
+
output = capture_output("passenger start --runtime-check-only")
|
177
|
+
output.should include(AGENT_BINARY_DOWNLOAD_MESSAGE)
|
178
|
+
output.should include(NGINX_BINARY_INSTALL_MESSAGE)
|
179
|
+
test_serving_application("passenger start")
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
context "when custom packaged" do
|
184
|
+
before :each do
|
185
|
+
@tmpdir = Dir.mktmpdir
|
186
|
+
sh "passenger-config --make-locations-ini --for-packaging-method=deb " +
|
187
|
+
"> '#{@tmpdir}/locations.ini'"
|
188
|
+
ENV['PASSENGER_LOCATION_CONFIGURATION_FILE'] = "#{@tmpdir}/locations.ini"
|
189
|
+
end
|
190
|
+
|
191
|
+
after :each do
|
192
|
+
ENV.delete('PASSENGER_LOCATION_CONFIGURATION_FILE')
|
193
|
+
FileUtils.remove_entry_secure(@tmpdir)
|
194
|
+
end
|
195
|
+
|
196
|
+
it "tries to install the runtime" do
|
197
|
+
command = "passenger start --no-install-runtime --runtime-check-only"
|
198
|
+
`#{command} 2>&1`.should include("Refusing to install")
|
199
|
+
end
|
200
|
+
|
201
|
+
it "starts a server which serves the application" do
|
202
|
+
output = capture_output("passenger start --runtime-check-only")
|
203
|
+
output.should include(AGENT_BINARY_DOWNLOAD_MESSAGE)
|
204
|
+
output.should include(NGINX_BINARY_INSTALL_MESSAGE)
|
205
|
+
test_serving_application("passenger start")
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
# TODO: move these tests to config/install_standalone_runtime_command_spec.rb
|
210
|
+
|
211
|
+
# before :each do
|
212
|
+
# @runtime_dir = Dir.mktmpdir
|
213
|
+
# @webroot = Dir.mktmpdir
|
214
|
+
# @server, @base_url = start_server(@webroot)
|
215
|
+
|
216
|
+
# Dir.mkdir("#{@webroot}/#{version}")
|
217
|
+
# Dir.chdir("#{@webroot}/#{version}") do
|
218
|
+
# create_tarball("webhelper-#{nginx_version}-#{compat_id}.tar.gz") do
|
219
|
+
# create_dummy_nginx_binary
|
220
|
+
# end
|
221
|
+
# create_tarball("support-#{compat_id}.tar.gz") do
|
222
|
+
# FileUtils.mkdir_p("support-binaries")
|
223
|
+
# FileUtils.mkdir_p("common/libpassenger_common/ApplicationPool2")
|
224
|
+
# create_file("common/libboost_oxt.a")
|
225
|
+
# create_file("common/libpassenger_common/ApplicationPool2/Implementation.o")
|
226
|
+
# create_dummy_support_binaries
|
227
|
+
# end
|
228
|
+
# end
|
229
|
+
|
230
|
+
# create_file("#{PhusionPassenger.resources_dir}/release.txt")
|
231
|
+
# end
|
232
|
+
|
233
|
+
# after :each do
|
234
|
+
# @server.stop
|
235
|
+
# File.unlink("#{PhusionPassenger.resources_dir}/release.txt")
|
236
|
+
# FileUtils.remove_entry_secure(@webroot)
|
237
|
+
# FileUtils.remove_entry_secure(@runtime_dir)
|
238
|
+
# end
|
239
|
+
|
240
|
+
# context "when originally packaged" do
|
241
|
+
# it "downloads binaries from the Internet" do
|
242
|
+
# @output = capture_output("passenger start " +
|
243
|
+
# "--runtime-dir '#{@runtime_dir}' " +
|
244
|
+
# "--runtime-check-only " +
|
245
|
+
# "--binaries-url-root '#{@base_url}'")
|
246
|
+
# @output.should include(SUPPORT_BINARIES_DOWNLOAD_MESSAGE)
|
247
|
+
# @output.should include(NGINX_BINARY_DOWNLOAD_MESSAGE)
|
248
|
+
# @output.should_not include(NGINX_SOURCE_DOWNLOAD_MESSAGE)
|
249
|
+
# @output.should_not include(COMPILING_MESSAGE)
|
250
|
+
# end
|
251
|
+
|
252
|
+
# it "builds the runtime if downloading fails" do
|
253
|
+
# # Yes, we're testing the entire build system here.
|
254
|
+
# command = "passenger start " +
|
255
|
+
# "--runtime-dir '#{@runtime_dir}' " +
|
256
|
+
# "--binaries-url-root '#{@base_url}/wrong'"
|
257
|
+
# @output = capture_output("#{command} --runtime-check-only")
|
258
|
+
# @output.should include(SUPPORT_BINARIES_DOWNLOAD_MESSAGE)
|
259
|
+
# @output.should include(NGINX_BINARY_DOWNLOAD_MESSAGE)
|
260
|
+
# @output.should include(NGINX_SOURCE_DOWNLOAD_MESSAGE)
|
261
|
+
# @output.should include(COMPILING_MESSAGE)
|
262
|
+
|
263
|
+
# test_serving_application(command)
|
264
|
+
# end
|
265
|
+
|
266
|
+
# specify "if the downloaded support binaries work but the downloaded web helper binary doesn't, " +
|
267
|
+
# "and web helper compilation doesn't succeed the first time, then web helper compilation " +
|
268
|
+
# "succeeds the second time" do
|
269
|
+
# Dir.chdir("#{@webroot}/#{version}") do
|
270
|
+
# create_tarball("support-#{compat_id}.tar.gz") do
|
271
|
+
# FileUtils.cp_r(Dir["#{PhusionPassenger.build_system_dir}/buildout/*"],
|
272
|
+
# ".")
|
273
|
+
# end
|
274
|
+
# create_tarball("webhelper-#{nginx_version}-#{compat_id}.tar.gz") do
|
275
|
+
# create_file("PassengerWebHelper",
|
276
|
+
# "#!/bin/sh\n" +
|
277
|
+
# "exit 1\n")
|
278
|
+
# end
|
279
|
+
# end
|
280
|
+
|
281
|
+
# # Temporarily make Passenger Standalone think our runtime is
|
282
|
+
# # not compiled.
|
283
|
+
# File.rename("#{PhusionPassenger.build_system_dir}/buildout",
|
284
|
+
# "#{PhusionPassenger.build_system_dir}/buildout.renamed")
|
285
|
+
# begin
|
286
|
+
# command = "passenger start " +
|
287
|
+
# "--runtime-dir '#{@runtime_dir}' " +
|
288
|
+
# "--binaries-url-root '#{@base_url}'"
|
289
|
+
|
290
|
+
# @output = `#{command} --runtime-check-only --no-compile-runtime 2>&1`
|
291
|
+
# $?.exitstatus.should_not == 0
|
292
|
+
# @output.should include(SUPPORT_BINARIES_DOWNLOAD_MESSAGE)
|
293
|
+
# @output.should include("All good\n")
|
294
|
+
# @output.should include(NGINX_BINARY_DOWNLOAD_MESSAGE)
|
295
|
+
# @output.should include("Not usable, will compile from source")
|
296
|
+
# @output.should include("Refusing to compile the Phusion Passenger Standalone runtime")
|
297
|
+
|
298
|
+
# @output = capture_output("#{command} --runtime-check-only")
|
299
|
+
# @output.should include(NGINX_SOURCE_DOWNLOAD_MESSAGE)
|
300
|
+
# @output.should include(COMPILING_MESSAGE)
|
301
|
+
# File.exist?("#{PhusionPassenger.build_system_dir}/buildout").should be_false
|
302
|
+
|
303
|
+
# test_serving_application("#{command} --no-compile-runtime")
|
304
|
+
# File.exist?("#{PhusionPassenger.build_system_dir}/buildout").should be_false
|
305
|
+
# ensure
|
306
|
+
# FileUtils.rm_rf("#{PhusionPassenger.build_system_dir}/buildout")
|
307
|
+
# File.rename("#{PhusionPassenger.build_system_dir}/buildout.renamed",
|
308
|
+
# "#{PhusionPassenger.build_system_dir}/buildout")
|
309
|
+
# end
|
310
|
+
# end
|
311
|
+
# end
|
312
|
+
|
313
|
+
# context "when custom packaged" do
|
314
|
+
# before :each do
|
315
|
+
# sh "passenger-config --make-locations-ini --for-packaging-method=deb " +
|
316
|
+
# "> '#{@runtime_dir}/locations.ini'"
|
317
|
+
# ENV['PASSENGER_LOCATION_CONFIGURATION_FILE'] = "#{@runtime_dir}/locations.ini"
|
318
|
+
# create_file("#{PhusionPassenger.lib_dir}/PassengerWebHelper")
|
319
|
+
# end
|
320
|
+
|
321
|
+
# after :each do
|
322
|
+
# ENV.delete('PASSENGER_LOCATION_CONFIGURATION_FILE')
|
323
|
+
# File.unlink("#{PhusionPassenger.lib_dir}/PassengerWebHelper")
|
324
|
+
# end
|
325
|
+
|
326
|
+
# it "downloads only the Nginx binary from the Internet" do
|
327
|
+
# File.rename("#{@webroot}/#{version}/webhelper-#{nginx_version}-#{compat_id}.tar.gz",
|
328
|
+
# "#{@webroot}/#{version}/webhelper-0.0.1-#{compat_id}.tar.gz")
|
329
|
+
# @output = capture_output("passenger start " +
|
330
|
+
# "--runtime-dir '#{@runtime_dir}' " +
|
331
|
+
# "--runtime-check-only " +
|
332
|
+
# "--binaries-url-root '#{@base_url}' " +
|
333
|
+
# "--nginx-version 0.0.1")
|
334
|
+
# @output.should_not include(SUPPORT_BINARIES_DOWNLOAD_MESSAGE)
|
335
|
+
# @output.should include(NGINX_BINARY_DOWNLOAD_MESSAGE)
|
336
|
+
# @output.should_not include(NGINX_SOURCE_DOWNLOAD_MESSAGE)
|
337
|
+
# @output.should_not include(COMPILING_MESSAGE)
|
338
|
+
# end
|
339
|
+
|
340
|
+
# it "only builds Nginx if downloading fails" do
|
341
|
+
# # Yes, we're testing the build system here.
|
342
|
+
# command = "passenger start " +
|
343
|
+
# "--runtime-dir '#{@runtime_dir}' " +
|
344
|
+
# "--binaries-url-root '#{@base_url}' " +
|
345
|
+
# "--nginx-version 1.4.1"
|
346
|
+
# @output = capture_output("#{command} --runtime-check-only")
|
347
|
+
# @output.should_not include(SUPPORT_BINARIES_DOWNLOAD_MESSAGE)
|
348
|
+
# @output.should include(NGINX_BINARY_DOWNLOAD_MESSAGE)
|
349
|
+
# @output.should include(NGINX_SOURCE_DOWNLOAD_MESSAGE)
|
350
|
+
# @output.should include(COMPILING_MESSAGE)
|
351
|
+
|
352
|
+
# test_serving_application(command)
|
353
|
+
# end
|
354
|
+
# end
|
355
|
+
end
|
356
|
+
|
357
|
+
context "if the runtime is installed" do
|
358
|
+
before :all do
|
359
|
+
capture_output("passenger-config compile-nginx-engine")
|
360
|
+
end
|
361
|
+
|
362
|
+
it "doesn't download the runtime from the Internet" do
|
363
|
+
command = "passenger start --no-install-runtime --runtime-check-only"
|
364
|
+
capture_output(command).should_not include(AGENT_BINARY_DOWNLOAD_MESSAGE)
|
365
|
+
end
|
366
|
+
|
367
|
+
it "doesn't build the runtime" do
|
368
|
+
command = "passenger start --no-install-runtime --runtime-check-only"
|
369
|
+
capture_output(command).should_not include(AGENT_BINARY_COMPILE_MESSAGE)
|
370
|
+
end
|
371
|
+
|
372
|
+
it "starts a server which serves the application" do
|
373
|
+
test_serving_application("passenger start")
|
374
|
+
end
|
375
|
+
end
|
376
|
+
|
377
|
+
it "daemonizes if -d is given" do
|
378
|
+
# Earlier tests already test this. This empty test here
|
379
|
+
# is merely to show the intent of the tests, and to
|
380
|
+
# speed up the test suite by preventing an unnecessary
|
381
|
+
# compilation.
|
382
|
+
end
|
383
|
+
end
|
384
|
+
|
385
|
+
describe "help command" do
|
386
|
+
it "displays the available commands" do
|
387
|
+
capture_output("passenger help").should include("Available commands:")
|
388
|
+
end
|
389
|
+
end
|
390
390
|
end
|
391
391
|
|
392
392
|
end # module PhusionPassenger
|