agoo 2.8.4 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of agoo might be problematic. Click here for more details.

@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $: << File.dirname(__FILE__)
4
+ $root_dir = File.dirname(File.expand_path(File.dirname(__FILE__)))
5
+ %w(lib ext).each do |dir|
6
+ $: << File.join($root_dir, dir)
7
+ end
8
+
9
+ require 'minitest'
10
+ require 'minitest/autorun'
11
+ require 'net/http'
12
+
13
+ require 'agoo'
14
+
15
+ class EarlyHandlerTest < Minitest::Test
16
+ @@server_started = false
17
+
18
+ class CallHandler
19
+ def self.call(req)
20
+ headers = { 'Content-Type' => 'text/plain' }
21
+ eh = req['early_hints']
22
+ unless eh.nil?
23
+ headers['Link'] = "Link: </style.css>; rel=preload; as=style, </script.js>; rel=preload; as=script"
24
+ eh.call([
25
+ ["Link", "</style.css>; rel=preload; as=style"],
26
+ ["Link", "</script.js>; rel=preload; as=script"],
27
+ ])
28
+ end
29
+ sleep(0.2)
30
+ [ 200, headers, [ 'called' ]]
31
+ end
32
+ end
33
+
34
+ def start_server
35
+ Agoo::Log.configure(dir: '',
36
+ console: true,
37
+ classic: true,
38
+ colorize: true,
39
+ states: {
40
+ INFO: false,
41
+ DEBUG: false,
42
+ connect: false,
43
+ request: false,
44
+ response: false,
45
+ eval: true,
46
+ })
47
+
48
+ Agoo::Server.init(6473, 'root', thread_count: 1)
49
+
50
+ Agoo::Server.handle(:GET, "/call", CallHandler)
51
+ Agoo::Server.start()
52
+ Agoo::Server::rack_early_hints(true)
53
+
54
+ @@server_started = true
55
+ end
56
+
57
+ def setup
58
+ unless @@server_started
59
+ start_server
60
+ end
61
+ end
62
+
63
+ Minitest.after_run {
64
+ GC.start
65
+ Agoo::shutdown
66
+ }
67
+
68
+ def test_rack_early_hint
69
+ on = Agoo::Server::rack_early_hints(true)
70
+ x = Agoo::Server::rack_early_hints(nil)
71
+ off = Agoo::Server::rack_early_hints(false)
72
+ Agoo::Server::rack_early_hints(true) # back to starting state
73
+ assert_equal(true, on, 'after turning on')
74
+ assert_equal(true, x, 'on query with nil')
75
+ assert_equal(false, off, 'after turning off')
76
+ assert_raises(ArgumentError) { Agoo::Server::rack_early_hints(2) }
77
+ end
78
+
79
+ def test_call
80
+ res = long_request('http://localhost:6473/call')
81
+ assert_equal(%|HTTP/1.1 103 Early Hints\r
82
+ Link: </style.css>; rel=preload; as=style\r
83
+ Link: </script.js>; rel=preload; as=script\r
84
+ \r
85
+ HTTP/1.1 200 OK\r
86
+ Content-Length: 6\r
87
+ Content-Type: text/plain\r
88
+ Link: Link: </style.css>; rel=preload; as=style, </script.js>; rel=preload; as=script\r
89
+ \r
90
+ called|, res)
91
+ end
92
+
93
+ def long_request(uri)
94
+ u = URI(uri)
95
+ res = ''
96
+ TCPSocket.open(u.hostname, u.port) { |s|
97
+ s.send("GET #{u.path} HTTP/1.1\r\n\r\n", 0)
98
+ sleep(0.3) # wait for results to be collected
99
+ res = s.recv(1000)
100
+ }
101
+ res
102
+ end
103
+
104
+ end
@@ -16,7 +16,7 @@ require 'agoo'
16
16
 
17
17
  class RackHandlerTest < Minitest::Test
18
18
  @@server_started = false
19
-
19
+
20
20
  class TellMeHandler
21
21
  def initialize
22
22
  end
@@ -127,13 +127,13 @@ class RackHandlerTest < Minitest::Test
127
127
  req['Accept-Encoding'] = '*'
128
128
  req['Accept'] = 'application/json'
129
129
  req['User-Agent'] = 'Ruby'
130
-
130
+
131
131
  res = Net::HTTP.start(uri.hostname, uri.port) { |h|
132
132
  h.request(req)
133
133
  }
134
134
  assert_equal(Net::HTTPNoContent, res.class)
135
135
  end
136
-
136
+
137
137
  def test_put
138
138
  uri = URI('http://localhost:6467/makeme')
139
139
  req = Net::HTTP::Put.new(uri)
@@ -142,7 +142,7 @@ class RackHandlerTest < Minitest::Test
142
142
  req['Accept'] = 'application/json'
143
143
  req['User-Agent'] = 'Ruby'
144
144
  req.body = 'hello'
145
-
145
+
146
146
  res = Net::HTTP.start(uri.hostname, uri.port) { |h|
147
147
  h.request(req)
148
148
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: agoo
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.4
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Ohler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-14 00:00:00.000000000 Z
11
+ date: 2019-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -57,8 +57,14 @@ files:
57
57
  - ext/agoo/debug.h
58
58
  - ext/agoo/doc.c
59
59
  - ext/agoo/doc.h
60
+ - ext/agoo/domain.c
61
+ - ext/agoo/domain.h
60
62
  - ext/agoo/dtime.c
61
63
  - ext/agoo/dtime.h
64
+ - ext/agoo/early.c
65
+ - ext/agoo/early.h
66
+ - ext/agoo/early_hints.c
67
+ - ext/agoo/early_hints.h
62
68
  - ext/agoo/err.c
63
69
  - ext/agoo/err.h
64
70
  - ext/agoo/error_stream.c
@@ -137,6 +143,8 @@ files:
137
143
  - lib/rack/handler/agoo.rb
138
144
  - test/base_handler_test.rb
139
145
  - test/bind_test.rb
146
+ - test/domain_test.rb
147
+ - test/early_hints_test.rb
140
148
  - test/graphql_test.rb
141
149
  - test/hijack_test.rb
142
150
  - test/log_test.rb
@@ -172,15 +180,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
180
  version: '0'
173
181
  requirements:
174
182
  - Linux or macOS
175
- rubygems_version: 3.0.1
183
+ rubygems_version: 3.0.3
176
184
  signing_key:
177
185
  specification_version: 4
178
186
  summary: An HTTP server
179
187
  test_files:
180
- - test/base_handler_test.rb
181
- - test/bind_test.rb
182
188
  - test/graphql_test.rb
183
189
  - test/hijack_test.rb
184
- - test/log_test.rb
185
190
  - test/rack_handler_test.rb
191
+ - test/base_handler_test.rb
192
+ - test/log_test.rb
193
+ - test/domain_test.rb
194
+ - test/early_hints_test.rb
195
+ - test/bind_test.rb
186
196
  - test/static_test.rb