jetty-rails 0.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -52,6 +52,23 @@ describe "binary executable with no command line arguments" do
52
52
  load File.dirname(__FILE__) + '/../bin/jetty_merb'
53
53
  end
54
54
 
55
+ it "should not set classes dir by default" do
56
+ runner = mock("runner", :null_object => true)
57
+ JettyRails::Runner.should_receive(:new) do |config|
58
+ config.should_not have_key(:classes_dir)
59
+ runner
60
+ end
61
+ load File.dirname(__FILE__) + '/../bin/jetty_merb'
62
+ end
63
+
64
+ it "should not set lib dir by default" do
65
+ runner = mock("runner", :null_object => true)
66
+ JettyRails::Runner.should_receive(:new) do |config|
67
+ config.should_not have_key(:lib_dir)
68
+ runner
69
+ end
70
+ load File.dirname(__FILE__) + '/../bin/jetty_merb'
71
+ end
55
72
  end
56
73
 
57
74
  describe "binary executable with command line arguments" do
@@ -139,4 +156,40 @@ describe "binary executable with command line arguments" do
139
156
  load File.dirname(__FILE__) + '/../bin/jetty_merb'
140
157
  end
141
158
 
159
+ it "should take --classes command line option as custom classes dir" do
160
+ ARGV[0] = '--classes'
161
+ ARGV[1] = 'build/java/classes'
162
+ runner = mock("runner", :null_object => true)
163
+ JettyRails::Runner.should_receive(:new) do |config|
164
+ config.should have_key(:classes_dir)
165
+ config[:classes_dir].should == 'build/java/classes'
166
+ runner
167
+ end
168
+ load File.dirname(__FILE__) + '/../bin/jetty_merb'
169
+ end
170
+
171
+ it "should take --lib command line option as custom jars dir" do
172
+ ARGV[0] = '--lib'
173
+ ARGV[1] = 'java/jars'
174
+ runner = mock("runner", :null_object => true)
175
+ JettyRails::Runner.should_receive(:new) do |config|
176
+ config.should have_key(:lib_dir)
177
+ config[:lib_dir].should == 'java/jars'
178
+ runner
179
+ end
180
+ load File.dirname(__FILE__) + '/../bin/jetty_merb'
181
+ end
182
+
183
+ it "should take --jars command line option as custom jars dir" do
184
+ ARGV[0] = '--jars'
185
+ ARGV[1] = 'java/jars'
186
+ runner = mock("runner", :null_object => true)
187
+ JettyRails::Runner.should_receive(:new) do |config|
188
+ config.should have_key(:lib_dir)
189
+ config[:lib_dir].should == 'java/jars'
190
+ runner
191
+ end
192
+ load File.dirname(__FILE__) + '/../bin/jetty_merb'
193
+ end
194
+
142
195
  end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe JettyRails::Runner, "with config file containing several servers and apps" do
