jubilee 1.1.2-java → 1.1.3-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c16cf766d7efe95d751c3632278689d12f7e291d
4
- data.tar.gz: 998dc3e19d08b137d4544c4df3cf1e6bd65eb0f2
3
+ metadata.gz: 71daf5448046b7a808de9b5c8dbb61989e713d52
4
+ data.tar.gz: 501ac68ce907fe002466c95d3a39ef68f90e9335
5
5
  SHA512:
6
- metadata.gz: f5b84abe8c288243b2f22718cc612b1d04a66458a3d31846b90011aff2b86acfa0c5f9e1d7e92be93d706f5df3c794d526969ffa3ac096dceaad2e51f12bb7c8
7
- data.tar.gz: 7e4845162385349ba33158c10bde3f0be547068b1f0191b484998fa18ccd6bbb4d99c93d872daf921ac8248910cebd7de3900acf6594eecf61966b4109e82653
6
+ metadata.gz: 13e23da533cade9811bf8633c4f9852dc242ec7f497ef63612e44ef54cd09cef75dfe4ace8bb5519f9acf0f54d225c7303cedfec08c0bd8ca5ec9a61aa7879c8
7
+ data.tar.gz: 142003d9a46ee61c5aabb8d1b3ee15171e428d43263991002e0d50632110b49335232978727d7dd07281d9424f3f73d00adac544aaeb67aa0534ed8fbc7b928b
data/.travis.yml CHANGED
@@ -2,4 +2,4 @@ language: ruby
2
2
  rvm:
3
3
  - jruby-19mode # JRuby in 1.9 mode
4
4
 
5
- script: "bundle exec rake test"
5
+ script: "bundle exec rake spec test"
data/Gemfile CHANGED
@@ -12,7 +12,6 @@ group :test do
12
12
  gem 'guard'
13
13
  gem 'guard-minitest'
14
14
  gem 'multipart-post'
15
- gem 'pry'
16
15
  gem 'rcov'
17
16
  gem 'rspec'
18
17
  gem 'capybara'
data/Gemfile.lock CHANGED
@@ -29,7 +29,6 @@ GEM
29
29
  tzinfo (~> 0.3.37)
30
30
  addressable (2.3.5)
31
31
  arel (4.0.1)
32
- atomic (1.1.14)
33
32
  atomic (1.1.14-java)
34
33
  builder (3.1.4)
35
34
  capybara (2.2.0)
@@ -54,7 +53,6 @@ GEM
54
53
  execjs (2.0.2)
55
54
  faraday (0.8.8)
56
55
  multipart-post (~> 1.2.0)
57
- ffi (1.9.3)
58
56
  ffi (1.9.3-java)
59
57
  formatador (0.2.4)
60
58
  git (1.2.6)
@@ -127,10 +125,6 @@ GEM
127
125
  multi_json (~> 1.0)
128
126
  websocket-driver (>= 0.2.0)
129
127
  polyglot (0.3.3)
130
- pry (0.9.12.4)
131
- coderay (~> 1.0)
132
- method_source (~> 0.8)
133
- slop (~> 3.4)
134
128
  pry (0.9.12.4-java)
135
129
  coderay (~> 1.0)
136
130
  method_source (~> 0.8)
@@ -158,7 +152,6 @@ GEM
158
152
  rb-fsevent (0.9.4)
159
153
  rb-inotify (0.9.3)
160
154
  ffi (>= 0.5.0)
161
- rcov (0.9.11)
162
155
  rcov (0.9.11-java)
163
156
  rdoc (4.1.0)
164
157
  json (~> 1.4)
@@ -195,8 +188,6 @@ GEM
195
188
  therubyrhino_jar (>= 1.7.3)
196
189
  therubyrhino_jar (1.7.4)
197
190
  thor (0.18.1)
198
- thread_safe (0.1.3)
199
- atomic
200
191
  thread_safe (0.1.3-java)
201
192
  atomic
202
193
  tilt (1.4.1)
@@ -210,7 +201,6 @@ GEM
210
201
  uglifier (2.4.0)
211
202
  execjs (>= 0.3.0)
212
203
  json (>= 1.8.0)
213
- websocket-driver (0.3.2)
214
204
  websocket-driver (0.3.2-java)
215
205
  xpath (2.0.0)
