nonnative 1.74.1 → 1.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72da73985160aeefcf6b52e7ada5b68949ddcd2d176d1c120dfefc0c7733e337
4
- data.tar.gz: cfca34b716ab4e4ead800074523567d01fcc323db83265ba0b1daba90afca718
3
+ metadata.gz: 35c9918f534eb4242b02b49a1f150c4c4e9ec29c7eb2e0ee194d5205412d4b37
4
+ data.tar.gz: 8c2745e02814c410981ccb128b80b703b43ba97136f9e5c34071218a4228ccbc
5
5
  SHA512:
6
- metadata.gz: 32eb9dcd95e99e133e0bdec549a5848561a47eef7c002523e05e862fa43360dad8f3307e1c7f22062ea2fd9c285759522ed4a6fa1fac1ce053c74af3dd74fb7e
7
- data.tar.gz: c1c5c0a2f7f0fe1ac9299e7759191b154b53db4b2bd17abf8ef6e248147cae5e16d599171ac2aeb24183b80bb36040d15bc7557b56504a9922088e3efbd9db0a
6
+ metadata.gz: 8190db81a17ac577757b3756b016db3a494347e7124c9c7519b9ed3f723bd3b1c2332a148ddcee341f8d13090f6f286f84580ca2036f174cd81bc1d02af85a93
7
+ data.tar.gz: 4c775aa03c5598b3464b454cbb397404b268d1b13ca47f7309b7b7286020b87195b261b6ae8a037090f0141d2d5b865c939b84e74b7964582b3fb4c8bbc3f90b
data/.rubocop.yml CHANGED
@@ -5,6 +5,7 @@ AllCops:
5
5
  Exclude:
6
6
  - 'bin/**/*'
7
7
  - 'vendor/**/*'
8
+ - 'test/grpc/**/*'
8
9
 
9
10
  Layout/LineLength:
10
11
  Max: 150