4
+ before do
5
+ @yaml_config = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'config.yml'))
6
+ end
7
+
8
+ it "should instantiate runner with config.yml and setup servers" do
9
+ runner = JettyRails::Runner.new(@yaml_config)
10
+ runner.servers.size.should == 3
11
+ runner.servers[4000].should_not == nil
12
+ runner.servers[3000].should_not == nil
13
+ server = runner.servers[8080]
14
+ server.should_not == nil
15
+ server.app_contexts.size.should == 2
16
+ end
17
+
18
+ it "should setup correct context_paths" do
19
+ runner = JettyRails::Runner.new(@yaml_config)
20
+ runner.servers[4000].config[:context_path].should == "/testB"
21
+ runner.servers[3000].config[:context_path].should == "/testA"
22
+
23
+ runner.servers[8080].config[:context_path].should == "/"
24
+ runner.servers[8080].app_contexts[0].context_path.should == "/testC"
25
+ runner.servers[8080].app_contexts[1].context_path.should == "/testD"
26
+ end
27
+
28
+ it "should setup correct adapters" do
29
+ runner = JettyRails::Runner.new(@yaml_config)
30
+ runner.servers[4000].config[:adapter].should == :merb
31
+ runner.servers[3000].config[:adapter].should == :rails
32
+
33
+ runner.servers[8080].config[:adapter].should == :rails # default
34
+ runner.servers[8080].app_contexts[0].config[:adapter].should == :merb
35
+ runner.servers[8080].app_contexts[1].config[:adapter].should == :rails
36
+ end
37
+
38
+ it "should inherit environment" do
39
+ runner = JettyRails::Runner.new(@yaml_config)
40
+ runner.servers[4000].config[:environment].should == "production"
41
+ runner.servers[3000].config[:environment].should == "development"
42
+
43
+ runner.servers[8080].config[:environment].should == "production"
44
+ runner.servers[8080].app_contexts[0].config[:environment].should =="test"
45
+ runner.servers[8080].app_contexts[1].config[:environment].should =="production"
46
+ end
47
+
48
+ it "should setup jruby environment" do
49
+ runner = JettyRails::Runner.new(@yaml_config)
50
+ runner.servers[4000].app_contexts.first.adapter.init_params['jruby.min.runtimes'].should == '1'
51
+ runner.servers[4000].app_contexts.first.adapter.init_params['jruby.max.runtimes'].should == '2'
52
+
53
+ runner.servers[3000].app_contexts.first.adapter.init_params['jruby.min.runtimes'].should == '2'
54
+ runner.servers[3000].app_contexts.first.adapter.init_params['jruby.max.runtimes'].should == '2'
55
+ end
56
+
57
+ it "should setup the server thread pool" do
58
+ runner = JettyRails::Runner.new(@yaml_config)
59
+ runner.servers[4000].server.thread_pool.max_threads.should == 40
60
+ runner.servers[4000].server.thread_pool.min_threads.should == 1
61
+ end
62
+
63
+ it "should setup the server acceptors" do
64
+ runner = JettyRails::Runner.new(@yaml_config)
65
+ runner.servers[3000].server.connectors[0].acceptors.should == 20
66
+ end
67
+
68
+ end
@@ -7,83 +7,88 @@ describe JettyRails::Runner, "with no extra configuration (rails adapter)" do
7
7
 
8
8
  it "should receive basedir configuration" do
9
9
  runner = JettyRails::Runner.new :base => '/any/app/dir'
10
- runner.config.should have_key(:base)
11
- runner.config[:base].should == '/any/app/dir'
10
+ runner.servers[8080].config.should have_key(:base)
11
+ runner.servers[8080].config[:base].should == '/any/app/dir'
12
12
  end
13
13
 
14
14
  it "should default to development environment" do
15
15
  runner = JettyRails::Runner.new :base => Dir.pwd
16
- runner.config.should have_key(:environment)
17
- runner.config[:environment].should == 'development'
18
- runner.app_context.init_params['rails.env'].should == 'development'
16
+ runner.servers[8080].config.should have_key(:environment)
17
+ runner.servers[8080].config[:environment].should == 'development'
18
+ runner.servers[8080].app_contexts.first.init_params['rails.env'].should == 'development'
19
19
  end
20
20
 
21
21
  it "should default to the root context path" do
22
22
  runner = JettyRails::Runner.new :base => Dir.pwd
23
- runner.config.should have_key(:context_path)
24
- runner.config[:context_path].should == '/'
25
- runner.app_context.context_path.should == '/'
23
+ runner.servers[8080].config.should have_key(:context_path)
24
+ runner.servers[8080].config[:context_path].should == '/'
25
+ runner.servers[8080].app_contexts.first.context_path.should == '/'
26
26
  end
27
27
 
28
28
  it "should set server default port to 8080" do
29
29
  runner = JettyRails::Runner.new :base => Dir.pwd
30
- runner.config.should have_key(:port)
31
- runner.config[:port].should == 8080
30
+ runner.servers[8080].config.should have_key(:port)
31
+ runner.servers[8080].config[:port].should == 8080
32
32
  end
33
33
 
34
34
  it "should default lib_dir to lib/*.jar" do
35
35
  runner = JettyRails::Runner.new :base => Dir.pwd
36
- runner.config.should have_key(:lib_dir)
37
- runner.config[:lib_dir].should == 'lib/**/*.jar'
36
+ runner.servers[8080].config.should have_key(:lib_dir)
37
+ runner.servers[8080].config[:lib_dir].should == 'lib/**/*.jar'
38
38
  end
39
39
 
40
40
  it "should set rails root" do
