nonnative 1.14.0 → 1.15.0

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
  SHA256:
3
- metadata.gz: d3d063b72e79c07612ef45de94f2b318c59d600be60823a3b72b97e14b819863
4
- data.tar.gz: e49d9d93bd0657896c7fb1abba459ca59c6c8fc3e59b409fe9c231b20f77cf34
3
+ metadata.gz: 9da36cc51d6dd5d1a440767c808455d81dacbf9aa425c185b6d3c3cba24ba949
4
+ data.tar.gz: b5f13df29130761c28cf96f277392ab7b7a9f0a479ed7539d54b3ffc207687bf
5
5
  SHA512:
6
- metadata.gz: 7d12d87e1f2681fc8e9fef1eecb5b55d81eb773b1845ffb22ab094c17cd9d73bced1874ee277e11c024ca82d66d9f7c4c9d49f6f3827052f06d0ce3bdc86f1f5
7
- data.tar.gz: 6436da5c0393b9842881722a50f23e80f3264c0a36006e9aeb8402b26910645e875313b430da8df9bd2ba02b5ff08bce576cc74f590a8b5707f6454a27ca83b4
6
+ metadata.gz: 7a7efe67bb02696eec25e19ff231199219a4e709fb74b746d3d7326358131331f7cb6300e9ec466eec1a7d644d31968d9015ca2a94187d8870fa5c8e6fdf20a1
7
+ data.tar.gz: 2ef73fa52844639694efa346214f95f6705ffbfeea2b8ab6a1476948cd485a7aaf7269150be72b43dd7d660021c77beb8c61a875a10782061557963824c30e03
@@ -8,6 +8,12 @@ Layout/LineLength:
8
8
  Metrics/MethodLength:
9
9
  Max: 15
10
10
 
11
+ Metrics/BlockLength:
12
+ Max: 35
13
+
14
+ Metrics/AbcSize:
15
+ Max: 20
16
+
11
17
  Style/Documentation:
12
18
  Enabled: false
13
19
 
@@ -37,3 +43,18 @@ Layout/EmptyLinesAroundAttributeAccessor:
37
43
 
38
44
  Style/SlicingWithRange:
39
45
  Enabled: true
46
+
47
+ Lint/DeprecatedOpenSSLConstant:
48
+ Enabled: true
49
+
50
+ Lint/MixedRegexpCaptureTypes:
51
+ Enabled: true
52
+
53
+ Style/RedundantRegexpCharacterClass:
54
+ Enabled: true
55
+
56
+ Style/RedundantRegexpEscape:
57
+ Enabled: true
58
+
59
+ Style/RedundantFetchBlock:
60
+ Enabled: true
@@ -1,10 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nonnative (1.14.0)
4
+ nonnative (1.15.0)
5
5
  cucumber (~> 3.1, >= 3.1.2)
6
6
  grpc (~> 1.28)
7
- puma (~> 4.3, >= 4.3.3)
8
7
  rest-client (~> 2.1)
9
8
  rspec-benchmark (~> 0.6.0)
10
9
  rspec-expectations (~> 3.9, >= 3.9.2)
@@ -18,7 +17,7 @@ GEM
18
17
  tins (~> 1.0)
19
18
  ast (2.4.1)
20
19
  backport (1.1.2)
21
- backports (3.17.2)
20
+ backports (3.18.1)
22
21
  benchmark (0.1.0)
23
22
  benchmark-malloc (0.2.0)
24
23
  benchmark-perf (0.6.0)
@@ -47,7 +46,7 @@ GEM
47
46
  cucumber-expressions (6.0.1)
48
47
  cucumber-tag_expressions (1.1.1)
49
48
  cucumber-wire (0.0.1)
50
- diff-lcs (1.3)
49
+ diff-lcs (1.4.2)
51
50
  docile (1.3.2)
52
51
  domain_name (0.5.20190701)
53
52
  unf (>= 0.0.5, < 1.0.0)
@@ -80,24 +79,22 @@ GEM
80
79
  mustermann (1.1.1)
81
80
  ruby2_keywords (~> 0.0.1)
82
81
  netrc (0.11.0)