data/CHANGELOG.md CHANGED
@@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## [v1.75.0](https://github.com/alexfalkowski/nonnative/releases/tag/v1.75.0) - 2023-11-18
10
+
11
+ - [`dba4d0c`](https://github.com/alexfalkowski/nonnative/commit/dba4d0c4281226b818f95aee637b7433005d4aba) feat: add header (#280)
12
+ - [`9810746`](https://github.com/alexfalkowski/nonnative/commit/98107465057cebcd2c165e50fbfacebd40b7cece) build(deps): update bin (#278)
13
+
9
14
  ## [v1.74.1](https://github.com/alexfalkowski/nonnative/releases/tag/v1.74.1) - 2023-11-16
10
15
 
11
16
  - [`57a67b4`](https://github.com/alexfalkowski/nonnative/commit/57a67b4fde47cf1ab1a8299d759cffcc6cd821f6) fix(http): do not override opts (#277)
data/Gemfile CHANGED
@@ -10,4 +10,3 @@ gemspec
10
10
  gem 'bundler'
11
11
  gem 'coveralls_reborn'
12
12
  gem 'rubocop'
13
- gem 'solargraph'
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nonnative (1.74.1)
4
+ nonnative (1.75.0)
5
5
  concurrent-ruby (~> 1.0, >= 1.0.5)
6
+ config (~> 5.0)
6
7
  cucumber (>= 7, < 10)
7
8
  get_process_mem (~> 0.2.1)
8
9
  grpc (>= 1, < 2)
@@ -16,13 +17,14 @@ GEM
16
17
  remote: https://rubygems.org/
17
18
  specs:
18
19
  ast (2.4.2)
19
- backport (1.2.0)
20
- benchmark (0.3.0)
21
20
  benchmark-malloc (0.2.0)
22
21
  benchmark-perf (0.6.0)
23
22
  benchmark-trend (0.4.0)
24
23
  builder (3.2.4)
25
24
  concurrent-ruby (1.2.2)
25
+ config (5.0.0)
26
+ deep_merge (~> 1.2, >= 1.2.1)
27
+ dry-validation (~> 1.0, >= 1.0.0)
26
28
  coveralls_reborn (0.28.0)
27
29
  simplecov (~> 0.22.0)
28
30
  term-ansicolor (~> 1.7)
@@ -52,28 +54,63 @@ GEM
52
54
  cucumber-messages (>= 18.0, < 22.1)
53
55
  cucumber-messages (22.0.0)
54
56
  cucumber-tag-expressions (5.0.6)
57
+ deep_merge (1.2.2)
55
58
  diff-lcs (1.5.0)
56
59
  docile (1.4.0)
57
60
  domain_name (0.6.20231109)
58
- e2mmap (0.1.0)
61
+ dry-configurable (1.1.0)
62
+ dry-core (~> 1.0, < 2)
63
+ zeitwerk (~> 2.6)
64
+ dry-core (1.0.1)
65
+ concurrent-ruby (~> 1.0)
66
+ zeitwerk (~> 2.6)
67
+ dry-inflector (1.0.0)
68
+ dry-initializer (3.1.1)
69
+ dry-logic (1.5.0)
70
+ concurrent-ruby (~> 1.0)
71
+ dry-core (~> 1.0, < 2)
72
+ zeitwerk (~> 2.6)
73
+ dry-schema (1.13.3)
74
+ concurrent-ruby (~> 1.0)
75
+ dry-configurable (~> 1.0, >= 1.0.1)
76
+ dry-core (~> 1.0, < 2)
77
+ dry-initializer (~> 3.0)
78
+ dry-logic (>= 1.4, < 2)
79
+ dry-types (>= 1.7, < 2)
80
+ zeitwerk (~> 2.6)
81
+ dry-types (1.7.1)
82
+ concurrent-ruby (~> 1.0)
83
+ dry-core (~> 1.0)
84
+ dry-inflector (~> 1.0)
85
+ dry-logic (~> 1.4)
86
+ zeitwerk (~> 2.6)
87
+ dry-validation (1.10.0)
88
+ concurrent-ruby (~> 1.0)
89
+ dry-core (~> 1.0, < 2)
90
+ dry-initializer (~> 3.0)
91
+ dry-schema (>= 1.12, < 2)
92
+ zeitwerk (~> 2.6)
59
93
  ffi (1.16.3)
60
94
  get_process_mem (0.2.7)
61
95
  ffi (~> 1.0)
62
- google-protobuf (3.25.0-x86_64-darwin)
96
+ google-protobuf (3.25.1-arm64-darwin)
97
+ google-protobuf (3.25.1-x86_64-darwin)
98
+ google-protobuf (3.25.1-x86_64-linux)
63
99
  googleapis-common-protos-types (1.10.0)
64
100
  google-protobuf (~> 3.18)
101
+ grpc (1.59.2)
102
+ google-protobuf (~> 3.24)
103
+ googleapis-common-protos-types (~> 1.0)
65
104
  grpc (1.59.2-x86_64-darwin)
66
105
  google-protobuf (~> 3.24)
67
106
  googleapis-common-protos-types (~> 1.0)
107
+ grpc (1.59.2-x86_64-linux)
108
+ google-protobuf (~> 3.24)
109
+ googleapis-common-protos-types (~> 1.0)
68
110
  http-accept (1.7.0)
69
111
  http-cookie (1.0.5)
70
112
  domain_name (~> 0.5)
71
- jaro_winkler (1.5.6)
72
113
  json (2.6.3)
73
- kramdown (2.4.0)
74
- rexml
75
- kramdown-parser-gfm (1.1.0)
76
- kramdown (~> 2.0)
77
114
  language_server-protocol (3.17.0.3)
78
115
  mime-types (3.5.1)
79
116
  mime-types-data (~> 3.2015)
@@ -83,13 +120,7 @@ GEM
83
120
  mustermann (3.0.0)
84
121
  ruby2_keywords (~> 0.0.1)
85
122
  netrc (0.11.0)
86
- nio4r (2.5.9)
87
- nokogiri (1.15.4-arm64-darwin)
88
- racc (~> 1.4)
89
- nokogiri (1.15.4-x86_64-darwin)
90
- racc (~> 1.4)
91
- nokogiri (1.15.4-x86_64-linux)
92
- racc (~> 1.4)
123
+ nio4r (2.6.0)
93
124
  parallel (1.23.0)
94
125
  parser (3.2.2.4)
95
126
  ast (~> 2.4.1)
@@ -101,15 +132,12 @@ GEM
101
132
  rack-protection (3.1.0)
102
133
  rack (~> 2.2, >= 2.2.4)
103
134
  rainbow (3.1.1)
104
- rbs (2.8.4)
105
135
  regexp_parser (2.8.2)
106
136
  rest-client (2.1.0)
107
137
  http-accept (>= 1.7.0, < 2.0)
108
138
  http-cookie (>= 1.0.2, < 2.0)
109
139
  mime-types (>= 1.16, < 4.0)
110
140
  netrc (~> 0.8)
111
- reverse_markdown (2.1.1)
112
- nokogiri
113
141
  rexml (3.2.6)
114
142
  rspec (3.12.0)
115
143
  rspec-core (~> 3.12.0)
@@ -155,22 +183,6 @@ GEM
155
183
  rack (~> 2.2, >= 2.2.4)
156
184
  rack-protection (= 3.1.0)
157
185
  tilt (~> 2.0)
158
- solargraph (0.49.0)
159
- backport (~> 1.2)
160
- benchmark
161
- bundler (~> 2.0)
162
- diff-lcs (~> 1.4)
163
- e2mmap
164
- jaro_winkler (~> 1.5)
165
- kramdown (~> 2.3)
166
- kramdown-parser-gfm (~> 1.1)
167
- parser (~> 3.0)
168
- rbs (~> 2.0)
169
- reverse_markdown (~> 2.0)
170
- rubocop (~> 1.38)
171
- thor (~> 1.0)
172
- tilt (~> 2.0)
173
- yard (~> 0.9, >= 0.9.24)
174
186
  sync (0.5.0)
175
187
  sys-uname (1.2.3)
176
188
  ffi (~> 1.1)
@@ -181,7 +193,7 @@ GEM
181
193
  tins (1.32.1)
182
194
  sync
183
195
  unicode-display_width (2.5.0)
184
- yard (0.9.34)
196
+ zeitwerk (2.6.12)
185
197
 
186
198
  PLATFORMS
187
199
  arm64-darwin-22
@@ -193,7 +205,6 @@ DEPENDENCIES
193
205
  coveralls_reborn
194
206
  nonnative!
195
207
  rubocop
196
- solargraph
197
208
 
198
209
  BUNDLED WITH
199
210
  2.3.9
@@ -11,11 +11,11 @@ module Nonnative
11
11
  attr_accessor :processes, :servers, :services
12
12
 
13
13
  def load_file(path)
14
- file = YAML.load_file(path)
14
+ cfg = Nonnative.configurations(path)
15
15
 
16
- add_processes(file)
17
- add_servers(file)
18
- add_services(file)
16
+ add_processes(cfg)
17
+ add_servers(cfg)
18
+ add_services(cfg)
19
19
  end
20
20
 
21
21
  def process
@@ -48,59 +48,59 @@ module Nonnative
48
48
 
49
49
  private
50
50
 
51
- def add_processes(file)
52
- processes = file['processes'] || []
51
+ def add_processes(cfg)
52
+ processes = cfg.processes || []
53
53
  processes.each do |fd|
54
54
  process do |d|
55
- d.name = fd['name']
55
+ d.name = fd.name
56
56
  d.command = command(fd)
57
- d.timeout = fd['timeout']
58
- d.port = fd['port']
59
- d.log = fd['log']
60
- d.signal = fd['signal']
61
- d.environment = fd['environment']
57
+ d.timeout = fd.timeout
58
+ d.port = fd.port
59
+ d.log = fd.log
60
+ d.signal = fd.signal
61
+ d.environment = fd.environment
62
62
 
63
- proxy d, fd['proxy']
63
+ proxy d, fd.proxy
64
64
  end
65
65
  end
66
66
  end
67
67
 
68
68
  def command(process)
69
- go = process['go']
69
+ go = process.go
70
70
  if go
71
- params = go['parameters'] || []
72
- tools = go['tools'] || []
71
+ params = go.parameters || []
72
+ tools = go.tools || []
73
73
 
74
- -> { Nonnative.go_executable(tools, go['output'], go['executable'], go['command'], *params) }
74
+ -> { Nonnative.go_executable(tools, go.output, go.executable, go.command, *params) }
75
75
  else
76
- -> { process['command'] }
76
+ -> { process.command }
77
77
  end
78
78
  end
79
79
 
80
- def add_servers(file)
81
- servers = file['servers'] || []
80
+ def add_servers(cfg)
81
+ servers = cfg.servers || []
82
82
  servers.each do |fd|
83
83
  server do |s|
84
- s.name = fd['name']
85
- s.klass = Object.const_get(fd['class'])
86
- s.timeout = fd['timeout']
87
- s.port = fd['port']
88
- s.log = fd['log']
84
+ s.name = fd.name
85
+ s.klass = Object.const_get(fd.class)
86
+ s.timeout = fd.timeout
87
+ s.port = fd.port
88
+ s.log = fd.log
89
89
 
90
- proxy s, fd['proxy']
90
+ proxy s, fd.proxy
91
91
  end
92
92
  end
93
93
  end
94
94
 
95
- def add_services(file)
96
- services = file['services'] || []
95
+ def add_services(cfg)
96
+ services = cfg.services || []
97
97
  services.each do |fd|
98
98
  service do |s|
99
- s.name = fd['name']
100
- s.host = fd['host'] if fd['host']
101
- s.port = fd['port']
99
+ s.name = fd.name
100
+ s.host = fd.host if fd.host
101
+ s.port = fd.port
102
102
 
103
- proxy s, fd['proxy']
103
+ proxy s, fd.proxy
104
104
  end
105
105
  end
106
106
  end
@@ -109,13 +109,13 @@ module Nonnative
109
109
  return unless proxy
110
110
 
111
111
  p = {
112
- kind: proxy['kind'],
113
- port: proxy['port'],
114
- log: proxy['log'],
115
- options: proxy['options']
112
+ kind: proxy.kind,
113
+ port: proxy.port,
114
+ log: proxy.log,
115
+ options: proxy.options
116
116
  }
117
117
 
118
- p[:host] = proxy['host'] if proxy['host']
118
+ p[:host] = proxy.host if proxy.host
119
119
 
120
120
  runner.proxy = p
121
121
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nonnative
4
+ class Header
5
+ class << self
6
+ def http_user_agent(user_agent)
7
+ { user_agent: }
8
+ end
9
+
10
+ def grpc_user_agent(user_agent)
11
+ { 'grpc.primary_user_agent' => user_agent }
12
+ end
13
+
14
+ def auth_basic(credentials)
15
+ { authorization: "Basic #{Base64.strict_encode64(credentials)}" }
16
+ end
17
+
18
+ def auth_bearer(token)
19
+ { authorization: "Bearer #{token}" }
20
+ end
21
+ end
22
+ end
23
+ end
@@ -52,7 +52,7 @@ module Nonnative
52
52
  end
53
53
 
54
54
  def process_spawn
55
- environment = service.environment || {}
55
+ environment = service.environment.to_h
56
56
  environment = environment.transform_keys(&:to_s).transform_values(&:to_s)
57
57
 
58
58
  environment.each_key do |k|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nonnative
4
- VERSION = '1.74.1'
4
+ VERSION = '1.75.0'
5
5
  end
data/lib/nonnative.rb CHANGED
@@ -12,6 +12,7 @@ require 'rest-client'
12
12
  require 'puma'
13
13
  require 'puma/server'
14
14
  require 'concurrent'
15
+ require 'config'
15
16
  require 'cucumber'
16
17
  require 'get_process_mem'
17
18
  require 'rspec-benchmark'
@@ -49,11 +50,16 @@ require 'nonnative/invalid_data_socket_pair'
49
50
  require 'nonnative/socket_pair_factory'
50
51
  require 'nonnative/go_command'
51
52
  require 'nonnative/cucumber'
53
+ require 'nonnative/header'
52
54
 
53
55
  module Nonnative
54
56
  class << self
55
57
  attr_reader :pool
56
58
 
59
+ def configurations(*files)
60
+ Config.load_files(files)
61
+ end
62
+
57
63
  def log_lines(path, predicate)
58
64
  File.readlines(path).select { |l| predicate.call(l) }
59
65
  end
data/nonnative.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.metadata['rubygems_mfa_required'] = 'true'
26
26
 
27
27
  spec.add_dependency 'concurrent-ruby', '~> 1.0', '>= 1.0.5'
28
+ spec.add_dependency 'config', '~> 5.0'
28
29
  spec.add_dependency 'cucumber', '>= 7', '< 10'
29
30
  spec.add_dependency 'get_process_mem', '~> 0.2.1'
30
31
  spec.add_dependency 'grpc', ['>= 1', '< 2']
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.74.1
4
+ version: 1.75.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alejandro Falkowski
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-16 00:00:00.000000000 Z
11
+ date: 2023-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -30,6 +30,20 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.0.5
33
+ - !ruby/object:Gem::Dependency
34
+ name: config
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '5.0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '5.0'
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: cucumber
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -202,6 +216,7 @@ files:
202
216
  - lib/nonnative/fault_injection_proxy.rb
203
217
  - lib/nonnative/go_command.rb
204
218
  - lib/nonnative/grpc_server.rb
219
+ - lib/nonnative/header.rb
205
220
  - lib/nonnative/http_client.rb
206
221
  - lib/nonnative/http_server.rb
207
222
  - lib/nonnative/invalid_data_socket_pair.rb