41
41
  runner = JettyRails::Runner.new :base => Dir.pwd
42
- runner.app_context.init_params['rails.root'].should == '/'
42
+ runner.servers[8080].app_contexts.first.init_params['rails.root'].should == '/'
43
43
  end
44
44
 
45
45
  it "should set public root" do
46
46
  runner = JettyRails::Runner.new :base => Dir.pwd
47
- runner.app_context.init_params['public.root'].should == '/public'
47
+ runner.servers[8080].app_contexts.first.init_params['public.root'].should == '/public'
48
48
  end
49
49
 
50
50
  it "should set gem path" do
51
- runner = JettyRails::Runner.new :base => Dir.pwd
52
- runner.app_context.init_params['gem.path'].should == 'tmp/war/WEB-INF/gems'
51
+ original = ENV['GEM_PATH']
52
+ ENV['GEM_PATH'] = nil
53
+ begin
54
+ runner = JettyRails::Runner.new :base => Dir.pwd
55
+ runner.servers[8080].app_contexts.first.init_params['gem.path'].should == 'tmp/war/WEB-INF/gems'
56
+ ensure
57
+ ENV['GEM_PATH'] = original
58
+ end
53
59
  end
54
60
 
61
+ it "should set gem path from environment" do
62
+ original = ENV['GEM_PATH']
63
+ ENV['GEM_PATH'] = "/usr/lib/ruby/gems/1.8/gems"
64
+ begin
65
+ runner = JettyRails::Runner.new :base => Dir.pwd
66
+ runner.servers[8080].app_contexts.first.init_params['gem.path'].should == ENV['GEM_PATH']
67
+ ensure
68
+ ENV['GEM_PATH'] = original
69
+ end
70
+ end
71
+
72
+
55
73
  it "should install RailsServletContextListener" do
56
74
  runner = JettyRails::Runner.new :base => Dir.pwd
57
- listeners = runner.app_context.event_listeners
75
+ listeners = runner.servers[8080].app_contexts.first.event_listeners
58
76
  listeners.size.should == 1
59
77
  listeners[0].should be_kind_of(JettyRails::Rack::RailsServletContextListener)
60
78
  end
61
-
62
- it "should install RackFilter" do
63
- context = mock("web application context", :null_object => true)
64
- server = JettyRails::Jetty::Server.new
65
- context.stub!(:getServer).and_return(server)
66
- JettyRails::Jetty::Handler::WebAppContext.should_receive(:new).and_return(context)
67
- context.should_receive(:add_filter).once do |filter_holder, url_pattern, dispatches|
68
- filter_holder.filter.should be_kind_of(JettyRails::Rack::RackFilter)
69
- url_pattern.should == '/*'
70
- dispatches.should == JettyRails::Jetty::Context::DEFAULT
71
- end
72
- runner = JettyRails::Runner.new :base => Dir.pwd
73
- end
74
-
79
+
75
80
  it "should have handlers for static and dynamic content" do
76
81
  runner = JettyRails::Runner.new :base => Dir.pwd
77
- runner.server.handlers.size.should == 2
78
- resource_handlers = runner.server.getChildHandlersByClass(JettyRails::Jetty::Handler::ResourceHandler)
82
+ runner.servers[8080].server.handlers.size.should == 2
83
+ resource_handlers = runner.servers[8080].server.getChildHandlersByClass(JettyRails::Jetty::Handler::ResourceHandler)
79
84
  resource_handlers.size.should == 1
80
- webapp_handlers = runner.server.getChildHandlersByClass(JettyRails::Jetty::Handler::WebAppContext)
85
+ webapp_handlers = runner.servers[8080].server.getChildHandlersByClass(JettyRails::Jetty::Handler::WebAppContext)
81
86
  webapp_handlers.size.should == 1
82
87
  end
83
88
 
84
89
  it "should delegate to rails handler if requested dir has no welcome file" do
85
90
  runner = JettyRails::Runner.new :base => Dir.pwd
86
- delegate_handler = runner.server.handlers[0]
91
+ delegate_handler = runner.servers[8080].server.handlers[0]
87
92
  delegate_handler.should be_kind_of(JettyRails::Handler::DelegateOnErrorsHandler)
88
93
  end
89
94
 