83
- nio4r (2.5.2)
84
82
  nokogiri (1.10.9)
85
83
  mini_portile2 (~> 2.4.0)
86
84
  parallel (1.19.2)
87
- parser (2.7.1.3)
88
- ast (~> 2.4.0)
85
+ parser (2.7.1.4)
86
+ ast (~> 2.4.1)
89
87
  pastel (0.7.4)
90
88
  equatable (~> 0.6)
91
89
  tty-color (~> 0.5)
92
90
  protocol (2.0.0)
93
91
  ruby_parser (~> 3.0)
94
- puma (4.3.5)
95
- nio4r (~> 2.0)
96
92
  rack (2.2.3)
97
93
  rack-protection (2.0.8.1)
98
94
  rack
99
95
  rainbow (3.0.0)
100
96
  rake (13.0.1)
97
+ regexp_parser (1.7.1)
101
98
  rest-client (2.1.0)
102
99
  http-accept (>= 1.7.0, < 2.0)
103
100
  http-cookie (>= 1.0.2, < 2.0)
@@ -124,13 +121,17 @@ GEM
124
121
  diff-lcs (>= 1.2.0, < 2.0)
125
122
  rspec-support (~> 3.9.0)
126
123
  rspec-support (3.9.3)
127
- rubocop (0.83.0)
124
+ rubocop (0.86.0)
128
125
  parallel (~> 1.10)
129
126
  parser (>= 2.7.0.1)
130
127
  rainbow (>= 2.2.2, < 4.0)
128
+ regexp_parser (>= 1.7)
131
129
  rexml
130
+ rubocop-ast (>= 0.0.3, < 1.0)
132
131
  ruby-progressbar (~> 1.7)
133
132
  unicode-display_width (>= 1.4.0, < 2.0)
133
+ rubocop-ast (0.1.0)
134
+ parser (>= 2.7.0.1)
134
135
  ruby-progressbar (1.10.1)
135
136
  ruby2_keywords (0.0.2)
136
137
  ruby_parser (3.14.2)
@@ -146,7 +147,7 @@ GEM
146
147
  rack (~> 2.0)
147
148
  rack-protection (= 2.0.8.1)
148
149
  tilt (~> 2.0)
149
- solargraph (0.39.8)
150
+ solargraph (0.39.11)
150
151
  backport (~> 1.1)
151
152
  benchmark
152
153
  bundler (>= 1.17.2)
@@ -185,7 +186,7 @@ DEPENDENCIES
185
186
  grpc-tools (~> 1.28)
186
187
  nonnative!
187
188
  rake (~> 13.0, >= 13.0.1)
188
- rubocop (~> 0.83.0)
189
+ rubocop (~> 0.86.0)
189
190
  simplecov (~> 0.17.1)
190
191
  solargraph (~> 0.39.7)
191
192
 
data/README.md CHANGED
@@ -38,13 +38,11 @@ Configure nonnative with the following:
38
38
  - Port to verify.
39
39
  - The class for servers.
40
40
  - The file you want STDOUT to be logged to for processes.
41
- - The strategy (Startup will start the process once and before will hook into cucumbers Before and After) for processes.
41
+ - The strategy for processes/servers.
42
+ * Startup will start the process once.
43
+ * Before will hook into cucumbers Before and After.
42
44
 
43
- ### Ruby
44
-
45
- We can start a process, server or both.
46
-
47
- #### Processes
45
+ ### Processes
48
46
 
49
47
  Setup it up programmatically:
50
48
 
@@ -55,13 +53,16 @@ Nonnative.configure do |config|
55
53
  config.strategy = :startup or :before or :manual
56
54
 
57
55
  config.process do |d|
56
+ d.name = 'start_1'
58
57
  d.command = 'features/support/bin/start 12_321'
59
58
  d.timeout = 0.5
60
59
  d.port = 12_321
61
60
  d.file = 'features/logs/12_321.log'
61
+ d.signal = 'INT' # Possible values are described in Signal.list.keys
62
62
  end
63
63
 
64
64
  config.process do |d|
65
+ d.name = 'start_2'
65
66
  d.command = 'features/support/bin/start 12_322'
66
67
  d.timeout = 0.5