216
206
  nokogiri (~> 1.3)
@@ -231,7 +221,6 @@ DEPENDENCIES
231
221
  jquery-rails (>= 3.0)
232
222
  multipart-post
233
223
  poltergeist
234
- pry
235
224
  rack (>= 1.4.1)
236
225
  rails (~> 4.0.0)
237
226
  rcov
data/README.md CHANGED
@@ -17,9 +17,6 @@ Why another rack server?
17
17
  > that's designed for modern mobile, web, and enterprise applications."
18
18
  > - vertx.io site
19
19
 
20
- In short, Vertx is nodejs on the JVM, only much more faster, checkout the awesome
21
- [benchmarks](http://vertxproject.wordpress.com/2012/05/09/vert-x-vs-node-js-simple-http-benchmarks/)
22
-
23
20
  By using Vertx, jubilee inherent advantages in terms of performance, and all
24
21
  the other cool features of Vertx:
25
22
 
@@ -36,6 +33,16 @@ Installation
36
33
 
37
34
  Jubilee requires JRuby 1.7.5 or later, and JDK 7+
38
35
 
36
+ Build from source
37
+ -----------------
38
+
39
+ Checkout the source and run the following command in the root directory of the
40
+ project:
41
+
42
+ ```shell
43
+ bundle && bundle exec rake install
44
+ ```
45
+
39
46
  Get started
40
47
  -----------
41
48
 
@@ -62,7 +69,8 @@ Event Bus
62
69
  =========
63
70
 
64
71
  Event Bus is a pub/sub mechanism, it can be used from server to server, server
65
- to client and client to client, with the same API!
72
+ to client and client to client, with the same API! You can use it to build
73
+ living real time web application.
66
74
 
67
75
  Examples
68
76
  --------
@@ -91,7 +99,9 @@ var eb = new vertx.EventBus("/eventbus");
91
99
  eb.send("test", "hello, world");
92
100
  ```
93
101
 
94
- For more advanced examples, checkout the
102
+ In the previous tab it should print the greetings you just sent.
103
+
104
+ For more advanced examples, please checkout the
95
105
  [chatapp](https://github.com/isaiah/jubilee/tree/master/examples/chatapp).
96
106
 
97
107
  Performance Tuning
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ include\
13
13
  end
14
14
 
15
15
  begin
16
- Bundler.setup(:default, :development)
16
+ Bundler.setup(:default, :development, :test)
17
17
  rescue Bundler::BundlerError => e
18
18
  $stderr.puts e.message
19
19
  $stderr.puts "Run `bundle install` to install missing gems"
@@ -86,7 +86,7 @@ desc "Compile the extension, need jdk7 because vertx relies on it"
86
86
  task :compile => [DEST_PATH, "#{DEST_PATH}/META-INF"] do |t|
87
87
  ant.javac :srcdir => "java", :destdir => t.prerequisites.first,
88
88
  :source => "1.7", :target => "1.7", :debug => true, :includeantruntime => false,
89
- :classpath => "${java.class.path}:${sun.boot.class.path}:jars/vertx-core-2.1M3-SNAPSHOT.jar:jars/netty-all-4.0.13.Final.jar:jars/jackson-core-2.2.2.jar:jars/jackson-databind-2.2.2.jar:jars/jackson-annotations-2.2.2.jar:jars/hazelcast-2.6.3.jar"
89
+ :classpath => "${java.class.path}:${sun.boot.class.path}:jars/vertx-core-2.1M3.jar:jars/netty-all-4.0.14.Final.jar:jars/jackson-core-2.2.2.jar:jars/jackson-databind-2.2.2.jar:jars/jackson-annotations-2.2.2.jar:jars/hazelcast-2.6.3.jar"
90
90
  end
91
91
 
92
92
  desc "Copy META-INF"
@@ -102,7 +102,11 @@ end
102
102
 
103
103
  task :build => :jar
104
104
 
105
- desc "Run the specs"
106
- task :spec => :jar do
107
- ruby "-S", "spec", "spec"
105
+ require 'rspec/core/rake_task'
106
+ desc "Run integration tests"
107
+ RSpec::Core::RakeTask.new do |t|
108
+ t.ruby_opts = ['-I"spec:lib"']
109
+ t.pattern = 'spec/**/*_spec.rb'
108
110
  end
111
+
112
+ task :spec => :jar
@@ -6,6 +6,7 @@ import org.jruby.Ruby;
6
6
  import org.jruby.RubyArray;
7
7
  import org.jruby.RubyClass;
8
8
  import org.jruby.RubyFixnum;
9
+ import org.jruby.exceptions.RaiseException;
9
10
  import org.jruby.javasupport.JavaEmbedUtils;
10
11
  import org.jruby.jubilee.impl.RubyIORackInput;
11
12
  import org.jruby.jubilee.impl.RubyNullIO;
@@ -19,6 +20,8 @@ import org.vertx.java.core.http.HttpServerRequest;
19
20
  import org.vertx.java.core.impl.DefaultVertx;
20
21
 
21
22
  import java.io.IOException;
23
+ import java.io.PrintWriter;
24
+ import java.io.StringWriter;
22
25
  import java.util.concurrent.atomic.AtomicBoolean;
23
26
 
24
27
  /**
@@ -92,8 +95,14 @@ public class RackApplication {
92
95
  httpServerResponseClass,
93
96
  request.response());
94
97
  response.respond(resp);
95
- } catch (IOException e) {
96
- // noop
98
+ } catch (Exception e) {
99
+ request.response().setStatusCode(500);
100
+ String message = "Jubilee caught this error: " + e.getMessage() + "\n";
101
+ StringWriter stringWriter = new StringWriter();
102
+ PrintWriter printWriter = new PrintWriter(stringWriter);
103
+ e.printStackTrace(printWriter);
104
+ request.response().end(message + stringWriter.toString());
105
+ e.printStackTrace(runtime.getErrorStream());
97
106
  }
98
107
  }
99
108
  };
data/lib/jubilee.rb CHANGED
@@ -2,9 +2,9 @@ require File.join(File.dirname(__FILE__), "../jars/jackson-core-2.2.2.jar")
2
2
  require File.join(File.dirname(__FILE__), "../jars/jackson-databind-2.2.2.jar")
3
3
  require File.join(File.dirname(__FILE__), "../jars/jackson-annotations-2.2.2.jar")
4
4
  require File.join(File.dirname(__FILE__), "../jars/hazelcast-2.6.3.jar")
5
- require File.join(File.dirname(__FILE__), "../jars/vertx-core-2.1M3-SNAPSHOT.jar")
6
- require File.join(File.dirname(__FILE__), "../jars/vertx-hazelcast-2.1M3-SNAPSHOT.jar")
7
- require File.join(File.dirname(__FILE__), "../jars/netty-all-4.0.13.Final.jar")
5
+ require File.join(File.dirname(__FILE__), "../jars/vertx-core-2.1M3.jar")
6
+ require File.join(File.dirname(__FILE__), "../jars/vertx-hazelcast-2.1M3.jar")
7
+ require File.join(File.dirname(__FILE__), "../jars/netty-all-4.0.14.Final.jar")
8
8
 
9
9
  require 'jubilee/jubilee.jar'
10
10
  require 'rack'
data/lib/jubilee/cli.rb CHANGED
@@ -66,7 +66,7 @@ module Jubilee
66
66
  @options[:daemon] = true
67
67
  end
68
68
  o.on "--dir DIR", "Change to DIR before starting" do |arg|
69
- @options[:working_directory] = arg
69
+ @options[:chdir] = arg
70
70
  end
71
71
  o.on "-p", "--port PORT", "Defind which PORT the server should bind" do |arg|
72
72
  @options[:Port] = arg.to_i
@@ -111,9 +111,15 @@ module Jubilee
111
111
  o.on "--verbose", "Log low level debug information" do
112
112
  @options[:debug] = true
113
113
  end
114
+
114
115
  o.on "-q", "--quiet", "Disable logging" do
115
116
  @options[:quiet] = true
116
117
  end
118
+
119
+ o.on "-v", "--version", "Print the version information" do
120
+ puts "jubilee version #{Jubilee::Version::STRING} on Vert.x 2.1M3"
121
+ exit 0
122
+ end
117
123
  end
118
124
 
119
125
  @parser.banner = "jubilee <options> <rackup file>"
@@ -128,17 +128,20 @@ module Jubilee
128
128
  if block
129
129
  inner_app = Rack::Builder.new(&block).to_app
130
130
  else
131
- if options[:rackup]
132
- Kernel.load(options[:rackup])
133
- inner_app = Object.const_get(File.basename(options[:rackup], '.rb').capitalize.to_sym).new
134
- else
135
- Dir.chdir options[:chdir] if options[:chdir]
136
- inner_app, _ = Rack::Builder.parse_file "config.ru"
131
+ Dir.chdir options[:chdir] if options[:chdir]
132
+ if !File.exist?(rackup)
133
+ raise "Missing rackup file #{File.absolute_path(rackup)}"
137
134
  end
135
+ inner_app, opts = Rack::Builder.parse_file(rackup)
136
+ @options.merge!(opts)
138
137
  end
139
138
  inner_app
140
139
  end
141
140
 
141
+ def rackup
142
+ @options[:rackup] || "config.ru"
143
+ end
144
+
142
145
  def expand_addr(addr, var = nil)
143
146
  return ["0.0.0.0", addr] if addr.is_a?(Fixnum)
144
147
  case addr
Binary file
@@ -2,7 +2,7 @@ module Jubilee
2
2
  module Version
3
3
  MAJOR = 1
4
4
  MINOR = 1
5
- PATCH = 2
5
+ PATCH = 3
6
6
  BUILD = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
@@ -3,6 +3,7 @@ require 'rubygems'
3
3
  require 'sinatra'
4
4
 
5
5
  disable :logging
6
+ set :root, File.dirname(__FILE__)
6
7
 
7
8
  options '/' do
8
9
  response.headers['Access-Control-Allow-Origin'] = '*'
@@ -31,9 +31,10 @@ feature "basic sinatra test" do
31
31
 
32
32
  it "should return 304 for unmodified static assets" do
33
33
  uri = URI.parse("#{Capybara.app_host}/some_page.html")
34
+ mtime = File.mtime(File.expand_path("../../apps/sinatra/basic/public/some_page.html", __FILE__)).gmtime.strftime("%a, %d %b %Y %H:%M:%S GMT")
34
35
  Net::HTTP.start(uri.host, uri.port) do |http|
35
36
  request = Net::HTTP::Get.new(uri.request_uri)
36
- request.add_field('If-Modified-Since', 'Mon, 30 Dec 2013 22:20:25 GMT')
37
+ request.add_field('If-Modified-Since', mtime)
37
38
  response = http.request(request)
38
39
  response.code.should == "304"
39
40
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'jubilee'
2
2
  require 'capybara/poltergeist'
3
3
  require 'capybara/rspec'
4
- require 'ostruct'
5
4
  require 'net/http'
6
5
 
7
6
  Capybara.app_host = "http://localhost:8080"
data/test/config/app.rb CHANGED
@@ -1,5 +1,13 @@
1
1
  class App
2
+ def initialize(resp = nil)
3
+ if resp
4
+ @resp = resp.is_a?(Array) ? resp : [resp]
5
+ else
6
+ @resp = ["embedded app"]
7
+ end
8
+ end
9
+
2
10
  def call(env)
3
- [200, {"Content-Type" => "text/plain"}, ["embeded app"]]
11
+ [200, {"Content-Type" => "text/plain"}, @resp]
4
12
  end
5
13
  end
@@ -0,0 +1,3 @@
1
+ require_relative './app.rb'
2
+
3
+ run App.new("customized body")
@@ -0,0 +1,3 @@
1
+ require_relative './app.rb'
2
+
3
+ run App.new
@@ -3,8 +3,20 @@ require 'jubilee/cli'
3
3
 
4
4
  class TestJubileeCLI < MiniTest::Unit::TestCase
5
5
  def test_parse_options
6
- cli = Jubilee::CLI.new(["app.rb"])
6
+ cli = Jubilee::CLI.new(["app.ru"])
7
7
  cli.parse_options
8
- assert_equal "app.rb", cli.options[:rackup]
8
+ assert_equal "app.ru", cli.options[:rackup]
9
+ end
10
+
11
+ def test_chdir
12
+ cli = Jubilee::CLI.new(["--dir", "test", "app.ru"])
13
+ cli.parse_options
14
+ assert_equal "test", cli.options[:chdir]
15
+ end
16
+
17
+ def test_eventbus_prefix
18
+ cli = Jubilee::CLI.new(["--eventbus", "/eb"])
19
+ cli.parse_options
20
+ assert_equal "/eb", cli.options[:eventbus_prefix]
9
21
  end
10
22
  end
@@ -5,16 +5,29 @@ class TestConfig < MiniTest::Unit::TestCase
5
5
 
6
6
  def setup
7
7
  @tmp = Tempfile.new("jubilee_config")
8
+ @resp = [200, {"Content-Type" => "text/plain"}, ["embedded app"]]
9
+ @dir = Dir.getwd
8
10
  end
9
11
 
10
12
  def teardown
11
13
  @tmp.close
12
14
  @tmp.unlink
15
+ Dir.chdir(@dir)
13
16
  end
14
17
 
15
18
  def test_load
16
- @config = Jubilee::Configuration.new({rackup: "config/app.rb"})
17
- resp = [200, {"Content-Type" => "text/plain"}, ["embeded app"]]
19
+ @config = Jubilee::Configuration.new({rackup: "test/config/config.ru"})
20
+ assert_equal @resp, @config.app.call({})
21
+ end
22
+
23
+ def test_change_dir
24
+ @config = Jubilee::Configuration.new({chdir: "test/config"})
25
+ assert_equal @resp, @config.app.call({})
26
+ end
27
+
28
+ def test_customize_config_file
29
+ @config = Jubilee::Configuration.new({chdir: "test/config", rackup: "app.ru"})
30
+ resp = [200, {"Content-Type" => "text/plain"}, ["customized body"]]
18
31
  assert_equal resp, @config.app.call({})
19
32
  end
20
33
 
@@ -53,18 +66,20 @@ class TestConfig < MiniTest::Unit::TestCase
53
66
  assert_equal("/eb", options[:eventbus_prefix])
54
67
  end
55
68
 
56
- def test_config_file_clustering_true
57
- @tmp.syswrite(%q(clustering true))
58
- options = Jubilee::Configuration.new(config_file: @tmp.path).options
59
- assert_equal("0.0.0.0", options[:cluster_host])
60
- end
69
+ # This will trigger the initialization of vertx cluster manager so the rake
70
+ # task won't quit at the end
71
+ #def test_config_file_clustering_true
72
+ # @tmp.syswrite(%q(clustering true))
73
+ # options = Jubilee::Configuration.new(config_file: @tmp.path).options
74
+ # assert_equal("0.0.0.0", options[:cluster_host])
75
+ #end
61
76
 
62
- def test_config_file_clustering_host_and_port
63
- @tmp.syswrite(%q(clustering "localhost:5701"))
64
- options = Jubilee::Configuration.new(config_file: @tmp.path).options
65
- assert_equal("127.0.0.1", options[:cluster_host])
66
- assert_equal(5701, options[:cluster_port])
67
- end
77
+ #def test_config_file_clustering_host_and_port
78
+ # @tmp.syswrite(%q(clustering "localhost:5701"))
79
+ # options = Jubilee::Configuration.new(config_file: @tmp.path).options
80
+ # assert_equal("127.0.0.1", options[:cluster_host])
81
+ # assert_equal(5701, options[:cluster_port])
82
+ #end
68
83
 
69
84
  def test_config_file_working_directory
70
85
  @tmp.syswrite(%q(working_directory "chatapp"))
@@ -39,9 +39,14 @@ class TestRackServer < MiniTest::Unit::TestCase
39
39
  end
40
40
  end
41
41
 
42
+ class RackCrasher < Rack::Lint
43
+ def call(env)
44
+ raise "Oops"
45
+ end
46
+ end
47
+
42
48
  def setup
43
49
  @valid_request = "GET / HTTP/1.1\r\nHost: test.com\r\nContent-Type: text/plain\r\n\r\n"
44
-
45
50
  @simple = lambda { |env| [200, { "X-Header" => "Works" }, ["Hello"]] }
46
51
  @checker = ErrorChecker.new ServerLint.new(@simple)
47
52
  @host = "localhost"
@@ -49,7 +54,7 @@ class TestRackServer < MiniTest::Unit::TestCase
49
54
  end
50
55
 
51
56
  def teardown
52
- @server.stop
57
+ @server.stop if @server
53
58
  sleep 0.1
54
59
  end
55
60
 
@@ -70,7 +75,6 @@ class TestRackServer < MiniTest::Unit::TestCase
70
75
  @server = Jubilee::Server.new @checker
71
76
 
72
77
  @server.start
73
- sleep 0.1
74
78
 
75
79
  big = "x" * (1024 * 16)
76
80
 
@@ -84,7 +88,7 @@ class TestRackServer < MiniTest::Unit::TestCase
84
88
 
85
89
  def test_path_info
86
90
  input = nil
87
- @server = Jubilee::Server.new (lambda { |env| input = env; @simple.call(env) })
91
+ @server = Jubilee::Server.new(lambda { |env| input = env; @simple.call(env) })
88
92
  @server.start
89
93
 
90
94
  hit(['http://127.0.0.1:8080/test/a/b/c'])
@@ -96,7 +100,6 @@ class TestRackServer < MiniTest::Unit::TestCase
96
100
  input = nil
97
101
  @server = Jubilee::Server.new(Rack::MethodOverride.new(lambda { |env| input = env; @simple.call(env) }))
98
102
  @server.start
99
- sleep 0.1
100
103
 
101
104
  POST('/test/a/b/c', {"_method" => "delete", "user" => 1})
102
105
  assert_equal "DELETE", input['REQUEST_METHOD']
@@ -109,7 +112,7 @@ class TestRackServer < MiniTest::Unit::TestCase
109
112
 
110
113
  def test_query_string
111
114
  input = nil
112
- @server = Jubilee::Server.new (lambda { |env| input = env; @simple.call(env) })
115
+ @server = Jubilee::Server.new(lambda { |env| input = env; @simple.call(env) })
113
116
  @server.start
114
117
 
115
118
  hit(['http://127.0.0.1:8080/test/a/b/c?foo=bar'])
@@ -120,12 +123,11 @@ class TestRackServer < MiniTest::Unit::TestCase
120
123
  def test_post_data
121
124
  require 'rack/request'
122
125
  input = nil
123
- @server = Jubilee::Server.new (lambda { |env| input = env; @simple.call(env) })
126
+ @server = Jubilee::Server.new(lambda { |env| input = env; @simple.call(env) })
124
127
  @server.start
125
- sleep 0.1
126
128
 
127
129
  req = Net::HTTP::Post::Multipart.new("/", "foo" => "bar")
128
- resp = Net::HTTP.start('localhost', 8080) do |http|
130
+ Net::HTTP.start('localhost', 8080) do |http|
129
131
  http.request req
130
132
  end
131
133
 
@@ -134,4 +136,11 @@ class TestRackServer < MiniTest::Unit::TestCase
134
136
  request = Rack::Request.new input
135
137
  assert_equal "bar", request.params["foo"]
136
138
  end
139
+
140
+ def test_end_request_when_rack_crashes
141
+ @server = Jubilee::Server.new(RackCrasher.new(@simple))
142
+ @server.start
143
+ res = hit(['http://127.0.0.1:8080/test'])
144
+ assert_kind_of Net::HTTPServerError, res[0]
145
+ end
137
146
  end
@@ -27,8 +27,8 @@ class TestJubileeServer < MiniTest::Unit::TestCase
27
27
  assert_equal "http", body
28
28
  end
29
29
 
30
- def test_server_embeded
31
- config = Jubilee::Configuration.new(rackup: File.join(File.dirname(__FILE__), "../config/app.rb"))
30
+ def test_server_embedded
31
+ config = Jubilee::Configuration.new(rackup: File.join(File.dirname(__FILE__), "../config/config.ru"))
32
32
  @server = Jubilee::Server.new(config.app)
33
33
  @server.start
34
34
  sleep 0.1
@@ -39,7 +39,7 @@ class TestJubileeServer < MiniTest::Unit::TestCase
39
39
  body = resp.body
40
40
  end
41
41
  end
42
- assert_equal "embeded app", body
42
+ assert_equal "embedded app", body
43
43
  end
44
44
 
45
45
  def test_large_post_body
@@ -70,6 +70,7 @@ class TestUpload < MiniTest::Unit::TestCase
70
70
  assert_equal "HTTP/1.0 200 OK", read[0]
71
71
  resp = eval(read.grep(/^X-Resp: /).first.sub!(/X-Resp: /, ''))
72
72
  assert_equal @sha1.hexdigest, resp[:sha1]
73
+ sock.close
73
74
  end
74
75
 
75
76
  def test_put_content_md5
@@ -115,6 +116,7 @@ class TestUpload < MiniTest::Unit::TestCase
115
116
  assert_equal "HTTP/1.0 200 OK", read[0]
116
117
  resp = eval(read.grep(/^X-Resp: /).first.sub!(/X-Resp: /, ''))
117
118
  assert_equal @sha1.hexdigest, resp[:sha1]
119
+ sock.close
118
120
  end
119
121
 
120
122
  def test_put_keepalive_truncates_small_overwrite
@@ -139,6 +141,7 @@ class TestUpload < MiniTest::Unit::TestCase
139
141
  resp = eval(read.grep(/^X-Resp: /).first.sub!(/X-Resp: /, ''))
140
142
  #assert_equal to_upload, resp[:size]
141
143
  assert_equal @sha1.hexdigest, resp[:sha1]
144
+ sock.close
142
145
  end
143
146
 
144
147
  def test_put_excessive_overwrite_closed
@@ -153,7 +156,8 @@ class TestUpload < MiniTest::Unit::TestCase
153
156
  [ 200, @hdr, [] ]
154
157
  })
155
158
  sock = TCPSocket.new(@addr, @port)
156
- buf = ' ' * @bs
159
+ # buf = ' ' * @bs # Something is wrong with the vertx http compression
160
+ buf = 'a' * @bs
157
161
  sock.syswrite("PUT / HTTP/1.0\r\nContent-Length: #{length}\r\n\r\n")
158
162
 
159
163
  @count.times { sock.syswrite(buf) }
@@ -163,6 +167,7 @@ class TestUpload < MiniTest::Unit::TestCase
163
167
  sock.gets
164
168
  tmp.rewind
165
169
  assert_equal length, tmp.read.to_i
170
+ sock.close
166
171
  end
167
172
 
168
173
  def test_uncomfortable_with_onenine_encodings
data/test/test_helper.rb CHANGED
@@ -9,15 +9,7 @@ require 'yaml'
9
9
  def hit(uris)
10
10
  sleep 0.1
11
11
  uris.map do |u|
12
- res = nil
13
-
14
- if u.kind_of? String
15
- res = Net::HTTP.get(URI.parse(u))
16
- else
17
- url = URI.parse(u[0])
18
- res = Net::HTTP.new(url.host, url.port).start {|h| h.request(u[1]) }
19
- end
20
-
12
+ res = Net::HTTP.get_response(URI(u))
21
13
  assert res != nil, "Didn't get a response: #{u}"
22
14
  res
23
15
  end
@@ -59,6 +51,7 @@ module Helpers
59
51
  attr_reader :status, :response
60
52
 
61
53
  def GET(path, header={})
54
+ sleep 0.1
62
55
  Net::HTTP.start(@host, @port) { |http|
63
56
  user = header.delete(:user)
64
57
  passwd = header.delete(:passwd)
@@ -77,6 +70,7 @@ module Helpers
77
70
  end
78
71
 
79
72
  def POST(path, formdata={}, header={})
73
+ sleep 0.1
80
74
  Net::HTTP.start(@host, @port) { |http|
81
75
  user = header.delete(:user)
82
76
  passwd = header.delete(:passwd)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jubilee
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: java
6
6
  authors:
7
7
  - Isaiah Peng
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-16 00:00:00.000000000 Z
11
+ date: 2014-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -93,9 +93,9 @@ files:
93
93
  - jars/jackson-annotations-2.2.2.jar
94
94
  - jars/jackson-core-2.2.2.jar
95
95
  - jars/jackson-databind-2.2.2.jar
96
- - jars/netty-all-4.0.13.Final.jar
97
- - jars/vertx-core-2.1M3-SNAPSHOT.jar
98
- - jars/vertx-hazelcast-2.1M3-SNAPSHOT.jar
96
+ - jars/netty-all-4.0.14.Final.jar
97
+ - jars/vertx-core-2.1M3.jar
98
+ - jars/vertx-hazelcast-2.1M3.jar
99
99
  - java/resources/META-INF/services/org.vertx.java.core.spi.cluster.ClusterManagerFactory
100
100
  - java/resources/default-cluster.xml
101
101
  - java/src/jubilee/JubileeService.java
@@ -205,16 +205,14 @@ files:
205
205
  - spec/spec_helper.rb
206
206
  - test/.ruby-version
207
207
  - test/config/app.rb
208
+ - test/config/app.ru
209
+ - test/config/config.ru
208
210
  - test/jubilee/test_cli.rb
209
211
  - test/jubilee/test_configuration.rb
210
212
  - test/jubilee/test_rack_server.rb
211
213
  - test/jubilee/test_response.rb
212
214
  - test/jubilee/test_server.rb
213
215
  - test/jubilee/test_upload.rb
214
- - test/sinatra_app/app.rb
215
- - test/sinatra_app/config.ru
216
- - test/sinatra_app/public/test.html
217
- - test/sinatra_app/unicorn.conf.rb
218
216
  - test/test_helper.rb
219
217
  homepage: http://isaiah.github.io/jubilee
220
218
  licenses:
@@ -1,31 +0,0 @@
1
- #$:.unshift("/home/isaiah/codes/ruby/rack/lib")
2
- require 'sinatra'
3
-
4
- class Vertx < Sinatra::Base
5
- get '/' do
6
- "<h1>Hello Sinatra!</h1>"
7
- end
8
-
9
- post "/home/test" do
10
- #require 'pp'
11
- #pp env['rack.input'].gets
12
- #require 'rack/multipart'
13
- #puts "=========="
14
- ##pp Rack::Multipart.parse_multipart(env)
15
- #puts "=========="
16
- ##pp env
17
- #pp request.params
18
- #puts "=========="
19
- a = ""
20
- params.each{|k,v| a << "#{k}:#{v}\n"}
21
- a
22
- end
23
-
24
- get '/app' do
25
- <<EOF
26
- <h1>Powered by Jubilee</h1>
27
- <a href="http://www.github.com/isaiah/jubilee">Homepage</a>
28
- <p>Date: #{Time.now.strftime("%m %d, %Y")}</p>
29
- EOF
30
- end
31
- end
@@ -1,6 +0,0 @@
1
- require './app'
2
- #$:.unshift("/home/isaiah/codes/ruby/rack/lib")
3
- #require 'pp'
4
- #require 'rack/multipart'
5
- #run lambda { |env| pp env; puts "=="; pp env['rack.input'].gets; puts "=="; params = Rack::Multipart.parse_multipart(env); pp params; [200, {"Content-Type" => "text/plain", "Content-Length" => "44"}, params.map{|k,v| k + ":" + v}] }
6
- run Vertx
@@ -1,10 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <title>Test</title>
6
- </head>
7
- <body>
8
- This is a test page.
9
- </body>
10
- </html>
@@ -1,29 +0,0 @@
1
- # Use at least one worker per core if you're on a dedicated server,
2
- # more will usually help for _short_ waits on databases/caches.
3
- worker_processes 10
4
-
5
- # Since Unicorn is never exposed to outside clients, it does not need to
6
- # run on the standard HTTP port (80), there is no reason to start Unicorn
7
- # as root unless it's from system init scripts.
8
- # If running the master process as root and the workers as an unprivileged
9
- # user, do this to switch euid/egid in the workers (also chowns logs):
10
- # user "unprivileged_user", "unprivileged_group"
11
-
12
- # Help ensure your application will always spawn in the symlinked
13
- # "current" directory that Capistrano sets up.
14
-
15
- # listen on both a Unix domain socket and a TCP port,
16
- # we use a shorter backlog for quicker failover when busy
17
- listen 8080, :tcp_nopush => true
18
-
19
- # nuke workers after 30 seconds instead of 60 seconds (the default)
20
- timeout 30
21
-
22
- # feel free to point this anywhere accessible on the filesystem
23
- pid "/tmp/unicorn.pid"
24
-
25
- # By default, the Unicorn logger will write to stderr.
26
- # Additionally, ome applications/frameworks log to stderr or stdout,
27
- # so prevent them from going to /dev/null when daemonized here:
28
- #stderr_path "log/unicorn.stderr.log"
29
- #stdout_path "log/unicorn.stdout.log"