@@ -93,28 +98,28 @@ describe JettyRails::Runner, "with custom configuration" do
93
98
 
94
99
  it "should allow to override the environment" do
95
100
  runner = JettyRails::Runner.new :base => Dir.pwd, :environment => 'production'
96
- runner.config.should have_key(:environment)
97
- runner.config[:environment].should == 'production'
98
- runner.app_context.init_params['rails.env'].should == 'production'
101
+ runner.servers[8080].config.should have_key(:environment)
102
+ runner.servers[8080].config[:environment].should == 'production'
103
+ runner.servers[8080].app_contexts.first.init_params['rails.env'].should == 'production'
99
104
  end
100
105
 
101
106
  it "should allow to override the context path" do
102
107
  runner = JettyRails::Runner.new :base => Dir.pwd, :context_path => "/myapp"
103
- runner.config.should have_key(:context_path)
104
- runner.config[:context_path].should == '/myapp'
105
- runner.app_context.context_path.should == '/myapp'
108
+ runner.servers[8080].config.should have_key(:context_path)
109
+ runner.servers[8080].config[:context_path].should == '/myapp'
110
+ runner.servers[8080].app_contexts.first.context_path.should == '/myapp'
106
111
  end
107
112
 
108
113
  it "should allow to override the server port" do
109
114
  runner = JettyRails::Runner.new :base => Dir.pwd, :port => 8585
110
- runner.config.should have_key(:port)
111
- runner.config[:port].should == 8585
112
- runner.server.connectors[0].port.should == 8585
115
+ runner.servers[8585].config.should have_key(:port)
116
+ runner.servers[8585].config[:port].should == 8585
117
+ runner.servers[8585].server.connectors[0].port.should == 8585
113
118
  end
114
119
 
115
120
  it "should handle custom context paths for static and dynamic content" do
116
121
  runner = JettyRails::Runner.new :base => Dir.pwd, :context_path => "/myapp"
117
- context_handlers = runner.server.getChildHandlersByClass(JettyRails::Jetty::Handler::ContextHandler)
122
+ context_handlers = runner.servers[8080].server.getChildHandlersByClass(JettyRails::Jetty::Handler::ContextHandler)
118
123
  context_handlers.size.should == 2 # one for static, one for dynamic
119
124
  end
120
125
  end
@@ -123,30 +128,35 @@ describe JettyRails::Runner, "with merb adapter" do
123
128
 
124
129
  it "should set merb root" do
125
130
  runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
126
- runner.app_context.init_params['merb.root'].should == '/'
131
+ runner.servers[8080].app_contexts.first.init_params['merb.root'].should == '/'
127
132
  end
128
133
 
129
134
  it "should set public root" do
130
135
  runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
131
- runner.app_context.init_params['public.root'].should == '/public'
136
+ runner.servers[8080].app_contexts.first.init_params['public.root'].should == '/public'
132
137
  end
133
138
 
134
139
  it "should set gem path" do
135
- runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
136
- runner.app_context.init_params['gem.path'].should == 'tmp/war/WEB-INF/gems'
140
+ original = ENV['GEM_PATH']
141
+ ENV['GEM_PATH'] = nil
142
+ begin
143
+ runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
144
+ runner.servers[8080].app_contexts.first.init_params['gem.path'].should == 'tmp/war/WEB-INF/gems'
145
+ ensure
146
+ ENV['GEM_PATH'] = original
147
+ end
137
148
  end
138
149
 
139
150
  it "should set merb environment to development" do
140
151
  runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
141
- runner.app_context.init_params['merb.environment'].should == 'development'
152
+ runner.servers[8080].app_contexts.first.init_params['merb.environment'].should == 'development'
142
153
  end
143
154
 
144
155
  it "should install MerbServletContextListener and SignalHandler" do
145
156
  runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
146
- listeners = runner.app_context.event_listeners
157
+ listeners = runner.servers[8080].app_contexts.first.event_listeners
147
158
  listeners.size.should == 2
148
159
  listeners[0].should be_kind_of(JettyRails::Rack::MerbServletContextListener)
149
160
  listeners[1].should be_kind_of(JettyRails::Adapters::MerbAdapter::SignalHandler)
150
161
  end
151
162
  end
