nonnative 1.27.0 → 1.34.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 +4 -4
- data/.circleci/config.yml +13 -5
- data/.config/cucumber.yml +1 -1
- data/.rubocop.yml +4 -69
- data/CHANGELOG.md +117 -0
- data/Gemfile.lock +68 -94
- data/Makefile +1 -1
- data/README.md +50 -5
- data/lib/nonnative.rb +3 -1
- data/lib/nonnative/configuration.rb +21 -14
- data/lib/nonnative/delay_socket_pair.rb +1 -1
- data/lib/nonnative/go_command.rb +40 -0
- data/lib/nonnative/strategy.rb +28 -0
- data/lib/nonnative/timeout.rb +2 -4
- data/lib/nonnative/version.rb +1 -1
- data/nonnative.gemspec +5 -7
- metadata +17 -32
- data/Rakefile +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 796ba4a8f59903f33fd52ecc0657c9dd741ecb79002d9d0397a8b6b578de3323
|
|
4
|
+
data.tar.gz: f0a7a0ae04ad4afb063e630ba6a79573105cd2ac4b2bf73e9126e461bf1a71d6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d56caea50dbc0451c2708626b48b444781f2b79ff290b1d64b42a6401d384179c4ad62641706d213615feda86e780d410bd069914c437343b9c39803db2f2d39
|
|
7
|
+
data.tar.gz: 4f0ad200212c58805e3e4d74900773520ad99156772344578ec3daa80aeb690808f682d240433dfc521502235e3984c84d893a875444f0a5ea6eefb5dcf710f2
|
data/.circleci/config.yml
CHANGED
|
@@ -5,11 +5,7 @@ orbs:
|
|
|
5
5
|
jobs:
|
|
6
6
|
build:
|
|
7
7
|
docker:
|
|
8
|
-
- image:
|
|
9
|
-
environment:
|
|
10
|
-
BUNDLE_JOBS: "3"
|
|
11
|
-
BUNDLE_PATH: vendor/bundle
|
|
12
|
-
BUNDLE_RETRY: "3"
|
|
8
|
+
- image: alexfalkowski/ruby:2.7
|
|
13
9
|
steps:
|
|
14
10
|
- checkout
|
|
15
11
|
- restore_cache:
|
|
@@ -30,9 +26,21 @@ jobs:
|
|
|
30
26
|
- store_artifacts:
|
|
31
27
|
path: features/logs
|
|
32
28
|
- sonarcloud/scan
|
|
29
|
+
release:
|
|
30
|
+
docker:
|
|
31
|
+
- image: alexfalkowski/release:1.0
|
|
32
|
+
steps:
|
|
33
|
+
- checkout
|
|
34
|
+
- run: release.sh
|
|
33
35
|
|
|
34
36
|
workflows:
|
|
35
37
|
nonnative:
|
|
36
38
|
jobs:
|
|
37
39
|
- build:
|
|
38
40
|
context: SonarCloud
|
|
41
|
+
- release:
|
|
42
|
+
requires:
|
|
43
|
+
- build
|
|
44
|
+
filters:
|
|
45
|
+
branches:
|
|
46
|
+
only: master
|
data/.config/cucumber.yml
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
report: --format junit --out reports --format html --out reports/index.html --format pretty
|
|
1
|
+
report: --format junit --out reports --format html --out reports/index.html --format pretty --publish-quiet
|
data/.rubocop.yml
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
AllCops:
|
|
2
|
-
TargetRubyVersion: 2.
|
|
2
|
+
TargetRubyVersion: 2.7
|
|
3
3
|
DisplayCopNames: true
|
|
4
|
+
NewCops: enable
|
|
4
5
|
|
|
5
6
|
Layout/LineLength:
|
|
6
7
|
Max: 120
|
|
@@ -17,71 +18,5 @@ Metrics/AbcSize:
|
|
|
17
18
|
Style/Documentation:
|
|
18
19
|
Enabled: false
|
|
19
20
|
|
|
20
|
-
Lint/
|
|
21
|
-
Enabled:
|
|
22
|
-
|
|
23
|
-
Style/HashEachMethods:
|
|
24
|
-
Enabled: true
|
|
25
|
-
|
|
26
|
-
Style/HashTransformKeys:
|
|
27
|
-
Enabled: true
|
|
28
|
-
|
|
29
|
-
Style/HashTransformValues:
|
|
30
|
-
Enabled: true
|
|
31
|
-
|
|
32
|
-
Lint/StructNewOverride:
|
|
33
|
-
Enabled: true
|
|
34
|
-
|
|
35
|
-
Layout/SpaceAroundMethodCallOperator:
|
|
36
|
-
Enabled: true
|
|
37
|
-
|
|
38
|
-
Style/ExponentialNotation:
|
|
39
|
-
Enabled: true
|
|
40
|
-
|
|
41
|
-
Layout/EmptyLinesAroundAttributeAccessor:
|
|
42
|
-
Enabled: true
|
|
43
|
-
|
|
44
|
-
Style/SlicingWithRange:
|
|
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
|
|
61
|
-
|
|
62
|
-
Style/AccessorGrouping:
|
|
63
|
-
Enabled: true
|
|
64
|
-
|
|
65
|
-
Style/BisectedAttrAccessor:
|
|
66
|
-
Enabled: true
|
|
67
|
-
|
|
68
|
-
Style/RedundantAssignment:
|
|
69
|
-
Enabled: true
|
|
70
|
-
|
|
71
|
-
Lint/DuplicateElsifCondition:
|
|
72
|
-
Enabled: true
|
|
73
|
-
|
|
74
|
-
Style/ArrayCoercion:
|
|
75
|
-
Enabled: true
|
|
76
|
-
|
|
77
|
-
Style/CaseLikeIf:
|
|
78
|
-
Enabled: true
|
|
79
|
-
|
|
80
|
-
Style/HashAsLastArrayItem:
|
|
81
|
-
Enabled: true
|
|
82
|
-
|
|
83
|
-
Style/HashLikeCase:
|
|
84
|
-
Enabled: true
|
|
85
|
-
|
|
86
|
-
Style/RedundantFileExtensionInRequire:
|
|
87
|
-
Enabled: true
|
|
21
|
+
Lint/HashCompareByIdentity:
|
|
22
|
+
Enabled: false
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
|
+
|
|
5
|
+
## [1.33.0](https://github.com/alexfalkowski/nonnative/compare/v1.32.0...v1.33.0) (2020-10-30)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* bump to version 1.33.0 ([538ebf5](https://github.com/alexfalkowski/nonnative/commit/538ebf54c9d49ac3227f9c0a14ce9074d961c42d))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* make sure we don't run ci again ([bf40e54](https://github.com/alexfalkowski/nonnative/commit/bf40e5471d7701040e64c035e652df534db7e783))
|
|
16
|
+
|
|
17
|
+
## [1.32.0](https://github.com/alexfalkowski/nonnative/compare/v1.31.0...v1.32.0) (2020-10-30)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* update deps ([a18e739](https://github.com/alexfalkowski/nonnative/commit/a18e739285cab1e75b2c4bb2da573e4b437d05b5))
|
|
23
|
+
|
|
24
|
+
## 1.31.0 (2020-10-30)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Features
|
|
28
|
+
|
|
29
|
+
* abort on exception for threads ([16c236a](https://github.com/alexfalkowski/nonnative/commit/16c236afbd4e434d19d26166bf515def56907369))
|
|
30
|
+
* add ability to create chaos ([5c74b1f](https://github.com/alexfalkowski/nonnative/commit/5c74b1fc732017a658bd5e86ba8d1d849028bfa7))
|
|
31
|
+
* add ability to override strategy ([668f61b](https://github.com/alexfalkowski/nonnative/commit/668f61b3d802958bd2d948ba47f54df7ad4725f4))
|
|
32
|
+
* add chaos proxy ([84f6be8](https://github.com/alexfalkowski/nonnative/commit/84f6be83e5d00a582cf6458e34a1f1c169fe81b8))
|
|
33
|
+
* add concurrent-ruby ([0ba97ae](https://github.com/alexfalkowski/nonnative/commit/0ba97ae9c5d471564d9098e50864565208e941b3))
|
|
34
|
+
* add delay to proxy ([9004d56](https://github.com/alexfalkowski/nonnative/commit/9004d5643d38e530124077f777b7fec494aa5a10))
|
|
35
|
+
* add logging to servers ([a6c16a7](https://github.com/alexfalkowski/nonnative/commit/a6c16a7c43ec52b8a6a4766e92fdfe0179bc9b4b))
|
|
36
|
+
* add name property ([7804c22](https://github.com/alexfalkowski/nonnative/commit/7804c22e1e46bc7031628fd99fbb0e1382b9b438))
|
|
37
|
+
* add no proxy ([b819f6c](https://github.com/alexfalkowski/nonnative/commit/b819f6cf10ec86c52e7429e6948369905e079d38))
|
|
38
|
+
* add proxy logs ([66e0acd](https://github.com/alexfalkowski/nonnative/commit/66e0acd4aa01ae9b7335f6df4ff6d4f3c89239ac))
|
|
39
|
+
* add random-port (0.5.1) ([0cb80f0](https://github.com/alexfalkowski/nonnative/commit/0cb80f0a05189fa9aab4ce5ea01d83f02dfe78f7))
|
|
40
|
+
* add running go command ([4c45a19](https://github.com/alexfalkowski/nonnative/commit/4c45a19c9acfa157c67e2bdd1fd470558fa2f80f))
|
|
41
|
+
* add timeout ([dbe4d9b](https://github.com/alexfalkowski/nonnative/commit/dbe4d9b7e7f4d5ecdaa89a60a5b135ccefecc43d))
|
|
42
|
+
* grpc-tools (1.32.0) ([e2ea2fe](https://github.com/alexfalkowski/nonnative/commit/e2ea2fea8cda36cc97e11d75d7b29a12302ce5b5))
|
|
43
|
+
* invalid data ([f83d35f](https://github.com/alexfalkowski/nonnative/commit/f83d35ffc7374d182d8c3e4b513b460d38121c83))
|
|
44
|
+
* loosen grc dep ([11e8de4](https://github.com/alexfalkowski/nonnative/commit/11e8de4228417483c26213f40caee351dbbdf861))
|
|
45
|
+
* loosen grc dep ([498a6d5](https://github.com/alexfalkowski/nonnative/commit/498a6d56c9e157f15ebe77d57cd0477abdc8ec34))
|
|
46
|
+
* move to use predefined port ([439971f](https://github.com/alexfalkowski/nonnative/commit/439971fa0388380701e80bce18d7bf61f07f9bc7))
|
|
47
|
+
* pass options to socket pair ([7ebb938](https://github.com/alexfalkowski/nonnative/commit/7ebb9389c4cab8639f19bf234d65359fbfdef342))
|
|
48
|
+
* process start and stop in order ([589abe9](https://github.com/alexfalkowski/nonnative/commit/589abe9bee0743dc38a57aef5f73871eb277ec28))
|
|
49
|
+
* remove timeout ([d3dc376](https://github.com/alexfalkowski/nonnative/commit/d3dc376522aefd4856e15bba84309a5e77641db6))
|
|
50
|
+
* rename proxy ([5b87699](https://github.com/alexfalkowski/nonnative/commit/5b87699c622e9db7fed865ea75d8ee294c996b5e))
|
|
51
|
+
* socket pair ([d50112e](https://github.com/alexfalkowski/nonnative/commit/d50112e72f4a3f1af93ba2bc4274282c06690048))
|
|
52
|
+
* store connections in concurrent hash ([6731d95](https://github.com/alexfalkowski/nonnative/commit/6731d9523c933a6598ce07b3d65e9678d188c0ad))
|
|
53
|
+
* update cucumber (4.1.0) ([c38ea01](https://github.com/alexfalkowski/nonnative/commit/c38ea015dad051e494a1aa90b7452193735cad79))
|
|
54
|
+
* update deps ([7c9b11f](https://github.com/alexfalkowski/nonnative/commit/7c9b11fb35c9655f2d8b161498e134ab903c82c9))
|
|
55
|
+
* update grpc (1.30.1) ([98b7262](https://github.com/alexfalkowski/nonnative/commit/98b7262d76d30a0097db138e6236a43c296ce207))
|
|
56
|
+
* update puma ([36ff809](https://github.com/alexfalkowski/nonnative/commit/36ff809264c712240f50db24971f6045faaceac3))
|
|
57
|
+
* update to ruby-2.7.1 ([192ed03](https://github.com/alexfalkowski/nonnative/commit/192ed03c9d929e7fdadc80ab7b48b4a8081daed1))
|
|
58
|
+
* use puma ([2bfbb0f](https://github.com/alexfalkowski/nonnative/commit/2bfbb0f15d7e20647e72332aa3830c9144a1148d))
|
|
59
|
+
* use request ([c757b8b](https://github.com/alexfalkowski/nonnative/commit/c757b8b1d4f513451b08dd0408256244c7a29f7f))
|
|
60
|
+
* **command:** wait for pid ([5bf9a34](https://github.com/alexfalkowski/nonnative/commit/5bf9a34ab96b10365e894dd66b260c2aa902f19b))
|
|
61
|
+
* **grpc:** wait for server ([ba90600](https://github.com/alexfalkowski/nonnative/commit/ba906008ed7a8d72f8ee8f5f37eddf541be97a8a))
|
|
62
|
+
* **http:** add put and delete ([54b7b9a](https://github.com/alexfalkowski/nonnative/commit/54b7b9a906e0e80556c058ec85386cf4997d6a1b))
|
|
63
|
+
* **http:** wait for server to start ([10e0f37](https://github.com/alexfalkowski/nonnative/commit/10e0f37e0da9e0896365c771a8886dc0eb94906b))
|
|
64
|
+
* **process:** allow to pass different signal ([6b80e69](https://github.com/alexfalkowski/nonnative/commit/6b80e690f97e3f16a315a271dca5476647ce4177))
|
|
65
|
+
* add grpc (~> 1.28) ([6cabe9e](https://github.com/alexfalkowski/nonnative/commit/6cabe9e6e6107405459be0cdf93afc9fae742d6e))
|
|
66
|
+
* add overridable waiting ([be78cf4](https://github.com/alexfalkowski/nonnative/commit/be78cf47f2cb338cd98dff5ccfd5af3b41321428))
|
|
67
|
+
* **grpc:** use run instead of run_till_terminated ([f0609af](https://github.com/alexfalkowski/nonnative/commit/f0609afe3878a8d4e5eaef77457b7a868bc234e8))
|
|
68
|
+
* add ability to use configuration file ([f3d9c92](https://github.com/alexfalkowski/nonnative/commit/f3d9c923385ad338d42ec924ea60c16dcc1a6ed7))
|
|
69
|
+
* add puma (4.3.3) ([1b3b01c](https://github.com/alexfalkowski/nonnative/commit/1b3b01c17cb3b634e17a68e8e88404ff66fa6be5))
|
|
70
|
+
* add sinatra (2.0.8.1) ([2f27876](https://github.com/alexfalkowski/nonnative/commit/2f2787648deb641dbd78875433f0928e3b754cdd))
|
|
71
|
+
* add starting servers ([47955d3](https://github.com/alexfalkowski/nonnative/commit/47955d327d251ae0df99c6f99bbe4f5e8fa1acb9))
|
|
72
|
+
* add the ability to see the type that has issues ([d119ccc](https://github.com/alexfalkowski/nonnative/commit/d119ccc0f9575740b4a14c5bf5f1912c3db11692))
|
|
73
|
+
* enable rubocop cops ([00266e5](https://github.com/alexfalkowski/nonnative/commit/00266e52cb20d058ebccc5f09f4787d1f6899400))
|
|
74
|
+
* lock cucumber ([a4817a8](https://github.com/alexfalkowski/nonnative/commit/a4817a8d57edb23ebb93610c86f5539ef79af243))
|
|
75
|
+
* lock rspec-benchmark ([03d9b62](https://github.com/alexfalkowski/nonnative/commit/03d9b627314d859cef9b002e1d903f22bad9efad))
|
|
76
|
+
* lock semantic_logger ([e340785](https://github.com/alexfalkowski/nonnative/commit/e340785fa1e97c991196e1ee1168dac3e4973cb3))
|
|
77
|
+
* make sure we don't do things serially ([d265aac](https://github.com/alexfalkowski/nonnative/commit/d265aaca9f798ab004ee125a55e0406f9b2f7739))
|
|
78
|
+
* remove logger ([b2ae52b](https://github.com/alexfalkowski/nonnative/commit/b2ae52b20ce0cf65f431ceaa315b353ed41fcc80))
|
|
79
|
+
* remove logs ([787e490](https://github.com/alexfalkowski/nonnative/commit/787e490b71884c8dcd0920778b88fd94d520dfab))
|
|
80
|
+
* remove structure ([79604f6](https://github.com/alexfalkowski/nonnative/commit/79604f631990a01f48da066014b52742e0bc71d0))
|
|
81
|
+
* remove writting to STDOUT ([be1f668](https://github.com/alexfalkowski/nonnative/commit/be1f668278a74f5c3a33538dbeda77ac9b93d316))
|
|
82
|
+
* rename to configuration process ([aac5b4c](https://github.com/alexfalkowski/nonnative/commit/aac5b4c435ea1fb3942a0c752f573ff2ca5026b6))
|
|
83
|
+
* rename to process pool ([9e4391e](https://github.com/alexfalkowski/nonnative/commit/9e4391e94fc32d69cdf651eff8995bac91f965fd))
|
|
84
|
+
* start multiple processes ([5a9c8ba](https://github.com/alexfalkowski/nonnative/commit/5a9c8baf22537dc246fc73eab3d1a645bc51f4be))
|
|
85
|
+
* start nonnative with a long start up time server will error ([6770f66](https://github.com/alexfalkowski/nonnative/commit/6770f6657ccb724c311a43e77b03595943504fef))
|
|
86
|
+
* stop nonnative with a long stopping time server will error ([3040227](https://github.com/alexfalkowski/nonnative/commit/3040227113c50aa9a7e84bf44bd03a3c0a6142be))
|
|
87
|
+
* successfully starting of grpc servers programatically ([cc92276](https://github.com/alexfalkowski/nonnative/commit/cc9227620ecb8133277871967eb835f67943ccad))
|
|
88
|
+
* successfully starting of HTTP servers programatically ([93373f1](https://github.com/alexfalkowski/nonnative/commit/93373f1b85d50328b54ee49236f55acd2c5c0180))
|
|
89
|
+
* successfully starting of HTTP servers programatically and getting health ([be9ae06](https://github.com/alexfalkowski/nonnative/commit/be9ae06952e83af666f654a9782b596673709c87))
|
|
90
|
+
* successfully starting of HTTP servers programatically and getting metrics ([4536904](https://github.com/alexfalkowski/nonnative/commit/45369041a8d95e240b5533d2132b60fa4d31278f))
|
|
91
|
+
* successfully starting of HTTP servers programatically with not found message ([111d81d](https://github.com/alexfalkowski/nonnative/commit/111d81da298a7203c08fa5725e2310736b613fb9))
|
|
92
|
+
* update rspec-expectations (3.9.2) ([1f656a9](https://github.com/alexfalkowski/nonnative/commit/1f656a975e2fd6b1af830ca38f24d978a105d0e0))
|
|
93
|
+
* update rubocop (0.82.0) ([48e462d](https://github.com/alexfalkowski/nonnative/commit/48e462d980f858102a45367fc420b7c66596a22f))
|
|
94
|
+
* update solargraph (0.39.7) ([8caff98](https://github.com/alexfalkowski/nonnative/commit/8caff98e5fea79c7123cc49f573ef2122ef14b33))
|
|
95
|
+
* use 0.0.0.0 ([1e77298](https://github.com/alexfalkowski/nonnative/commit/1e77298620666578472220c0e02c5121a4d9838f))
|
|
96
|
+
* use better naming. ([228c9ed](https://github.com/alexfalkowski/nonnative/commit/228c9ed9607c30834f0f5dfa46114a2ed84b67a3))
|
|
97
|
+
* use ruby 2.6.6 ([fdb61da](https://github.com/alexfalkowski/nonnative/commit/fdb61da719e6cf3d35db7d8af6acea19481a8ff9))
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
### Bug Fixes
|
|
101
|
+
|
|
102
|
+
* add comments ([cb93b23](https://github.com/alexfalkowski/nonnative/commit/cb93b23a3c8ae463b656fb4a43e2b7dab83db2f5))
|
|
103
|
+
* add small sleeps as prcesses and severs take time to start. ([1e3d363](https://github.com/alexfalkowski/nonnative/commit/1e3d36302c0fc0c58f7b2239db39876acf4ec2fc))
|
|
104
|
+
* ignore exceptions ([4076cf2](https://github.com/alexfalkowski/nonnative/commit/4076cf2019924b89f2766edbafed603d08c63cc6))
|
|
105
|
+
* only raise an error after we have finished start or stop ([b7b0b17](https://github.com/alexfalkowski/nonnative/commit/b7b0b17cc4cac53abcb052a76afc29312b0b971b))
|
|
106
|
+
* pass service like in command ([43a961b](https://github.com/alexfalkowski/nonnative/commit/43a961b7bfa5e954371d14553009969f89af87a4))
|
|
107
|
+
* register at exit first ([7dad865](https://github.com/alexfalkowski/nonnative/commit/7dad865a29117b830c7717d167e14f88c9d6f2af))
|
|
108
|
+
* remove rescue ([230ae39](https://github.com/alexfalkowski/nonnative/commit/230ae395406552bbe7610a9c37322573c2d6f92b))
|
|
109
|
+
* remove thwait ([62cf089](https://github.com/alexfalkowski/nonnative/commit/62cf089e3b10bae8290d8cfbb2b8c4e4c50aef1f))
|
|
110
|
+
* remove unused vriables ([0d38d8a](https://github.com/alexfalkowski/nonnative/commit/0d38d8a12d108370682e2f7cad5f5a4f62e5835f))
|
|
111
|
+
* start servers first ([9a483f0](https://github.com/alexfalkowski/nonnative/commit/9a483f02709b4b954205dc66bf7ea7fa20110a37))
|
|
112
|
+
* stop servers first ([a736496](https://github.com/alexfalkowski/nonnative/commit/a73649666010820697539c621fb9a7e8677008a7))
|
|
113
|
+
* sync state ([75ab8e8](https://github.com/alexfalkowski/nonnative/commit/75ab8e8a9ea421aac8e970a3b7b1c2c1c556b425))
|
|
114
|
+
* **chaos:** ignore ECONNRESET ([c5ff8df](https://github.com/alexfalkowski/nonnative/commit/c5ff8dfcb3af8dbe8fb9fb5a6f04dd2308eadbaa))
|
|
115
|
+
* **grpc:** make servers consistent ([ece8404](https://github.com/alexfalkowski/nonnative/commit/ece8404d0a56ded351df317f3dacaac054f67f0a))
|
|
116
|
+
* **grpc:** pass timout to wait ([0a18218](https://github.com/alexfalkowski/nonnative/commit/0a18218ff675a4bf76d39ac2c547a87955013e42))
|
|
117
|
+
* **http:** allow to run multiple servers ([6e640de](https://github.com/alexfalkowski/nonnative/commit/6e640ded9312d89de125f0b2bb9a34c982163a41))
|
data/Gemfile.lock
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
nonnative (1.
|
|
4
|
+
nonnative (1.34.0)
|
|
5
5
|
concurrent-ruby (~> 1.0, >= 1.0.5)
|
|
6
|
-
cucumber (>=
|
|
6
|
+
cucumber (>= 5, < 6)
|
|
7
7
|
grpc (>= 1, < 2)
|
|
8
|
-
puma (~>
|
|
8
|
+
puma (~> 5.0)
|
|
9
9
|
rest-client (~> 2.1)
|
|
10
10
|
rspec-benchmark (~> 0.6.0)
|
|
11
11
|
rspec-expectations (~> 3.9, >= 3.9.2)
|
|
@@ -14,138 +14,128 @@ PATH
|
|
|
14
14
|
GEM
|
|
15
15
|
remote: https://rubygems.org/
|
|
16
16
|
specs:
|
|
17
|
-
activesupport (6.0.3.
|
|
17
|
+
activesupport (6.0.3.4)
|
|
18
18
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
19
19
|
i18n (>= 0.7, < 2)
|
|
20
20
|
minitest (~> 5.1)
|
|
21
21
|
tzinfo (~> 1.1)
|
|
22
22
|
zeitwerk (~> 2.2, >= 2.2.2)
|
|
23
23
|
ast (2.4.1)
|
|
24
|
-
backport (1.1.2)
|
|
25
|
-
benchmark (0.1.0)
|
|
26
24
|
benchmark-malloc (0.2.0)
|
|
27
25
|
benchmark-perf (0.6.0)
|
|
28
26
|
benchmark-trend (0.4.0)
|
|
29
27
|
builder (3.2.4)
|
|
30
|
-
concurrent-ruby (1.1.
|
|
31
|
-
cucumber (
|
|
32
|
-
builder (~> 3.2, >= 3.2.
|
|
33
|
-
cucumber-core (~>
|
|
34
|
-
cucumber-create-meta (~>
|
|
35
|
-
cucumber-cucumber-expressions (~> 10.
|
|
36
|
-
cucumber-gherkin (~>
|
|
37
|
-
cucumber-html-formatter (~>
|
|
38
|
-
cucumber-messages (~>
|
|
39
|
-
cucumber-wire (~>
|
|
40
|
-
diff-lcs (~> 1.
|
|
28
|
+
concurrent-ruby (1.1.7)
|
|
29
|
+
cucumber (5.2.0)
|
|
30
|
+
builder (~> 3.2, >= 3.2.4)
|
|
31
|
+
cucumber-core (~> 8.0, >= 8.0.1)
|
|
32
|
+
cucumber-create-meta (~> 2.0, >= 2.0.2)
|
|
33
|
+
cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
|
|
34
|
+
cucumber-gherkin (~> 15.0, >= 15.0.2)
|
|
35
|
+
cucumber-html-formatter (~> 9.0, >= 9.0.0)
|
|
36
|
+
cucumber-messages (~> 13.1, >= 13.1.0)
|
|
37
|
+
cucumber-wire (~> 4.0, >= 4.0.1)
|
|
38
|
+
diff-lcs (~> 1.4, >= 1.4.4)
|
|
41
39
|
multi_test (~> 0.1, >= 0.1.2)
|
|
42
|
-
sys-uname (~> 1.
|
|
43
|
-
cucumber-core (
|
|
44
|
-
cucumber-gherkin (~>
|
|
45
|
-
cucumber-messages (~>
|
|
40
|
+
sys-uname (~> 1.2, >= 1.2.1)
|
|
41
|
+
cucumber-core (8.0.1)
|
|
42
|
+
cucumber-gherkin (~> 15.0, >= 15.0.2)
|
|
43
|
+
cucumber-messages (~> 13.0, >= 13.0.1)
|
|
46
44
|
cucumber-tag-expressions (~> 2.0, >= 2.0.4)
|
|
47
|
-
cucumber-create-meta (
|
|
48
|
-
cucumber-messages (~>
|
|
45
|
+
cucumber-create-meta (2.0.4)
|
|
46
|
+
cucumber-messages (~> 13.1, >= 13.1.0)
|
|
49
47
|
sys-uname (~> 1.2, >= 1.2.1)
|
|
50
|
-
cucumber-cucumber-expressions (10.
|
|
51
|
-
cucumber-gherkin (
|
|
52
|
-
cucumber-messages (~>
|
|
53
|
-
cucumber-html-formatter (
|
|
54
|
-
cucumber-messages (~>
|
|
55
|
-
cucumber-messages (
|
|
48
|
+
cucumber-cucumber-expressions (10.3.0)
|
|
49
|
+
cucumber-gherkin (15.0.2)
|
|
50
|
+
cucumber-messages (~> 13.0, >= 13.0.1)
|
|
51
|
+
cucumber-html-formatter (9.0.0)
|
|
52
|
+
cucumber-messages (~> 13.0, >= 13.0.1)
|
|
53
|
+
cucumber-messages (13.1.0)
|
|
56
54
|
protobuf-cucumber (~> 3.10, >= 3.10.8)
|
|
57
55
|
cucumber-tag-expressions (2.0.4)
|
|
58
|
-
cucumber-wire (
|
|
59
|
-
cucumber-core (~>
|
|
60
|
-
cucumber-cucumber-expressions (~> 10.
|
|
61
|
-
cucumber-messages (~>
|
|
62
|
-
diff-lcs (1.
|
|
56
|
+
cucumber-wire (4.0.1)
|
|
57
|
+
cucumber-core (~> 8.0, >= 8.0.1)
|
|
58
|
+
cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
|
|
59
|
+
cucumber-messages (~> 13.0, >= 13.0.1)
|
|
60
|
+
diff-lcs (1.4.4)
|
|
63
61
|
docile (1.3.2)
|
|
64
62
|
domain_name (0.5.20190701)
|
|
65
63
|
unf (>= 0.0.5, < 1.0.0)
|
|
66
|
-
e2mmap (0.1.0)
|
|
67
64
|
ffi (1.13.1)
|
|
68
|
-
google-protobuf (3.
|
|
65
|
+
google-protobuf (3.13.0)
|
|
69
66
|
googleapis-common-protos-types (1.0.5)
|
|
70
67
|
google-protobuf (~> 3.11)
|
|
71
|
-
grpc (1.
|
|
72
|
-
google-protobuf (~> 3.
|
|
68
|
+
grpc (1.32.0)
|
|
69
|
+
google-protobuf (~> 3.13)
|
|
73
70
|
googleapis-common-protos-types (~> 1.0)
|
|
74
|
-
grpc-tools (1.
|
|
71
|
+
grpc-tools (1.32.0)
|
|
75
72
|
http-accept (1.7.0)
|
|
76
73
|
http-cookie (1.0.3)
|
|
77
74
|
domain_name (~> 0.5)
|
|
78
|
-
i18n (1.8.
|
|
75
|
+
i18n (1.8.5)
|
|
79
76
|
concurrent-ruby (~> 1.0)
|
|
80
|
-
|
|
81
|
-
json (2.3.0)
|
|
82
|
-
maruku (0.7.3)
|
|
77
|
+
json (2.3.1)
|
|
83
78
|
middleware (0.1.0)
|
|
84
79
|
mime-types (3.3.1)
|
|
85
80
|
mime-types-data (~> 3.2015)
|
|
86
81
|
mime-types-data (3.2020.0512)
|
|
87
|
-
|
|
88
|
-
minitest (5.14.1)
|
|
82
|
+
minitest (5.14.2)
|
|
89
83
|
multi_test (0.1.2)
|
|
90
84
|
mustermann (1.1.1)
|
|
91
85
|
ruby2_keywords (~> 0.0.1)
|
|
92
86
|
netrc (0.11.0)
|
|
93
|
-
nio4r (2.5.
|
|
94
|
-
nokogiri (1.10.10)
|
|
95
|
-
mini_portile2 (~> 2.4.0)
|
|
87
|
+
nio4r (2.5.4)
|
|
96
88
|
parallel (1.19.2)
|
|
97
|
-
parser (2.7.
|
|
89
|
+
parser (2.7.2.0)
|
|
98
90
|
ast (~> 2.4.1)
|
|
99
91
|
protobuf-cucumber (3.10.8)
|
|
100
92
|
activesupport (>= 3.2)
|
|
101
93
|
middleware
|
|
102
94
|
thor
|
|
103
95
|
thread_safe
|
|
104
|
-
puma (
|
|
96
|
+
puma (5.0.4)
|
|
105
97
|
nio4r (~> 2.0)
|
|
106
98
|
rack (2.2.3)
|
|
107
|
-
rack-protection (2.0
|
|
99
|
+
rack-protection (2.1.0)
|
|
108
100
|
rack
|
|
109
101
|
rainbow (3.0.0)
|
|
110
102
|
rake (13.0.1)
|
|
111
|
-
regexp_parser (1.
|
|
103
|
+
regexp_parser (1.8.2)
|
|
112
104
|
rest-client (2.1.0)
|
|
113
105
|
http-accept (>= 1.7.0, < 2.0)
|
|
114
106
|
http-cookie (>= 1.0.2, < 2.0)
|
|
115
107
|
mime-types (>= 1.16, < 4.0)
|
|
116
108
|
netrc (~> 0.8)
|
|
117
|
-
reverse_markdown (2.0.0)
|
|
118
|
-
nokogiri
|
|
119
109
|
rexml (3.2.4)
|
|
120
|
-
rspec (3.
|
|
121
|
-
rspec-core (~> 3.
|
|
122
|
-
rspec-expectations (~> 3.
|
|
123
|
-
rspec-mocks (~> 3.
|
|
110
|
+
rspec (3.10.0)
|
|
111
|
+
rspec-core (~> 3.10.0)
|
|
112
|
+
rspec-expectations (~> 3.10.0)
|
|
113
|
+
rspec-mocks (~> 3.10.0)
|
|
124
114
|
rspec-benchmark (0.6.0)
|
|
125
115
|
benchmark-malloc (~> 0.2)
|
|
126
116
|
benchmark-perf (~> 0.6)
|
|
127
117
|
benchmark-trend (~> 0.4)
|
|
128
118
|
rspec (>= 3.0)
|
|
129
|
-
rspec-core (3.
|
|
130
|
-
rspec-support (~> 3.
|
|
131
|
-
rspec-expectations (3.
|
|
119
|
+
rspec-core (3.10.0)
|
|
120
|
+
rspec-support (~> 3.10.0)
|
|
121
|
+
rspec-expectations (3.10.0)
|
|
132
122
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
133
|
-
rspec-support (~> 3.
|
|
134
|
-
rspec-mocks (3.
|
|
123
|
+
rspec-support (~> 3.10.0)
|
|
124
|
+
rspec-mocks (3.10.0)
|
|
135
125
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
136
|
-
rspec-support (~> 3.
|
|
137
|
-
rspec-support (3.
|
|
138
|
-
rubocop (0.
|
|
126
|
+
rspec-support (~> 3.10.0)
|
|
127
|
+
rspec-support (3.10.0)
|
|
128
|
+
rubocop (1.0.0)
|
|
139
129
|
parallel (~> 1.10)
|
|
140
|
-
parser (>= 2.7.1.
|
|
130
|
+
parser (>= 2.7.1.5)
|
|
141
131
|
rainbow (>= 2.2.2, < 4.0)
|
|
142
|
-
regexp_parser (>= 1.
|
|
132
|
+
regexp_parser (>= 1.8)
|
|
143
133
|
rexml
|
|
144
|
-
rubocop-ast (>= 0.
|
|
134
|
+
rubocop-ast (>= 0.6.0)
|
|
145
135
|
ruby-progressbar (~> 1.7)
|
|
146
136
|
unicode-display_width (>= 1.4.0, < 2.0)
|
|
147
|
-
rubocop-ast (0.
|
|
148
|
-
parser (>= 2.7.
|
|
137
|
+
rubocop-ast (1.0.0)
|
|
138
|
+
parser (>= 2.7.1.5)
|
|
149
139
|
ruby-progressbar (1.10.1)
|
|
150
140
|
ruby2_keywords (0.0.2)
|
|
151
141
|
simplecov (0.17.1)
|
|
@@ -153,27 +143,13 @@ GEM
|
|
|
153
143
|
json (>= 1.8, < 3)
|
|
154
144
|
simplecov-html (~> 0.10.0)
|
|
155
145
|
simplecov-html (0.10.2)
|
|
156
|
-
sinatra (2.0
|
|
146
|
+
sinatra (2.1.0)
|
|
157
147
|
mustermann (~> 1.0)
|
|
158
|
-
rack (~> 2.
|
|
159
|
-
rack-protection (= 2.0
|
|
160
|
-
tilt (~> 2.0)
|
|
161
|
-
solargraph (0.39.12)
|
|
162
|
-
backport (~> 1.1)
|
|
163
|
-
benchmark
|
|
164
|
-
bundler (>= 1.17.2)
|
|
165
|
-
e2mmap
|
|
166
|
-
jaro_winkler (~> 1.5)
|
|
167
|
-
maruku (~> 0.7, >= 0.7.3)
|
|
168
|
-
nokogiri (~> 1.9, >= 1.9.1)
|
|
169
|
-
parser (~> 2.3)
|
|
170
|
-
reverse_markdown (>= 1.0.5, < 3)
|
|
171
|
-
rubocop (~> 0.52)
|
|
172
|
-
thor (~> 1.0)
|
|
148
|
+
rack (~> 2.2)
|
|
149
|
+
rack-protection (= 2.1.0)
|
|
173
150
|
tilt (~> 2.0)
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
ffi (>= 1.0.0)
|
|
151
|
+
sys-uname (1.2.2)
|
|
152
|
+
ffi (~> 1.1)
|
|
177
153
|
thor (1.0.1)
|
|
178
154
|
thread_safe (0.3.6)
|
|
179
155
|
tilt (2.0.10)
|
|
@@ -183,8 +159,7 @@ GEM
|
|
|
183
159
|
unf_ext
|
|
184
160
|
unf_ext (0.0.7.7)
|
|
185
161
|
unicode-display_width (1.7.0)
|
|
186
|
-
|
|
187
|
-
zeitwerk (2.4.0)
|
|
162
|
+
zeitwerk (2.4.1)
|
|
188
163
|
|
|
189
164
|
PLATFORMS
|
|
190
165
|
ruby
|
|
@@ -194,9 +169,8 @@ DEPENDENCIES
|
|
|
194
169
|
grpc-tools (>= 1, < 2)
|
|
195
170
|
nonnative!
|
|
196
171
|
rake (~> 13.0, >= 13.0.1)
|
|
197
|
-
rubocop (~> 0
|
|
172
|
+
rubocop (~> 1.0)
|
|
198
173
|
simplecov (~> 0.17.1)
|
|
199
|
-
solargraph (~> 0.39.11)
|
|
200
174
|
|
|
201
175
|
BUNDLED WITH
|
|
202
176
|
2.1.4
|
data/Makefile
CHANGED
data/README.md
CHANGED
|
@@ -37,10 +37,19 @@ Configure nonnative with the following:
|
|
|
37
37
|
- A timeout value.
|
|
38
38
|
- Port to verify.
|
|
39
39
|
- The class for servers.
|
|
40
|
-
- The
|
|
40
|
+
- The log for servers/processes
|
|
41
41
|
- The strategy for processes/servers.
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
|
|
43
|
+
### Strategy
|
|
44
|
+
|
|
45
|
+
The strategy can be one of the following values:
|
|
46
|
+
- startup - will start the process once.
|
|
47
|
+
- before - will hook into cucumbers Before and After.
|
|
48
|
+
- manual - do this manually
|
|
49
|
+
|
|
50
|
+
This can be overridden by the following environment variables:
|
|
51
|
+
- NONNATIVE_STRATEGY - Set this to override what is set in the config.
|
|
52
|
+
- NONNATIVE_TIMEOUT - Set this (in seconds, e.g 5) to override what is set in the config.
|
|
44
53
|
|
|
45
54
|
### Processes
|
|
46
55
|
|
|
@@ -50,12 +59,12 @@ Setup it up programmatically:
|
|
|
50
59
|
require 'nonnative'
|
|
51
60
|
|
|
52
61
|
Nonnative.configure do |config|
|
|
53
|
-
config.strategy = :startup
|
|
62
|
+
config.strategy = :startup
|
|
54
63
|
|
|
55
64
|
config.process do |d|
|
|
56
65
|
d.name = 'start_1'
|
|
57
66
|
d.command = 'features/support/bin/start 12_321'
|
|
58
|
-
d.timeout =
|
|
67
|
+
d.timeout = config.strategy.timeout
|
|
59
68
|
d.port = 12_321
|
|
60
69
|
d.log = 'features/logs/12_321.log'
|
|
61
70
|
d.signal = 'INT' # Possible values are described in Signal.list.keys
|
|
@@ -364,3 +373,39 @@ server = Nonnative.pool.server_by_name(name)
|
|
|
364
373
|
server.proxy.close_all # To use close_all.
|
|
365
374
|
server.proxy.reset # To reset it back to a good state.
|
|
366
375
|
```
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
### Go
|
|
379
|
+
|
|
380
|
+
As we love using go as a language for services we have added support to start binaries with defined parameters. This expects that you build your services in the format of `command sub_command --params`
|
|
381
|
+
|
|
382
|
+
To get this to work you will need to create a `main_test.go` file with these contents:
|
|
383
|
+
|
|
384
|
+
```go
|
|
385
|
+
// +build features
|
|
386
|
+
|
|
387
|
+
package main
|
|
388
|
+
|
|
389
|
+
import (
|
|
390
|
+
"testing"
|
|
391
|
+
)
|
|
392
|
+
|
|
393
|
+
// TestFeatures is a hack that allows us to figure out what the coverage is during
|
|
394
|
+
// integration tests. I would not recommend that you use a binary built using
|
|
395
|
+
// this hack outside of a test suite.
|
|
396
|
+
func TestFeatures(t *testing.T) {
|
|
397
|
+
main()
|
|
398
|
+
}
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
Then to compile this binary you will need to do the following:
|
|
402
|
+
|
|
403
|
+
```sh
|
|
404
|
+
go test -mod vendor -c -tags features -covermode=count -o your_binary -coverpkg=./... github.com/your_location
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
Then to get an executable you do the following:
|
|
408
|
+
|
|
409
|
+
```ruby
|
|
410
|
+
Nonnative::GoCommand.new('your_binary', 'reports').executable('sub_command', '--config config.yaml')
|
|
411
|
+
```
|
data/lib/nonnative.rb
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require 'socket'
|
|
4
4
|
require 'timeout'
|
|
5
5
|
require 'yaml'
|
|
6
|
+
require 'open3'
|
|
6
7
|
|
|
7
8
|
require 'grpc'
|
|
8
9
|
require 'sinatra'
|
|
@@ -28,7 +29,6 @@ require 'nonnative/server'
|
|
|
28
29
|
require 'nonnative/http_client'
|
|
29
30
|
require 'nonnative/http_server'
|
|
30
31
|
require 'nonnative/grpc_server'
|
|
31
|
-
require 'nonnative/grpc_server'
|
|
32
32
|
require 'nonnative/observability'
|
|
33
33
|
require 'nonnative/proxy_factory'
|
|
34
34
|
require 'nonnative/proxy'
|
|
@@ -39,6 +39,8 @@ require 'nonnative/close_all_socket_pair'
|
|
|
39
39
|
require 'nonnative/delay_socket_pair'
|
|
40
40
|
require 'nonnative/invalid_data_socket_pair'
|
|
41
41
|
require 'nonnative/socket_pair_factory'
|
|
42
|
+
require 'nonnative/strategy'
|
|
43
|
+
require 'nonnative/go_command'
|
|
42
44
|
|
|
43
45
|
module Nonnative
|
|
44
46
|
class << self
|
|
@@ -40,28 +40,35 @@ module Nonnative
|
|
|
40
40
|
s.port = fd['port']
|
|
41
41
|
s.log = fd['log']
|
|
42
42
|
|
|
43
|
-
proxy
|
|
44
|
-
|
|
45
|
-
if proxy
|
|
46
|
-
s.proxy = {
|
|
47
|
-
type: proxy['type'],
|
|
48
|
-
port: proxy['port'],
|
|
49
|
-
log: proxy['log'],
|
|
50
|
-
options: proxy['options']
|
|
51
|
-
}
|
|
52
|
-
end
|
|
43
|
+
proxy s, fd['proxy']
|
|
53
44
|
end
|
|
54
45
|
end
|
|
55
46
|
end
|
|
47
|
+
|
|
48
|
+
def proxy(server, proxy)
|
|
49
|
+
return unless proxy
|
|
50
|
+
|
|
51
|
+
server.proxy = {
|
|
52
|
+
type: proxy['type'],
|
|
53
|
+
port: proxy['port'],
|
|
54
|
+
log: proxy['log'],
|
|
55
|
+
options: proxy['options']
|
|
56
|
+
}
|
|
57
|
+
end
|
|
56
58
|
end
|
|
57
59
|
|
|
58
60
|
def initialize
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
@strategy = Strategy.new
|
|
62
|
+
@processes = []
|
|
63
|
+
@servers = []
|
|
62
64
|
end
|
|
63
65
|
|
|
64
|
-
attr_accessor :
|
|
66
|
+
attr_accessor :processes, :servers
|
|
67
|
+
attr_reader :strategy
|
|
68
|
+
|
|
69
|
+
def strategy=(value)
|
|
70
|
+
@strategy = Strategy.new(value)
|
|
71
|
+
end
|
|
65
72
|
|
|
66
73
|
def process
|
|
67
74
|
process = Nonnative::ConfigurationProcess.new
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Nonnative
|
|
4
|
+
class GoCommand
|
|
5
|
+
def initialize(main, output)
|
|
6
|
+
@main = main
|
|
7
|
+
@output = output
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def executable(cmd, *params)
|
|
11
|
+
params = params.join(' ')
|
|
12
|
+
"#{main} #{flags(cmd, params).join(' ')} #{cmd} #{params}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def execute(cmd, *params)
|
|
16
|
+
Open3.popen3(executable(cmd, params)) do |_stdin, stdout, stderr, wait_thr|
|
|
17
|
+
return stdout.read, stderr.read, wait_thr.value
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
attr_reader :main, :output
|
|
24
|
+
|
|
25
|
+
def flags(cmd, params)
|
|
26
|
+
m = File.basename(main, File.extname(main))
|
|
27
|
+
p = params.gsub(/\W/, '')
|
|
28
|
+
path = "#{output}/#{m}-#{cmd}-#{p}"
|
|
29
|
+
|
|
30
|
+
[
|
|
31
|
+
"-test.cpuprofile=#{path}-cpu.prof",
|
|
32
|
+
"-test.memprofile=#{path}-mem.prof",
|
|
33
|
+
"-test.blockprofile=#{path}-block.prof",
|
|
34
|
+
"-test.mutexprofile=#{path}-mutex.prof",
|
|
35
|
+
"-test.coverprofile=#{path}.cov",
|
|
36
|
+
"-test.trace=#{path}-trace.out"
|
|
37
|
+
]
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Nonnative
|
|
4
|
+
class Strategy
|
|
5
|
+
def initialize(strategy = 'before', timeout = 5)
|
|
6
|
+
@strategy = strategy
|
|
7
|
+
@timeout = timeout
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def timeout
|
|
11
|
+
(env_timeout || @timeout).to_i
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def to_s
|
|
15
|
+
(env_strategy || @strategy).to_s
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def env_strategy
|
|
21
|
+
@env_strategy ||= ENV['NONNATIVE_STRATEGY']
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def env_timeout
|
|
25
|
+
@env_timeout ||= ENV['NONNATIVE_TIMEOUT']
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
data/lib/nonnative/timeout.rb
CHANGED
data/lib/nonnative/version.rb
CHANGED
data/nonnative.gemspec
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
lib = File.expand_path('lib', __dir__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
|
+
|
|
5
6
|
require 'nonnative/version'
|
|
6
7
|
|
|
7
8
|
Gem::Specification.new do |spec|
|
|
@@ -14,20 +15,18 @@ Gem::Specification.new do |spec|
|
|
|
14
15
|
spec.description = spec.summary
|
|
15
16
|
spec.homepage = 'https://github.com/alexfalkowski/nonnative'
|
|
16
17
|
spec.license = 'Unlicense'
|
|
17
|
-
|
|
18
|
-
# Specify which files should be added to the gem when it is released.
|
|
19
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
20
18
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
21
19
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
22
20
|
end
|
|
23
21
|
spec.bindir = 'exe'
|
|
24
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
25
23
|
spec.require_paths = ['lib']
|
|
24
|
+
spec.required_ruby_version = ['>= 2.7.0', '< 2.8.0']
|
|
26
25
|
|
|
27
26
|
spec.add_dependency 'concurrent-ruby', '~> 1.0', '>= 1.0.5'
|
|
28
|
-
spec.add_dependency 'cucumber', ['>=
|
|
27
|
+
spec.add_dependency 'cucumber', ['>= 5', '< 6']
|
|
29
28
|
spec.add_dependency 'grpc', ['>= 1', '< 2']
|
|
30
|
-
spec.add_dependency 'puma', '~>
|
|
29
|
+
spec.add_dependency 'puma', '~> 5.0'
|
|
31
30
|
spec.add_dependency 'rest-client', '~> 2.1'
|
|
32
31
|
spec.add_dependency 'rspec-benchmark', '~> 0.6.0'
|
|
33
32
|
spec.add_dependency 'rspec-expectations', '~> 3.9', '>= 3.9.2'
|
|
@@ -36,7 +35,6 @@ Gem::Specification.new do |spec|
|
|
|
36
35
|
spec.add_development_dependency 'bundler', '~> 2.1', '>= 2.1.4'
|
|
37
36
|
spec.add_development_dependency 'grpc-tools', ['>= 1', '< 2']
|
|
38
37
|
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
|
|
39
|
-
spec.add_development_dependency 'rubocop', '~> 0
|
|
38
|
+
spec.add_development_dependency 'rubocop', '~> 1.0'
|
|
40
39
|
spec.add_development_dependency 'simplecov', '~> 0.17.1'
|
|
41
|
-
spec.add_development_dependency 'solargraph', '~> 0.39.11'
|
|
42
40
|
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.
|
|
4
|
+
version: 1.34.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-
|
|
11
|
+
date: 2020-10-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: concurrent-ruby
|
|
@@ -36,20 +36,20 @@ dependencies:
|
|
|
36
36
|
requirements:
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
39
|
+
version: '5'
|
|
40
40
|
- - "<"
|
|
41
41
|
- !ruby/object:Gem::Version
|
|
42
|
-
version: '
|
|
42
|
+
version: '6'
|
|
43
43
|
type: :runtime
|
|
44
44
|
prerelease: false
|
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
46
46
|
requirements:
|
|
47
47
|
- - ">="
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: '
|
|
49
|
+
version: '5'
|
|
50
50
|
- - "<"
|
|
51
51
|
- !ruby/object:Gem::Version
|
|
52
|
-
version: '
|
|
52
|
+
version: '6'
|
|
53
53
|
- !ruby/object:Gem::Dependency
|
|
54
54
|
name: grpc
|
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -76,20 +76,14 @@ dependencies:
|
|
|
76
76
|
requirements:
|
|
77
77
|
- - "~>"
|
|
78
78
|
- !ruby/object:Gem::Version
|
|
79
|
-
version: '
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: 4.3.3
|
|
79
|
+
version: '5.0'
|
|
83
80
|
type: :runtime
|
|
84
81
|
prerelease: false
|
|
85
82
|
version_requirements: !ruby/object:Gem::Requirement
|
|
86
83
|
requirements:
|
|
87
84
|
- - "~>"
|
|
88
85
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
90
|
-
- - ">="
|
|
91
|
-
- !ruby/object:Gem::Version
|
|
92
|
-
version: 4.3.3
|
|
86
|
+
version: '5.0'
|
|
93
87
|
- !ruby/object:Gem::Dependency
|
|
94
88
|
name: rest-client
|
|
95
89
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -224,14 +218,14 @@ dependencies:
|
|
|
224
218
|
requirements:
|
|
225
219
|
- - "~>"
|
|
226
220
|
- !ruby/object:Gem::Version
|
|
227
|
-
version: '0
|
|
221
|
+
version: '1.0'
|
|
228
222
|
type: :development
|
|
229
223
|
prerelease: false
|
|
230
224
|
version_requirements: !ruby/object:Gem::Requirement
|
|
231
225
|
requirements:
|
|
232
226
|
- - "~>"
|
|
233
227
|
- !ruby/object:Gem::Version
|
|
234
|
-
version: '0
|
|
228
|
+
version: '1.0'
|
|
235
229
|
- !ruby/object:Gem::Dependency
|
|
236
230
|
name: simplecov
|
|
237
231
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -246,20 +240,6 @@ dependencies:
|
|
|
246
240
|
- - "~>"
|
|
247
241
|
- !ruby/object:Gem::Version
|
|
248
242
|
version: 0.17.1
|
|
249
|
-
- !ruby/object:Gem::Dependency
|
|
250
|
-
name: solargraph
|
|
251
|
-
requirement: !ruby/object:Gem::Requirement
|
|
252
|
-
requirements:
|
|
253
|
-
- - "~>"
|
|
254
|
-
- !ruby/object:Gem::Version
|
|
255
|
-
version: 0.39.11
|
|
256
|
-
type: :development
|
|
257
|
-
prerelease: false
|
|
258
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
259
|
-
requirements:
|
|
260
|
-
- - "~>"
|
|
261
|
-
- !ruby/object:Gem::Version
|
|
262
|
-
version: 0.39.11
|
|
263
243
|
description: Allows you to keep using the power of ruby to test other systems
|
|
264
244
|
email:
|
|
265
245
|
- alexrfalkowski@gmail.com
|
|
@@ -273,12 +253,12 @@ files:
|
|
|
273
253
|
- ".gitignore"
|
|
274
254
|
- ".rubocop.yml"
|
|
275
255
|
- ".ruby-version"
|
|
256
|
+
- CHANGELOG.md
|
|
276
257
|
- Gemfile
|
|
277
258
|
- Gemfile.lock
|
|
278
259
|
- LICENSE
|
|
279
260
|
- Makefile
|
|
280
261
|
- README.md
|
|
281
|
-
- Rakefile
|
|
282
262
|
- bin/console
|
|
283
263
|
- bin/setup
|
|
284
264
|
- lib/nonnative.rb
|
|
@@ -292,6 +272,7 @@ files:
|
|
|
292
272
|
- lib/nonnative/delay_socket_pair.rb
|
|
293
273
|
- lib/nonnative/error.rb
|
|
294
274
|
- lib/nonnative/fault_injection_proxy.rb
|
|
275
|
+
- lib/nonnative/go_command.rb
|
|
295
276
|
- lib/nonnative/grpc_server.rb
|
|
296
277
|
- lib/nonnative/http_client.rb
|
|
297
278
|
- lib/nonnative/http_server.rb
|
|
@@ -310,6 +291,7 @@ files:
|
|
|
310
291
|
- lib/nonnative/start_error.rb
|
|
311
292
|
- lib/nonnative/startup.rb
|
|
312
293
|
- lib/nonnative/stop_error.rb
|
|
294
|
+
- lib/nonnative/strategy.rb
|
|
313
295
|
- lib/nonnative/timeout.rb
|
|
314
296
|
- lib/nonnative/version.rb
|
|
315
297
|
- nonnative.gemspec
|
|
@@ -326,7 +308,10 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
326
308
|
requirements:
|
|
327
309
|
- - ">="
|
|
328
310
|
- !ruby/object:Gem::Version
|
|
329
|
-
version:
|
|
311
|
+
version: 2.7.0
|
|
312
|
+
- - "<"
|
|
313
|
+
- !ruby/object:Gem::Version
|
|
314
|
+
version: 2.8.0
|
|
330
315
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
331
316
|
requirements:
|
|
332
317
|
- - ">="
|
data/Rakefile
DELETED