67
68
  d.port = 12_322
@@ -77,11 +78,14 @@ version: 1.0
77
78
  strategy: manual
78
79
  processes:
79
80
  -
81
+ name: start_1
80
82
  command: features/support/bin/start 12_321
81
83
  timeout: 5
82
84
  port: 12321
83
85
  file: features/logs/12_321.log
86
+ signal: INT # Possible values are described in Signal.list.keys
84
87
  -
88
+ name: start_2
85
89
  command: features/support/bin/start 12_322
86
90
  timeout: 5
87
91
  port: 12322
@@ -96,7 +100,7 @@ require 'nonnative'
96
100
  Nonnative.load_configuration('configuration.yml')
97
101
  ```
98
102
 
99
- #### Servers
103
+ ### Servers
100
104
 
101
105
  Define your server:
102
106
 
@@ -130,12 +134,14 @@ Nonnative.configure do |config|
130
134
  config.strategy = :manual
131
135
 
132
136
  config.server do |d|
137
+ d.name = 'server_1'
133
138
  d.klass = Nonnative::EchoServer
134
139
  d.timeout = 1
135
140
  d.port = 12_323
136
141
  end
137
142
 
138
143
  config.server do |d|
144
+ d.name = 'server_2'
139
145
  d.klass = Nonnative::EchoServer
140
146
  d.timeout = 1
141
147
  d.port = 12_324
@@ -150,10 +156,12 @@ version: 1.0
150
156
  strategy: manual
151
157
  servers:
152
158
  -
159
+ name: server_1
153
160
  klass: Nonnative::EchoServer
154
161
  timeout: 1
155
162
  port: 12323
156
163
  -
164
+ name: server_2
157
165
  klass: Nonnative::EchoServer
158
166
  timeout: 1
159
167
  port: 12324
@@ -167,26 +175,22 @@ require 'nonnative'
167
175
  Nonnative.load_configuration('configuration.yml')
168
176
  ```
169
177
 
170
- ##### HTTP
178
+ #### HTTP
171
179
 
172
180
  Define your server:
173
181
 
174
182
  ```ruby
175
183
  module Nonnative
176
184
  module Features
177
- module Hello
178
- class << self
179
- def registered(app)
180
- app.get '/hello' do
181
- 'Hello World!'
182
- end
183
- end
185
+ class Application < Sinatra::Base
186
+ get '/hello' do
187
+ 'Hello World!'
184
188
  end
185
189
  end
186
190
 
187
191
  class HTTPServer < Nonnative::HTTPServer
188
- def configure(http)
189
- http.register(Hello)
192
+ def app
193
+ Application.new
190
194
  end
191
195
  end
192
196
  end
@@ -202,6 +206,7 @@ Nonnative.configure do |config|
202
206
  config.strategy = :manual
203
207
 
204
208
  config.server do |d|
209
+ d.name = 'http_server_1'
205
210
  d.klass = Nonnative::Features::HTTPServer
206
211
  d.timeout = 1
207
212
  d.port = 4567
@@ -216,6 +221,7 @@ version: 1.0
216
221
  strategy: manual
217
222
  servers:
218
223
  -
224
+ name: http_server_1
219
225
  klass: Nonnative::Features::HTTPServer
220
226
  timeout: 1
221
227
  port: 4567
@@ -229,7 +235,7 @@ require 'nonnative'
229
235
  Nonnative.load_configuration('configuration.yml')
230
236
  ```
231
237
 
232
- ##### gRPC
238
+ #### gRPC
233
239
 
234
240
  Define your server:
235
241
 
@@ -260,6 +266,7 @@ Nonnative.configure do |config|
260
266
  config.strategy = :manual
261
267
 
262
268
  config.server do |d|
269
+ d.name = 'grpc_server_1'
263
270
  d.klass = Nonnative::Features::GRPCServer
264
271
  d.timeout = 1
265
272
  d.port = 9002
@@ -274,6 +281,7 @@ version: 1.0
274
281
  strategy: manual
275
282
  servers:
276
283
  -
284
+ name: grpc_server_1
277
285
  klass: Nonnative::Features::GRPCServer
278
286
  timeout: 1
279
287
  port: 9002