152
-
@@ -0,0 +1,13 @@
1
+ ---
2
+ :servers:
3
+ - :context_path: /testB
4
+ :adapter: :rails
5
+ :base: jetty_rails_proj
6
+ :environment: development
7
+ :port: 3000
8
+ :environment: production
9
+ :jruby_min_runtimes: 1
10
+ :jruby_max_runtimes: 2
11
+ :thread_pool_max: 40
12
+ :thread_pool_min: 1
13
+ :acceptor_size: 20
@@ -0,0 +1,28 @@
1
+ ---
2
+ :servers:
3
+ - :context_path: /testA
4
+ :base: jetty_rails_proj_2
5
+ :adapter: :rails
6
+ :environment: development
7
+ :port: 2000
8
+ - :context_path: /testB
9
+ :adapter: :rails
10
+ :base: jetty_rails_proj
11
+ :environment: production
12
+ :port: 3000
13
+ - :port: 4000
14
+ :apps:
15
+ - :context_path: /testB
16
+ :adapter: :rails
17
+ :base: jetty_rails_proj
18
+ :environment: development
19
+ - :context_path: /testA
20
+ :adapter: :rails
21
+ :base: jetty_rails_proj_2
22
+ :environment: production
23
+ :environment: production
24
+ :jruby_min_runtimes: 1
25
+ :jruby_max_runtimes: 2
26
+ :thread_pool_max: 40
27
+ :thread_pool_min: 1
28
+ :acceptor_size: 20
@@ -52,6 +52,23 @@ describe "binary executable with no command line arguments" do
52
52
  load File.dirname(__FILE__) + '/../bin/jetty_rails'
53
53
  end
54
54
 
55
+ it "should not set classes dir by default" do
56
+ runner = mock("runner", :null_object => true)
57
+ JettyRails::Runner.should_receive(:new) do |config|
58
+ config.should_not have_key(:classes_dir)
59
+ runner
60
+ end
61
+ load File.dirname(__FILE__) + '/../bin/jetty_rails'
62
+ end
63
+
64
+ it "should not set lib dir by default" do
65
+ runner = mock("runner", :null_object => true)
66
+ JettyRails::Runner.should_receive(:new) do |config|
67
+ config.should_not have_key(:lib_dir)
68
+ runner
69
+ end
70
+ load File.dirname(__FILE__) + '/../bin/jetty_rails'
71
+ end
55
72
  end
56
73
 
57
74
  describe "binary executable with command line arguments" do
@@ -139,4 +156,40 @@ describe "binary executable with command line arguments" do
139
156
  load File.dirname(__FILE__) + '/../bin/jetty_rails'
140
157
  end
141
158
 
159
+ it "should take --classes command line option as custom classes dir" do
160
+ ARGV[0] = '--classes'
161
+ ARGV[1] = 'build/java/classes'
162
+ runner = mock("runner", :null_object => true)
163
+ JettyRails::Runner.should_receive(:new) do |config|
164
+ config.should have_key(:classes_dir)
165
+ config[:classes_dir].should == 'build/java/classes'
166
+ runner
167
+ end
168
+ load File.dirname(__FILE__) + '/../bin/jetty_rails'
169
+ end
170
+
171
+ it "should take --lib command line option as custom jars dir" do
172
+ ARGV[0] = '--lib'
173
+ ARGV[1] = 'java/jars'
174
+ runner = mock("runner", :null_object => true)
175
+ JettyRails::Runner.should_receive(:new) do |config|
176
+ config.should have_key(:lib_dir)
177
+ config[:lib_dir].should == 'java/jars'
178
+ runner
179
+ end
180
+ load File.dirname(__FILE__) + '/../bin/jetty_rails'
181
+ end
182
+
183
+ it "should take --jars command line option as custom jars dir" do
184
+ ARGV[0] = '--jars'
185
+ ARGV[1] = 'java/jars'
186
+ runner = mock("runner", :null_object => true)
187
+ JettyRails::Runner.should_receive(:new) do |config|
188
+ config.should have_key(:lib_dir)
189
+ config[:lib_dir].should == 'java/jars'
190
+ runner
191
+ end
192
+ load File.dirname(__FILE__) + '/../bin/jetty_rails'
193
+ end
194
+
142
195
  end
@@ -1 +1,2 @@
1
- --colour
1
+ --colour
2
+ --format specdoc