@@ -286,3 +294,35 @@ require 'nonnative'
286
294
 
287
295
  Nonnative.load_configuration('configuration.yml')
288
296
  ```
297
+ #### Proxies
298
+
299
+ We allow different proxies to be configured. These proxies can be used to simulate all kind of situations. The proxies that can be configured are:
300
+ - none (this is the default)
301
+ - chaos
302
+
303
+ Setup it up programmatically:
304
+
305
+ ```ruby
306
+ require 'nonnative'
307
+
308
+ Nonnative.configure do |config|
309
+ config.strategy = :manual
310
+
311
+ config.server do |d|
312
+ d.proxy.type = 'chaos'
313
+ d.proxy.port = 20_000
314
+ end
315
+ end
316
+ ```
317
+
318
+ Setup it up through configuration:
319
+
320
+ ```yaml
321
+ version: 1.0
322
+ strategy: manual
323
+ servers:
324
+ -
325
+ proxy:
326
+ type: chaos
327
+ port: 20000
328
+ ```
@@ -4,6 +4,7 @@ require 'socket'
4
4
  require 'timeout'
5
5
  require 'thwait'
6
6
  require 'yaml'
7
+ require 'webrick'
7
8
 
8
9
  require 'grpc'
9
10
  require 'sinatra'
@@ -18,16 +19,22 @@ require 'nonnative/port'
18
19
  require 'nonnative/configuration'
19
20
  require 'nonnative/configuration_process'
20
21
  require 'nonnative/configuration_server'
22
+ require 'nonnative/configuration_proxy'
21
23
  require 'nonnative/service'
22
24
  require 'nonnative/command'
23
25
  require 'nonnative/pool'
24
26
  require 'nonnative/server'
25
27
  require 'nonnative/http_client'
26
- require 'nonnative/application'
27
28
  require 'nonnative/http_server'
28
29
  require 'nonnative/grpc_server'
29
30
  require 'nonnative/grpc_server'
30
31
  require 'nonnative/observability'
32
+ require 'nonnative/proxy_factory'
33
+ require 'nonnative/proxy'
34
+ require 'nonnative/no_proxy'
35
+ require 'nonnative/chaos_proxy'
36
+
37
+ Thread.abort_on_exception = true
31
38
 
32
39
  module Nonnative
33
40
  class << self
@@ -40,7 +47,7 @@ module Nonnative
40
47
  end
41
48
 
42
49
  def configure
43
- yield configuration if block_given?
50
+ yield configuration
44
51
 
45
52
  require "nonnative/#{configuration.strategy}"
46
53
  end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nonnative
4
+ class ChaosProxy < Nonnative::Proxy
5
+ def start
6
+ @tcp_server = ::TCPServer.new('0.0.0.0', service.port)
7
+ @thread = Thread.new { perform_start }
8
+ end
9
+
10
+ def stop
11
+ thread.terminate
12
+ tcp_server.close
13
+ end
14
+
15
+ def port
16
+ service.proxy.port
17
+ end
18
+
19
+ private
20
+
21
+ attr_reader :tcp_server, :thread
22
+
23
+ def perform_start
24
+ loop do
25
+ Thread.start(tcp_server.accept) { |local_socket| connect(local_socket) }
26
+ end
27
+ end
28
+
29
+ def connect(local_socket)
30
+ remote_socket = create_remote_socket
31
+ return unless remote_socket
32
+
33
+ loop do
34
+ ready = select([local_socket, remote_socket], nil, nil)
35
+
36
+ break if write(ready, local_socket, remote_socket)
37
+ break if write(ready, remote_socket, local_socket)
38
+ end
39
+ ensure
40
+ local_socket.close
41
+ remote_socket&.close
42
+ end
43
+
44
+ def create_remote_socket
45
+ timeout.perform do
46
+ ::TCPSocket.new('0.0.0.0', port)
47
+ rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
48
+ sleep 0.01
49
+ retry
50
+ end
51
+ end
52
+
53
+ def write(ready, socket1, socket2)
54
+ if ready[0].include?(socket1)
55
+ data = socket1.recv(1024)
56
+ return true if data.empty?
57
+
58
+ socket2.write(data)
59
+ end
60
+
61
+ false
62
+ end
63
+ end
64
+ end
@@ -2,15 +2,6 @@
2
2
 
3
3
  module Nonnative
4
4
  class Command < Nonnative::Service
5
- def initialize(service)
6
- @service = service
7
- @timeout = Nonnative::Timeout.new(service.timeout)
8
- end
9
-
10
- def name
11
- service.command
12
- end
13
-
14
5
  def start
15
6
  unless command_exists?
16
7
  @pid = command_spawn
@@ -39,10 +30,11 @@ module Nonnative
39
30
 
40
31
  private
41
32
 
42
- attr_reader :service, :timeout, :pid
33
+ attr_reader :pid
43
34
 
44
35
  def command_kill
45
- Process.kill('SIGINT', pid)
36
+ signal = Signal.list[service.signal || 'INT'] || Signal.list['INT']
37
+ Process.kill(signal, pid)
46
38
  end
47
39
 
48
40
  def command_spawn
@@ -52,7 +44,8 @@ module Nonnative
52
44
  def command_exists?
53
45
  return false if pid.nil?
54
46
 
55
- Process.kill(0, pid)
47
+ signal = Signal.list['EXIT']
48
+ Process.kill(signal, pid)
56
49
  true
57
50
  rescue Errno::ESRCH
58
51
  false
@@ -20,10 +20,12 @@ module Nonnative
20
20
  processes = file['processes'] || []
21
21
  processes.each do |fd|
22
22
  config.process do |d|
23
+ d.name = fd['name']
23
24
  d.command = fd['command']
24
25
  d.timeout = fd['timeout']
25
26
  d.port = fd['port']
26
27
  d.file = fd['file']
28
+ d.signal = fd['signal']
27
29
  end
28
30
  end
29
31
  end
@@ -32,9 +34,17 @@ module Nonnative
32
34
  servers = file['servers'] || []
33
35
  servers.each do |fd|
34
36
  config.server do |s|
37
+ s.name = fd['name']
35
38
  s.klass = Object.const_get(fd['klass'])
36
39
  s.timeout = fd['timeout']
37
40
  s.port = fd['port']
41
+
42
+ proxy = fd['proxy']
43
+
44
+ if proxy
45
+ s.proxy.type = proxy['type']
46
+ s.proxy.port = proxy['port']
47
+ end
38
48
  end
39
49
  end
40
50
  end
@@ -2,9 +2,11 @@
2
2
 
3
3
  module Nonnative
4
4
  class ConfigurationProcess
5
+ attr_accessor :name
5
6
  attr_accessor :command
6
7
  attr_accessor :timeout
7
8
  attr_accessor :port
8
9
  attr_accessor :file
10
+ attr_accessor :signal
9
11
  end
10
12
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nonnative
4
+ class ConfigurationProxy
5
+ attr_accessor :type
6
+ attr_accessor :port
7
+
8
+ def initialize
9
+ self.type = 'none'
10
+ self.port = 0
11
+ end
12
+ end
13
+ end
@@ -2,8 +2,14 @@
2
2
 
3
3
  module Nonnative
4
4
  class ConfigurationServer
5
+ attr_accessor :name
5
6
  attr_accessor :klass
6
7
  attr_accessor :timeout
7
8
  attr_accessor :port
9
+ attr_accessor :proxy
10
+
11
+ def initialize
12
+ self.proxy = Nonnative::ConfigurationProxy.new
13
+ end
8
14
  end
9
15
  end
@@ -5,17 +5,19 @@ module Nonnative
5
5
  def initialize(service)
6
6
  @server = GRPC::RpcServer.new
7
7
 
8
- server.add_http2_port("0.0.0.0:#{service.port}", :this_port_is_insecure)
9
- configure server
10
-
11
8
  super service
12
9
  end
13
10
 
14
- def configure(grpc)
11
+ def configure(server)
15
12
  # Classes will add configuration
16
13
  end
17
14
 
15
+ protected
16
+
18
17
  def perform_start
18
+ server.add_http2_port("0.0.0.0:#{proxy.port}", :this_port_is_insecure)
19
+ configure server
20
+
19
21
  server.run
20
22
  end
21
23
 
@@ -23,8 +25,6 @@ module Nonnative
23
25
  server.stop
24
26
  end
25
27
 
26
- protected
27
-
28
28
  def wait_start
29
29
  server.wait_till_running(service.timeout)
30
30
  end
@@ -2,40 +2,27 @@
2
2
 
3
3
  module Nonnative
4
4
  class HTTPServer < Nonnative::Server
5
- def initialize(service)
6
- @timeout = Nonnative::Timeout.new(service.timeout)
7
- @queue = Queue.new
8
-
9
- Application.set :port, service.port
10
- configure Application
11
-
12
- super service
13
- end
14
-
15
- def configure(http)
16
- # Classes will add configuration
17
- end
5
+ protected
18
6
 
19
7
  def perform_start
20
- Application.start! do |server|
21
- queue << server
8
+ options = {
9
+ Host: '0.0.0.0',
10
+ Port: proxy.port,
11
+ Logger: ::WEBrick::Log.new('/dev/null'),
12
+ AccessLog: []
13
+ }
14
+
15
+ Rack::Handler::WEBrick.run(app, options) do |server|
16
+ @server = server
22
17
  end
23
18
  end
24
19
 
25
20
  def perform_stop
26
- Application.stop!
27
- end
28
-
29
- protected
30
-
31
- def wait_start
32
- timeout.perform do
33
- queue.pop
34
- end
21
+ server.shutdown
35
22
  end
36
23
 
37
24
  private
38
25
 
39
- attr_reader :timeout, :queue
26
+ attr_reader :queue, :server
40
27
  end
41
28
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nonnative
4
+ class NoProxy < Proxy
5
+ def start
6
+ # Do nothing.
7
+ end
8
+
9
+ def stop
10
+ # Do nothing.
11
+ end
12
+
13
+ def port
14
+ service.port
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nonnative
4
+ class Proxy
5
+ def initialize(service)
6
+ @service = service
7
+ @timeout = Nonnative::Timeout.new(service.timeout)
8
+ end
9
+
10
+ protected
11
+
12
+ attr_reader :service, :timeout
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nonnative
4
+ class ProxyFactory
5
+ class << self
6
+ def create(service)
7
+ case service.proxy.type
8
+ when 'chaos'
9
+ ChaosProxy.new(service)
10
+ else
11
+ # By default we want no proxy.
12
+ NoProxy.new(service)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -3,17 +3,17 @@
3
3
  module Nonnative
4
4
  class Server < Nonnative::Service
5
5
  def initialize(service)
6
- @service = service
7
6
  @id = SecureRandom.hex(5)
8
- end
7
+ @proxy = Nonnative::ProxyFactory.create(service)
9
8
 
10
- def name
11
- self.class.to_s
9
+ super service
12
10
  end
13
11
 
14
12
  def start
15
13
  unless thread
14
+ proxy.start
16
15
  @thread = Thread.new { perform_start }
16
+
17
17
  wait_start
18
18
  end
19
19
 
@@ -24,6 +24,8 @@ module Nonnative
24
24
  if thread
25
25
  perform_stop
26
26
  thread.terminate
27
+ proxy.stop
28
+
27
29
  @thread = nil
28
30
  wait_stop
29
31
  end
@@ -31,6 +33,12 @@ module Nonnative
31
33
  id
32
34
  end
33
35
 
34
- attr_reader :service, :id, :thread
36
+ protected
37
+
38
+ attr_reader :id
39
+
40
+ private
41
+
42
+ attr_reader :proxy, :thread
35
43
  end
36
44
  end
@@ -2,14 +2,25 @@
2
2
 
3
3
  module Nonnative
4
4
  class Service
5
+ def initialize(service)
6
+ @service = service
7
+ @timeout = Nonnative::Timeout.new(service.timeout)
8
+ end
9
+
10
+ def name
11
+ service.name
12
+ end
13
+
5
14
  protected
6
15
 
16
+ attr_reader :service, :timeout
17
+
7
18
  def wait_start
8
- sleep 0.1
19
+ sleep 0.2
9
20
  end
10
21
 
11
22
  def wait_stop
12
- sleep 0.1
23
+ sleep 0.2
13
24
  end
14
25
  end
15
26
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nonnative
4
- VERSION = '1.14.0'
4
+ VERSION = '1.15.0'
5
5
  end
@@ -26,7 +26,6 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency 'cucumber', '~> 3.1', '>= 3.1.2'
28
28
  spec.add_dependency 'grpc', '~> 1.28'
29
- spec.add_dependency 'puma', '~> 4.3', '>= 4.3.3'
30
29
  spec.add_dependency 'rest-client', '~> 2.1'
31
30
  spec.add_dependency 'rspec-benchmark', '~> 0.6.0'
32
31
  spec.add_dependency 'rspec-expectations', '~> 3.9', '>= 3.9.2'
@@ -36,7 +35,7 @@ Gem::Specification.new do |spec|
36
35
  spec.add_development_dependency 'chutney', '~> 2.0', '>= 2.0.3.1'
37
36
  spec.add_development_dependency 'grpc-tools', '~> 1.28'
38
37
  spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
39
- spec.add_development_dependency 'rubocop', '~> 0.83.0'
38
+ spec.add_development_dependency 'rubocop', '~> 0.86.0'
40
39
  spec.add_development_dependency 'simplecov', '~> 0.17.1'
41
40
  spec.add_development_dependency 'solargraph', '~> 0.39.7'
42
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nonnative
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.0
4
+ version: 1.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Falkowski
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-18 00:00:00.000000000 Z
11
+ date: 2020-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cucumber
@@ -44,26 +44,6 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.28'
47
- - !ruby/object:Gem::Dependency
48
- name: puma
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '4.3'
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: 4.3.3
57
- type: :runtime
58
- prerelease: false
59
- version_requirements: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - "~>"
62
- - !ruby/object:Gem::Version
63
- version: '4.3'
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: 4.3.3
67
47
  - !ruby/object:Gem::Dependency
68
48
  name: rest-client
69
49
  requirement: !ruby/object:Gem::Requirement
@@ -212,14 +192,14 @@ dependencies:
212
192
  requirements:
213
193
  - - "~>"
214
194
  - !ruby/object:Gem::Version
215
- version: 0.83.0
195
+ version: 0.86.0
216
196
  type: :development
217
197
  prerelease: false
218
198
  version_requirements: !ruby/object:Gem::Requirement
219
199
  requirements:
220
200
  - - "~>"
221
201
  - !ruby/object:Gem::Version
222
- version: 0.83.0
202
+ version: 0.86.0
223
203
  - !ruby/object:Gem::Dependency
224
204
  name: simplecov
225
205
  requirement: !ruby/object:Gem::Requirement
@@ -270,20 +250,24 @@ files:
270
250
  - bin/console
271
251
  - bin/setup
272
252
  - lib/nonnative.rb
273
- - lib/nonnative/application.rb
274
253
  - lib/nonnative/before.rb
254
+ - lib/nonnative/chaos_proxy.rb
275
255
  - lib/nonnative/command.rb
276
256
  - lib/nonnative/configuration.rb
277
257
  - lib/nonnative/configuration_process.rb
258
+ - lib/nonnative/configuration_proxy.rb
278
259
  - lib/nonnative/configuration_server.rb
279
260
  - lib/nonnative/error.rb
280
261
  - lib/nonnative/grpc_server.rb
281
262
  - lib/nonnative/http_client.rb
282
263
  - lib/nonnative/http_server.rb
283
264
  - lib/nonnative/manual.rb
265
+ - lib/nonnative/no_proxy.rb
284
266
  - lib/nonnative/observability.rb
285
267
  - lib/nonnative/pool.rb
286
268
  - lib/nonnative/port.rb
269
+ - lib/nonnative/proxy.rb
270
+ - lib/nonnative/proxy_factory.rb
287
271
  - lib/nonnative/server.rb
288
272
  - lib/nonnative/service.rb
289
273
  - lib/nonnative/start_error.rb
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Nonnative
4
- class Application < Sinatra::Application
5
- set :bind, '0.0.0.0'
6
- set :server, :puma
7
- set :logging, false
8
- set :quiet, true
9
- end
10
- end