nonnative 1.31.0 → 1.39.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: f9da622a2bc452f1fb3fde00697e415939676e86effb17c6a8a461bcabed826e
4
- data.tar.gz: 93d0f12cb69c8281f5ec04c01d081f4a5993b090e99f6fa1c0f3d3cc318de6d1
3
+ metadata.gz: 05eabed13ed77a7eea02eb898db4a670c53286639168190c1f068e8683606e9d
4
+ data.tar.gz: a50f29b97792cf8248187e30f3aabfb5d204fae05235821b5b358176feca7997
5
5
  SHA512:
6
- metadata.gz: 4b68bea5ebd563bf547c3db4e4929c91a3003dd5560e595f6b75cb70f61eb9334f5c6d3513d005b11a280ab5b89423628bf08cb71058e6a71ec71eee37285532
7
- data.tar.gz: 7cd3daed412bffe1e55c4ba4c1dbf03afb3e65812c11a34720ca3cee18fe4800f842598716c44582da8928347454e77206f668975f76eb43055e18215f228d38
6
+ metadata.gz: dbed996363616c31404a70079bdfa475aa8917b8f7edc492af04cff257db468599ffc04ab68ac452f47071bee00ffefc0d4e49186f9c58c7cb8a242bb0ea9240
7
+ data.tar.gz: 2190e7f96f504645c9e4069660d3af06309a08e48ecb13984656dcc68ee93edd813bbf8ab275eea7f3fee9c7efe2fa9a2c22df9017b5fbfcc673c244a35c0fba
data/.circleci/config.yml CHANGED
@@ -1,22 +1,16 @@
1
1
  version: 2.1
2
- orbs:
3
- sonarcloud: sonarsource/sonarcloud@1.0.1
4
2
 
5
3
  jobs:
6
4
  build:
7
5
  docker:
8
- - image: circleci/ruby:2.7
9
- environment:
10
- BUNDLE_JOBS: "3"
11
- BUNDLE_PATH: vendor/bundle
12
- BUNDLE_RETRY: "3"
6
+ - image: alexfalkowski/ruby:2.7
13
7
  steps:
14
8
  - checkout
15
9
  - restore_cache:
16
10
  keys:
17
11
  - nonnative-gem-cache-{{ checksum "Gemfile.lock" }}
18
12
  - nonnative-gem-cache-
19
- - run: make dependencies
13
+ - run: make dep
20
14
  - save_cache:
21
15
  key: nonnative-gem-cache-{{ checksum "Gemfile.lock" }}
22
16
  paths:
@@ -24,15 +18,26 @@ jobs:
24
18
  - run: make features
25
19
  - store_test_results:
26
20
  path: reports
27
- - run: make analysis
21
+ - run: make lint
28
22
  - store_artifacts:
29
23
  path: coverage
30
24
  - store_artifacts:
31
25
  path: features/logs
32
- - sonarcloud/scan
26
+ release:
27
+ docker:
28
+ - image: alexfalkowski/release:2.0
29
+ steps:
30
+ - checkout
31
+ - run: release.sh
33
32
 
34
33
  workflows:
35
34
  nonnative:
36
35
  jobs:
37
- - build:
38
- context: SonarCloud
36
+ - build
37
+ - release:
38
+ context: gh
39
+ requires:
40
+ - build
41
+ filters:
42
+ branches:
43
+ 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
@@ -4,7 +4,7 @@ AllCops:
4
4
  NewCops: enable
5
5
 
6
6
  Layout/LineLength:
7
- Max: 120
7
+ Max: 160
8
8
 
9
9
  Metrics/MethodLength:
10
10
  Max: 20
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.7.1
1
+ ruby-2.7.2
data/CHANGELOG.md ADDED
@@ -0,0 +1,169 @@
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.39.0](https://github.com/alexfalkowski/nonnative/compare/v1.38.0...v1.39.0) (2021-04-23)
6
+
7
+
8
+ ### Features
9
+
10
+ * log interruptions ([#75](https://github.com/alexfalkowski/nonnative/issues/75)) ([bde3e05](https://github.com/alexfalkowski/nonnative/commit/bde3e052b422a0ca659cfb54fcf3ca9d8a1fb20c))
11
+
12
+ ## [1.38.0](https://github.com/alexfalkowski/nonnative/compare/v1.37.0...v1.38.0) (2021-04-22)
13
+
14
+
15
+ ### Features
16
+
17
+ * terminate connections on change ([#74](https://github.com/alexfalkowski/nonnative/issues/74)) ([6c1cc8e](https://github.com/alexfalkowski/nonnative/commit/6c1cc8e1c3f15d11848889852897b523f5848794))
18
+
19
+ ## [1.37.0](https://github.com/alexfalkowski/nonnative/compare/v1.36.0...v1.37.0) (2021-04-22)
20
+
21
+
22
+ ### Features
23
+
24
+ * simplify go exeutable ([#73](https://github.com/alexfalkowski/nonnative/issues/73)) ([95e4cf4](https://github.com/alexfalkowski/nonnative/commit/95e4cf44180ee84d32cc42ee058d6742732b57b9))
25
+
26
+ ## [1.36.0](https://github.com/alexfalkowski/nonnative/compare/v1.35.2...v1.36.0) (2021-04-21)
27
+
28
+
29
+ ### Features
30
+
31
+ * remove badge from docs ([#72](https://github.com/alexfalkowski/nonnative/issues/72)) ([2cd384c](https://github.com/alexfalkowski/nonnative/commit/2cd384cb9f73da1f131829f1eaf9b0c9e1ae3cdf))
32
+
33
+ ### [1.35.2](https://github.com/alexfalkowski/nonnative/compare/v1.35.1...v1.35.2) (2021-04-21)
34
+
35
+
36
+ ### Bug Fixes
37
+
38
+ * go command ([#71](https://github.com/alexfalkowski/nonnative/issues/71)) ([fe28cf3](https://github.com/alexfalkowski/nonnative/commit/fe28cf345be108780b47ac4c96d212b215d721a8))
39
+
40
+ ### [1.35.1](https://github.com/alexfalkowski/nonnative/compare/v1.35.0...v1.35.1) (2021-04-04)
41
+
42
+ ## [1.35.0](https://github.com/alexfalkowski/nonnative/compare/v1.34.0...v1.35.0) (2021-04-03)
43
+
44
+
45
+ ### Features
46
+
47
+ * **deps:** udate to latest ([#69](https://github.com/alexfalkowski/nonnative/issues/69)) ([8989b5d](https://github.com/alexfalkowski/nonnative/commit/8989b5dd960cc7064ed196545625c9ef8b9ee280))
48
+ * update ruby to version 2.7.2 [ci skip] ([90d3cb7](https://github.com/alexfalkowski/nonnative/commit/90d3cb7b24d2c4a70dd8e4fad809f008c849b34b))
49
+
50
+ ## [1.34.0](https://github.com/alexfalkowski/nonnative/compare/v1.33.0...v1.34.0) (2020-10-30)
51
+
52
+
53
+ ### Features
54
+
55
+ * bump to version 1.34.0 ([882f3db](https://github.com/alexfalkowski/nonnative/commit/882f3db513a8ffae7661dd000d50a380c2c004d0))
56
+
57
+ ## [1.33.0](https://github.com/alexfalkowski/nonnative/compare/v1.32.0...v1.33.0) (2020-10-30)
58
+
59
+
60
+ ### Features
61
+
62
+ * bump to version 1.33.0 ([538ebf5](https://github.com/alexfalkowski/nonnative/commit/538ebf54c9d49ac3227f9c0a14ce9074d961c42d))
63
+
64
+
65
+ ### Bug Fixes
66
+
67
+ * make sure we don't run ci again ([bf40e54](https://github.com/alexfalkowski/nonnative/commit/bf40e5471d7701040e64c035e652df534db7e783))
68
+
69
+ ## [1.32.0](https://github.com/alexfalkowski/nonnative/compare/v1.31.0...v1.32.0) (2020-10-30)
70
+
71
+
72
+ ### Features
73
+
74
+ * update deps ([a18e739](https://github.com/alexfalkowski/nonnative/commit/a18e739285cab1e75b2c4bb2da573e4b437d05b5))
75
+
76
+ ## 1.31.0 (2020-10-30)
77
+
78
+
79
+ ### Features
80
+
81
+ * abort on exception for threads ([16c236a](https://github.com/alexfalkowski/nonnative/commit/16c236afbd4e434d19d26166bf515def56907369))
82
+ * add ability to create chaos ([5c74b1f](https://github.com/alexfalkowski/nonnative/commit/5c74b1fc732017a658bd5e86ba8d1d849028bfa7))
83
+ * add ability to override strategy ([668f61b](https://github.com/alexfalkowski/nonnative/commit/668f61b3d802958bd2d948ba47f54df7ad4725f4))
84
+ * add chaos proxy ([84f6be8](https://github.com/alexfalkowski/nonnative/commit/84f6be83e5d00a582cf6458e34a1f1c169fe81b8))
85
+ * add concurrent-ruby ([0ba97ae](https://github.com/alexfalkowski/nonnative/commit/0ba97ae9c5d471564d9098e50864565208e941b3))
86
+ * add delay to proxy ([9004d56](https://github.com/alexfalkowski/nonnative/commit/9004d5643d38e530124077f777b7fec494aa5a10))
87
+ * add logging to servers ([a6c16a7](https://github.com/alexfalkowski/nonnative/commit/a6c16a7c43ec52b8a6a4766e92fdfe0179bc9b4b))
88
+ * add name property ([7804c22](https://github.com/alexfalkowski/nonnative/commit/7804c22e1e46bc7031628fd99fbb0e1382b9b438))
89
+ * add no proxy ([b819f6c](https://github.com/alexfalkowski/nonnative/commit/b819f6cf10ec86c52e7429e6948369905e079d38))
90
+ * add proxy logs ([66e0acd](https://github.com/alexfalkowski/nonnative/commit/66e0acd4aa01ae9b7335f6df4ff6d4f3c89239ac))
91
+ * add random-port (0.5.1) ([0cb80f0](https://github.com/alexfalkowski/nonnative/commit/0cb80f0a05189fa9aab4ce5ea01d83f02dfe78f7))
92
+ * add running go command ([4c45a19](https://github.com/alexfalkowski/nonnative/commit/4c45a19c9acfa157c67e2bdd1fd470558fa2f80f))
93
+ * add timeout ([dbe4d9b](https://github.com/alexfalkowski/nonnative/commit/dbe4d9b7e7f4d5ecdaa89a60a5b135ccefecc43d))
94
+ * grpc-tools (1.32.0) ([e2ea2fe](https://github.com/alexfalkowski/nonnative/commit/e2ea2fea8cda36cc97e11d75d7b29a12302ce5b5))
95
+ * invalid data ([f83d35f](https://github.com/alexfalkowski/nonnative/commit/f83d35ffc7374d182d8c3e4b513b460d38121c83))
96
+ * loosen grc dep ([11e8de4](https://github.com/alexfalkowski/nonnative/commit/11e8de4228417483c26213f40caee351dbbdf861))
97
+ * loosen grc dep ([498a6d5](https://github.com/alexfalkowski/nonnative/commit/498a6d56c9e157f15ebe77d57cd0477abdc8ec34))
98
+ * move to use predefined port ([439971f](https://github.com/alexfalkowski/nonnative/commit/439971fa0388380701e80bce18d7bf61f07f9bc7))
99
+ * pass options to socket pair ([7ebb938](https://github.com/alexfalkowski/nonnative/commit/7ebb9389c4cab8639f19bf234d65359fbfdef342))
100
+ * process start and stop in order ([589abe9](https://github.com/alexfalkowski/nonnative/commit/589abe9bee0743dc38a57aef5f73871eb277ec28))
101
+ * remove timeout ([d3dc376](https://github.com/alexfalkowski/nonnative/commit/d3dc376522aefd4856e15bba84309a5e77641db6))
102
+ * rename proxy ([5b87699](https://github.com/alexfalkowski/nonnative/commit/5b87699c622e9db7fed865ea75d8ee294c996b5e))
103
+ * socket pair ([d50112e](https://github.com/alexfalkowski/nonnative/commit/d50112e72f4a3f1af93ba2bc4274282c06690048))
104
+ * store connections in concurrent hash ([6731d95](https://github.com/alexfalkowski/nonnative/commit/6731d9523c933a6598ce07b3d65e9678d188c0ad))
105
+ * update cucumber (4.1.0) ([c38ea01](https://github.com/alexfalkowski/nonnative/commit/c38ea015dad051e494a1aa90b7452193735cad79))
106
+ * update deps ([7c9b11f](https://github.com/alexfalkowski/nonnative/commit/7c9b11fb35c9655f2d8b161498e134ab903c82c9))
107
+ * update grpc (1.30.1) ([98b7262](https://github.com/alexfalkowski/nonnative/commit/98b7262d76d30a0097db138e6236a43c296ce207))
108
+ * update puma ([36ff809](https://github.com/alexfalkowski/nonnative/commit/36ff809264c712240f50db24971f6045faaceac3))
109
+ * update to ruby-2.7.1 ([192ed03](https://github.com/alexfalkowski/nonnative/commit/192ed03c9d929e7fdadc80ab7b48b4a8081daed1))
110
+ * use puma ([2bfbb0f](https://github.com/alexfalkowski/nonnative/commit/2bfbb0f15d7e20647e72332aa3830c9144a1148d))
111
+ * use request ([c757b8b](https://github.com/alexfalkowski/nonnative/commit/c757b8b1d4f513451b08dd0408256244c7a29f7f))
112
+ * **command:** wait for pid ([5bf9a34](https://github.com/alexfalkowski/nonnative/commit/5bf9a34ab96b10365e894dd66b260c2aa902f19b))
113
+ * **grpc:** wait for server ([ba90600](https://github.com/alexfalkowski/nonnative/commit/ba906008ed7a8d72f8ee8f5f37eddf541be97a8a))
114
+ * **http:** add put and delete ([54b7b9a](https://github.com/alexfalkowski/nonnative/commit/54b7b9a906e0e80556c058ec85386cf4997d6a1b))
115
+ * **http:** wait for server to start ([10e0f37](https://github.com/alexfalkowski/nonnative/commit/10e0f37e0da9e0896365c771a8886dc0eb94906b))
116
+ * **process:** allow to pass different signal ([6b80e69](https://github.com/alexfalkowski/nonnative/commit/6b80e690f97e3f16a315a271dca5476647ce4177))
117
+ * add grpc (~> 1.28) ([6cabe9e](https://github.com/alexfalkowski/nonnative/commit/6cabe9e6e6107405459be0cdf93afc9fae742d6e))
118
+ * add overridable waiting ([be78cf4](https://github.com/alexfalkowski/nonnative/commit/be78cf47f2cb338cd98dff5ccfd5af3b41321428))
119
+ * **grpc:** use run instead of run_till_terminated ([f0609af](https://github.com/alexfalkowski/nonnative/commit/f0609afe3878a8d4e5eaef77457b7a868bc234e8))
120
+ * add ability to use configuration file ([f3d9c92](https://github.com/alexfalkowski/nonnative/commit/f3d9c923385ad338d42ec924ea60c16dcc1a6ed7))
121
+ * add puma (4.3.3) ([1b3b01c](https://github.com/alexfalkowski/nonnative/commit/1b3b01c17cb3b634e17a68e8e88404ff66fa6be5))
122
+ * add sinatra (2.0.8.1) ([2f27876](https://github.com/alexfalkowski/nonnative/commit/2f2787648deb641dbd78875433f0928e3b754cdd))
123
+ * add starting servers ([47955d3](https://github.com/alexfalkowski/nonnative/commit/47955d327d251ae0df99c6f99bbe4f5e8fa1acb9))
124
+ * add the ability to see the type that has issues ([d119ccc](https://github.com/alexfalkowski/nonnative/commit/d119ccc0f9575740b4a14c5bf5f1912c3db11692))
125
+ * enable rubocop cops ([00266e5](https://github.com/alexfalkowski/nonnative/commit/00266e52cb20d058ebccc5f09f4787d1f6899400))
126
+ * lock cucumber ([a4817a8](https://github.com/alexfalkowski/nonnative/commit/a4817a8d57edb23ebb93610c86f5539ef79af243))
127
+ * lock rspec-benchmark ([03d9b62](https://github.com/alexfalkowski/nonnative/commit/03d9b627314d859cef9b002e1d903f22bad9efad))
128
+ * lock semantic_logger ([e340785](https://github.com/alexfalkowski/nonnative/commit/e340785fa1e97c991196e1ee1168dac3e4973cb3))
129
+ * make sure we don't do things serially ([d265aac](https://github.com/alexfalkowski/nonnative/commit/d265aaca9f798ab004ee125a55e0406f9b2f7739))
130
+ * remove logger ([b2ae52b](https://github.com/alexfalkowski/nonnative/commit/b2ae52b20ce0cf65f431ceaa315b353ed41fcc80))
131
+ * remove logs ([787e490](https://github.com/alexfalkowski/nonnative/commit/787e490b71884c8dcd0920778b88fd94d520dfab))
132
+ * remove structure ([79604f6](https://github.com/alexfalkowski/nonnative/commit/79604f631990a01f48da066014b52742e0bc71d0))
133
+ * remove writting to STDOUT ([be1f668](https://github.com/alexfalkowski/nonnative/commit/be1f668278a74f5c3a33538dbeda77ac9b93d316))
134
+ * rename to configuration process ([aac5b4c](https://github.com/alexfalkowski/nonnative/commit/aac5b4c435ea1fb3942a0c752f573ff2ca5026b6))
135
+ * rename to process pool ([9e4391e](https://github.com/alexfalkowski/nonnative/commit/9e4391e94fc32d69cdf651eff8995bac91f965fd))
136
+ * start multiple processes ([5a9c8ba](https://github.com/alexfalkowski/nonnative/commit/5a9c8baf22537dc246fc73eab3d1a645bc51f4be))
137
+ * start nonnative with a long start up time server will error ([6770f66](https://github.com/alexfalkowski/nonnative/commit/6770f6657ccb724c311a43e77b03595943504fef))
138
+ * stop nonnative with a long stopping time server will error ([3040227](https://github.com/alexfalkowski/nonnative/commit/3040227113c50aa9a7e84bf44bd03a3c0a6142be))
139
+ * successfully starting of grpc servers programatically ([cc92276](https://github.com/alexfalkowski/nonnative/commit/cc9227620ecb8133277871967eb835f67943ccad))
140
+ * successfully starting of HTTP servers programatically ([93373f1](https://github.com/alexfalkowski/nonnative/commit/93373f1b85d50328b54ee49236f55acd2c5c0180))
141
+ * successfully starting of HTTP servers programatically and getting health ([be9ae06](https://github.com/alexfalkowski/nonnative/commit/be9ae06952e83af666f654a9782b596673709c87))
142
+ * successfully starting of HTTP servers programatically and getting metrics ([4536904](https://github.com/alexfalkowski/nonnative/commit/45369041a8d95e240b5533d2132b60fa4d31278f))
143
+ * successfully starting of HTTP servers programatically with not found message ([111d81d](https://github.com/alexfalkowski/nonnative/commit/111d81da298a7203c08fa5725e2310736b613fb9))
144
+ * update rspec-expectations (3.9.2) ([1f656a9](https://github.com/alexfalkowski/nonnative/commit/1f656a975e2fd6b1af830ca38f24d978a105d0e0))
145
+ * update rubocop (0.82.0) ([48e462d](https://github.com/alexfalkowski/nonnative/commit/48e462d980f858102a45367fc420b7c66596a22f))
146
+ * update solargraph (0.39.7) ([8caff98](https://github.com/alexfalkowski/nonnative/commit/8caff98e5fea79c7123cc49f573ef2122ef14b33))
147
+ * use 0.0.0.0 ([1e77298](https://github.com/alexfalkowski/nonnative/commit/1e77298620666578472220c0e02c5121a4d9838f))
148
+ * use better naming. ([228c9ed](https://github.com/alexfalkowski/nonnative/commit/228c9ed9607c30834f0f5dfa46114a2ed84b67a3))
149
+ * use ruby 2.6.6 ([fdb61da](https://github.com/alexfalkowski/nonnative/commit/fdb61da719e6cf3d35db7d8af6acea19481a8ff9))
150
+
151
+
152
+ ### Bug Fixes
153
+
154
+ * add comments ([cb93b23](https://github.com/alexfalkowski/nonnative/commit/cb93b23a3c8ae463b656fb4a43e2b7dab83db2f5))
155
+ * add small sleeps as prcesses and severs take time to start. ([1e3d363](https://github.com/alexfalkowski/nonnative/commit/1e3d36302c0fc0c58f7b2239db39876acf4ec2fc))
156
+ * ignore exceptions ([4076cf2](https://github.com/alexfalkowski/nonnative/commit/4076cf2019924b89f2766edbafed603d08c63cc6))
157
+ * only raise an error after we have finished start or stop ([b7b0b17](https://github.com/alexfalkowski/nonnative/commit/b7b0b17cc4cac53abcb052a76afc29312b0b971b))
158
+ * pass service like in command ([43a961b](https://github.com/alexfalkowski/nonnative/commit/43a961b7bfa5e954371d14553009969f89af87a4))
159
+ * register at exit first ([7dad865](https://github.com/alexfalkowski/nonnative/commit/7dad865a29117b830c7717d167e14f88c9d6f2af))
160
+ * remove rescue ([230ae39](https://github.com/alexfalkowski/nonnative/commit/230ae395406552bbe7610a9c37322573c2d6f92b))
161
+ * remove thwait ([62cf089](https://github.com/alexfalkowski/nonnative/commit/62cf089e3b10bae8290d8cfbb2b8c4e4c50aef1f))
162
+ * remove unused vriables ([0d38d8a](https://github.com/alexfalkowski/nonnative/commit/0d38d8a12d108370682e2f7cad5f5a4f62e5835f))
163
+ * start servers first ([9a483f0](https://github.com/alexfalkowski/nonnative/commit/9a483f02709b4b954205dc66bf7ea7fa20110a37))
164
+ * stop servers first ([a736496](https://github.com/alexfalkowski/nonnative/commit/a73649666010820697539c621fb9a7e8677008a7))
165
+ * sync state ([75ab8e8](https://github.com/alexfalkowski/nonnative/commit/75ab8e8a9ea421aac8e970a3b7b1c2c1c556b425))
166
+ * **chaos:** ignore ECONNRESET ([c5ff8df](https://github.com/alexfalkowski/nonnative/commit/c5ff8dfcb3af8dbe8fb9fb5a6f04dd2308eadbaa))
167
+ * **grpc:** make servers consistent ([ece8404](https://github.com/alexfalkowski/nonnative/commit/ece8404d0a56ded351df317f3dacaac054f67f0a))
168
+ * **grpc:** pass timout to wait ([0a18218](https://github.com/alexfalkowski/nonnative/commit/0a18218ff675a4bf76d39ac2c547a87955013e42))
169
+ * **http:** allow to run multiple servers ([6e640de](https://github.com/alexfalkowski/nonnative/commit/6e640ded9312d89de125f0b2bb9a34c982163a41))
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nonnative (1.31.0)
4
+ nonnative (1.39.0)
5
5
  concurrent-ruby (~> 1.0, >= 1.0.5)
6
6
  cucumber (>= 5, < 6)
7
7
  grpc (>= 1, < 2)
@@ -14,19 +14,21 @@ PATH
14
14
  GEM
15
15
  remote: https://rubygems.org/
16
16
  specs:
17
- activesupport (6.0.3.4)
17
+ activesupport (6.1.3.1)
18
18
  concurrent-ruby (~> 1.0, >= 1.0.2)
19
- i18n (>= 0.7, < 2)
20
- minitest (~> 5.1)
21
- tzinfo (~> 1.1)
22
- zeitwerk (~> 2.2, >= 2.2.2)
23
- ast (2.4.1)
19
+ i18n (>= 1.6, < 2)
20
+ minitest (>= 5.1)
21
+ tzinfo (~> 2.0)
22
+ zeitwerk (~> 2.3)
23
+ ast (2.4.2)
24
+ backport (1.1.2)
25
+ benchmark (0.1.1)
24
26
  benchmark-malloc (0.2.0)
25
27
  benchmark-perf (0.6.0)
26
28
  benchmark-trend (0.4.0)
27
29
  builder (3.2.4)
28
- concurrent-ruby (1.1.7)
29
- cucumber (5.2.0)
30
+ concurrent-ruby (1.1.8)
31
+ cucumber (5.3.0)
30
32
  builder (~> 3.2, >= 3.2.4)
31
33
  cucumber-core (~> 8.0, >= 8.0.1)
32
34
  cucumber-create-meta (~> 2.0, >= 2.0.2)
@@ -42,15 +44,15 @@ GEM
42
44
  cucumber-gherkin (~> 15.0, >= 15.0.2)
43
45
  cucumber-messages (~> 13.0, >= 13.0.1)
44
46
  cucumber-tag-expressions (~> 2.0, >= 2.0.4)
45
- cucumber-create-meta (2.0.2)
46
- cucumber-messages (~> 13.0, >= 13.0.1)
47
+ cucumber-create-meta (2.0.4)
48
+ cucumber-messages (~> 13.1, >= 13.1.0)
47
49
  sys-uname (~> 1.2, >= 1.2.1)
48
50
  cucumber-cucumber-expressions (10.3.0)
49
51
  cucumber-gherkin (15.0.2)
50
52
  cucumber-messages (~> 13.0, >= 13.0.1)
51
53
  cucumber-html-formatter (9.0.0)
52
54
  cucumber-messages (~> 13.0, >= 13.0.1)
53
- cucumber-messages (13.1.0)
55
+ cucumber-messages (13.2.1)
54
56
  protobuf-cucumber (~> 3.10, >= 3.10.8)
55
57
  cucumber-tag-expressions (2.0.4)
56
58
  cucumber-wire (4.0.1)
@@ -58,108 +60,135 @@ GEM
58
60
  cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
59
61
  cucumber-messages (~> 13.0, >= 13.0.1)
60
62
  diff-lcs (1.4.4)
61
- docile (1.3.2)
63
+ docile (1.3.5)
62
64
  domain_name (0.5.20190701)
63
65
  unf (>= 0.0.5, < 1.0.0)
64
- ffi (1.13.1)
65
- google-protobuf (3.13.0)
66
- googleapis-common-protos-types (1.0.5)
67
- google-protobuf (~> 3.11)
68
- grpc (1.32.0)
69
- google-protobuf (~> 3.13)
66
+ e2mmap (0.1.0)
67
+ ffi (1.15.0)
68
+ google-protobuf (3.15.8)
69
+ googleapis-common-protos-types (1.0.6)
70
+ google-protobuf (~> 3.14)
71
+ grpc (1.37.0)
72
+ google-protobuf (~> 3.15)
70
73
  googleapis-common-protos-types (~> 1.0)
71
- grpc-tools (1.32.0)
74
+ grpc-tools (1.37.0)
72
75
  http-accept (1.7.0)
73
76
  http-cookie (1.0.3)
74
77
  domain_name (~> 0.5)
75
- i18n (1.8.5)
78
+ i18n (1.8.10)
76
79
  concurrent-ruby (~> 1.0)
77
- json (2.3.1)
80
+ jaro_winkler (1.5.4)
81
+ kramdown (2.3.1)
82
+ rexml
83
+ kramdown-parser-gfm (1.1.0)
84
+ kramdown (~> 2.0)
78
85
  middleware (0.1.0)
79
86
  mime-types (3.3.1)
80
87
  mime-types-data (~> 3.2015)
81
- mime-types-data (3.2020.0512)
82
- minitest (5.14.2)
88
+ mime-types-data (3.2021.0225)
89
+ mini_portile2 (2.5.0)
90
+ minitest (5.14.4)
83
91
  multi_test (0.1.2)
84
92
  mustermann (1.1.1)
85
93
  ruby2_keywords (~> 0.0.1)
86
94
  netrc (0.11.0)
87
- nio4r (2.5.4)
88
- parallel (1.19.2)
89
- parser (2.7.2.0)
95
+ nio4r (2.5.7)
96
+ nokogiri (1.11.3)
97
+ mini_portile2 (~> 2.5.0)
98
+ racc (~> 1.4)
99
+ parallel (1.20.1)
100
+ parser (3.0.1.0)
90
101
  ast (~> 2.4.1)
91
102
  protobuf-cucumber (3.10.8)
92
103
  activesupport (>= 3.2)
93
104
  middleware
94
105
  thor
95
106
  thread_safe
96
- puma (5.0.2)
107
+ puma (5.2.2)
97
108
  nio4r (~> 2.0)
109
+ racc (1.5.2)
98
110
  rack (2.2.3)
99
111
  rack-protection (2.1.0)
100
112
  rack
101
113
  rainbow (3.0.0)
102
- rake (13.0.1)
103
- regexp_parser (1.8.2)
114
+ regexp_parser (2.1.1)
104
115
  rest-client (2.1.0)
105
116
  http-accept (>= 1.7.0, < 2.0)
106
117
  http-cookie (>= 1.0.2, < 2.0)
107
118
  mime-types (>= 1.16, < 4.0)
108
119
  netrc (~> 0.8)
109
- rexml (3.2.4)
110
- rspec (3.9.0)
111
- rspec-core (~> 3.9.0)
112
- rspec-expectations (~> 3.9.0)
113
- rspec-mocks (~> 3.9.0)
120
+ reverse_markdown (2.0.0)
121
+ nokogiri
122
+ rexml (3.2.5)
123
+ rspec (3.10.0)
124
+ rspec-core (~> 3.10.0)
125
+ rspec-expectations (~> 3.10.0)
126
+ rspec-mocks (~> 3.10.0)
114
127
  rspec-benchmark (0.6.0)
115
128
  benchmark-malloc (~> 0.2)
116
129
  benchmark-perf (~> 0.6)
117
130
  benchmark-trend (~> 0.4)
118
131
  rspec (>= 3.0)
119
- rspec-core (3.9.3)
120
- rspec-support (~> 3.9.3)
121
- rspec-expectations (3.9.2)
132
+ rspec-core (3.10.1)
133
+ rspec-support (~> 3.10.0)
134
+ rspec-expectations (3.10.1)
122
135
  diff-lcs (>= 1.2.0, < 2.0)
123
- rspec-support (~> 3.9.0)
124
- rspec-mocks (3.9.1)
136
+ rspec-support (~> 3.10.0)
137
+ rspec-mocks (3.10.2)
125
138
  diff-lcs (>= 1.2.0, < 2.0)
126
- rspec-support (~> 3.9.0)
127
- rspec-support (3.9.3)
128
- rubocop (1.0.0)
139
+ rspec-support (~> 3.10.0)
140
+ rspec-support (3.10.2)
141
+ rubocop (1.13.0)
129
142
  parallel (~> 1.10)
130
- parser (>= 2.7.1.5)
143
+ parser (>= 3.0.0.0)
131
144
  rainbow (>= 2.2.2, < 4.0)
132
- regexp_parser (>= 1.8)
145
+ regexp_parser (>= 1.8, < 3.0)
133
146
  rexml
134
- rubocop-ast (>= 0.6.0)
147
+ rubocop-ast (>= 1.2.0, < 2.0)
135
148
  ruby-progressbar (~> 1.7)
136
- unicode-display_width (>= 1.4.0, < 2.0)
137
- rubocop-ast (1.0.0)
149
+ unicode-display_width (>= 1.4.0, < 3.0)
150
+ rubocop-ast (1.4.1)
138
151
  parser (>= 2.7.1.5)
139
- ruby-progressbar (1.10.1)
140
- ruby2_keywords (0.0.2)
141
- simplecov (0.17.1)
152
+ ruby-progressbar (1.11.0)
153
+ ruby2_keywords (0.0.4)
154
+ simplecov (0.21.2)
142
155
  docile (~> 1.1)
143
- json (>= 1.8, < 3)
144
- simplecov-html (~> 0.10.0)
145
- simplecov-html (0.10.2)
156
+ simplecov-html (~> 0.11)
157
+ simplecov_json_formatter (~> 0.1)
158
+ simplecov-html (0.12.3)
159
+ simplecov_json_formatter (0.1.2)
146
160
  sinatra (2.1.0)
147
161
  mustermann (~> 1.0)
148
162
  rack (~> 2.2)
149
163
  rack-protection (= 2.1.0)
150
164
  tilt (~> 2.0)
151
- sys-uname (1.2.1)
152
- ffi (>= 1.0.0)
165
+ solargraph (0.40.4)
166
+ backport (~> 1.1)
167
+ benchmark
168
+ bundler (>= 1.17.2)
169
+ e2mmap
170
+ jaro_winkler (~> 1.5)
171
+ kramdown (~> 2.3)
172
+ kramdown-parser-gfm (~> 1.1)
173
+ parser (~> 3.0)
174
+ reverse_markdown (>= 1.0.5, < 3)
175
+ rubocop (>= 0.52)
176
+ thor (~> 1.0)
177
+ tilt (~> 2.0)
178
+ yard (~> 0.9, >= 0.9.24)
179
+ sys-uname (1.2.2)
180
+ ffi (~> 1.1)
153
181
  thor (1.0.1)
154
182
  thread_safe (0.3.6)
155
183
  tilt (2.0.10)
156
- tzinfo (1.2.7)
157
- thread_safe (~> 0.1)
184
+ tzinfo (2.0.4)
185
+ concurrent-ruby (~> 1.0)
158
186
  unf (0.1.4)
159
187
  unf_ext
160
188
  unf_ext (0.0.7.7)
161
- unicode-display_width (1.7.0)
162
- zeitwerk (2.4.0)
189
+ unicode-display_width (2.0.0)
190
+ yard (0.9.26)
191
+ zeitwerk (2.4.2)
163
192
 
164
193
  PLATFORMS
165
194
  ruby
@@ -168,9 +197,9 @@ DEPENDENCIES
168
197
  bundler (~> 2.1, >= 2.1.4)
169
198
  grpc-tools (>= 1, < 2)
170
199
  nonnative!
171
- rake (~> 13.0, >= 13.0.1)
172
- rubocop (~> 1.0)
173
- simplecov (~> 0.17.1)
200
+ rubocop (~> 1.12)
201
+ simplecov (~> 0.21.2)
202
+ solargraph (~> 0.40.4)
174
203
 
175
204
  BUNDLED WITH
176
205
  2.1.4
data/Makefile CHANGED
@@ -1,27 +1,27 @@
1
1
  .PHONY: features
2
2
 
3
- dependencies:
3
+ dep:
4
4
  bin/setup
5
5
 
6
- outdated-dependencies:
6
+ outdated:
7
7
  bundle outdated --only-explicit
8
8
 
9
9
  features: clean
10
10
  bundle exec cucumber --profile report --fail-fast $(feature)
11
11
 
12
- analysis:
12
+ lint:
13
13
  bundle exec rubocop
14
14
 
15
- cleanup-analysis:
15
+ fix-lint:
16
16
  bundle exec rubocop -A
17
17
 
18
- cleanup-logs:
18
+ clean-logs:
19
19
  rm -rf features/logs/*.log
20
20
 
21
- cleanup-reports:
21
+ clean-reports:
22
22
  rm -rf reports
23
23
 
24
- cleanup-coverage:
24
+ clean-coverage:
25
25
  rm -rf coverage
26
26
 
27
- clean: cleanup-logs cleanup-reports cleanup-coverage
27
+ clean: clean-logs clean-reports clean-coverage
data/README.md CHANGED
@@ -1,5 +1,4 @@
1
1
  [![CircleCI](https://circleci.com/gh/alexfalkowski/nonnative.svg?style=svg)](https://circleci.com/gh/alexfalkowski/nonnative)
2
- [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=alexfalkowski_nonnative&metric=alert_status)](https://sonarcloud.io/dashboard?id=alexfalkowski_nonnative)
3
2
 
4
3
  # Nonnative
5
4
 
@@ -374,7 +373,6 @@ server.proxy.close_all # To use close_all.
374
373
  server.proxy.reset # To reset it back to a good state.
375
374
  ```
376
375
 
377
-
378
376
  ### Go
379
377
 
380
378
  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`
@@ -382,8 +380,6 @@ As we love using go as a language for services we have added support to start bi
382
380
  To get this to work you will need to create a `main_test.go` file with these contents:
383
381
 
384
382
  ```go
385
- // +build features
386
-
387
383
  package main
388
384
 
389
385
  import (
@@ -401,11 +397,11 @@ func TestFeatures(t *testing.T) {
401
397
  Then to compile this binary you will need to do the following:
402
398
 
403
399
  ```sh
404
- go test -mod vendor -c -tags features -covermode=count -o your_binary -coverpkg=./... github.com/your_location
400
+ go test -mod vendor -c -covermode=count -o your_binary -coverpkg=./... github.com/your_location
405
401
  ```
406
402
 
407
403
  Then to get an executable you do the following:
408
404
 
409
405
  ```ruby
410
- Nonnative::GoCommand.new('your_binary', 'reports').executable('sub_command', '--config config.yaml')
406
+ Nonnative.go_executable('reports', 'your_binary', 'sub_command', '--config config.yaml')
411
407
  ```
data/lib/nonnative.rb CHANGED
@@ -46,6 +46,10 @@ module Nonnative
46
46
  class << self
47
47
  attr_reader :pool
48
48
 
49
+ def go_executable(output, exec, cmd, *params)
50
+ Nonnative::GoCommand.new(exec, output).executable(cmd, params)
51
+ end
52
+
49
53
  def load_configuration(path)
50
54
  @configuration ||= Nonnative::Configuration.load_file(path) # rubocop:disable Naming/MemoizedInstanceVariableName
51
55
  end
@@ -3,6 +3,7 @@
3
3
  module Nonnative
4
4
  class CloseAllSocketPair < SocketPair
5
5
  def connect(local_socket)
6
+ ensure
6
7
  local_socket.close
7
8
  end
8
9
  end
@@ -48,27 +48,46 @@ module Nonnative
48
48
  def perform_start
49
49
  loop do
50
50
  thread = Thread.start(tcp_server.accept) do |local_socket|
51
- id = Thread.current.object_id
52
-
53
- logger.info "started connection for #{id} with socket #{local_socket.inspect}"
54
-
55
- connect local_socket
56
- connections.delete(id)
57
-
58
- logger.info "finished connection for #{id} with socket #{local_socket.inspect}"
51
+ accept_connection local_socket
59
52
  end
60
53
 
61
- thread.report_on_exception = false
62
54
  connections[thread.object_id] = thread
63
55
  end
64
56
  end
65
57
 
58
+ def accept_connection(local_socket)
59
+ id = Thread.current.object_id
60
+ socket_info = local_socket.inspect
61
+
62
+ error = connect(local_socket)
63
+ if error
64
+ logger.error "could not handle the connection for '#{id}' with socket '#{socket_info}' and error '#{error}'"
65
+ else
66
+ logger.info "handled connection for '#{id}' with socket '#{socket_info}'"
67
+ end
68
+
69
+ connections.delete(id)
70
+ end
71
+
66
72
  def connect(local_socket)
67
- SocketPairFactory.create(read_state, service.proxy, logger).connect(local_socket)
73
+ pair = SocketPairFactory.create(read_state, service.proxy)
74
+ pair.connect(local_socket)
75
+ rescue StandardError => e
76
+ local_socket.close
77
+
78
+ e
79
+ end
80
+
81
+ def close_connections
82
+ connections.each_value(&:terminate)
83
+ connections.clear
68
84
  end
69
85
 
70
86
  def apply_state(state)
71
- mutex.synchronize { @state = state }
87
+ mutex.synchronize do
88
+ @state = state
89
+ close_connections
90
+ end
72
91
  end
73
92
 
74
93
  def read_state
@@ -2,30 +2,25 @@
2
2
 
3
3
  module Nonnative
4
4
  class GoCommand
5
- def initialize(main, output)
6
- @main = main
5
+ def initialize(exec, output)
6
+ @exec = exec
7
7
  @output = output
8
8
  end
9
9
 
10
10
  def executable(cmd, *params)
11
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
12
+ "#{exec} #{flags(cmd, params).join(' ')} #{cmd} #{params}".strip
19
13
  end
20
14
 
21
15
  private
22
16
 
23
- attr_reader :main, :output
17
+ attr_reader :exec, :output
24
18
 
25
19
  def flags(cmd, params)
26
- m = File.basename(main, File.extname(main))
20
+ m = File.basename(exec, File.extname(exec))
27
21
  p = params.gsub(/\W/, '')
28
- path = "#{output}/#{m}-#{cmd}-#{p}"
22
+ name = [m, cmd, p].reject(&:empty?).join('-')
23
+ path = "#{output}/#{name}"
29
24
 
30
25
  [
31
26
  "-test.cpuprofile=#{path}-cpu.prof",
@@ -2,9 +2,8 @@
2
2
 
3
3
  module Nonnative
4
4
  class SocketPair
5
- def initialize(proxy, logger)
5
+ def initialize(proxy)
6
6
  @proxy = proxy
7
- @logger = logger
8
7
  end
9
8
 
10
9
  def connect(local_socket)
@@ -16,8 +15,6 @@ module Nonnative
16
15
  break if pipe(ready, local_socket, remote_socket)
17
16
  break if pipe(ready, remote_socket, local_socket)
18
17
  end
19
- rescue StandardError => e
20
- logger.error e
21
18
  ensure
22
19
  local_socket.close
23
20
  remote_socket&.close
@@ -25,7 +22,7 @@ module Nonnative
25
22
 
26
23
  protected
27
24
 
28
- attr_reader :proxy, :logger
25
+ attr_reader :proxy
29
26
 
30
27
  def create_remote_socket
31
28
  ::TCPSocket.new('0.0.0.0', proxy.port)
@@ -3,7 +3,7 @@
3
3
  module Nonnative
4
4
  class SocketPairFactory
5
5
  class << self
6
- def create(type, proxy, logger)
6
+ def create(type, proxy)
7
7
  pair = case type
8
8
  when :close_all
9
9
  CloseAllSocketPair
@@ -15,7 +15,7 @@ module Nonnative
15
15
  SocketPair
16
16
  end
17
17
 
18
- pair.new(proxy, logger)
18
+ pair.new(proxy)
19
19
  end
20
20
  end
21
21
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nonnative
4
- VERSION = '1.31.0'
4
+ VERSION = '1.39.0'
5
5
  end
data/nonnative.gemspec CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
34
34
 
35
35
  spec.add_development_dependency 'bundler', '~> 2.1', '>= 2.1.4'
36
36
  spec.add_development_dependency 'grpc-tools', ['>= 1', '< 2']
37
- spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
38
- spec.add_development_dependency 'rubocop', '~> 1.0'
39
- spec.add_development_dependency 'simplecov', '~> 0.17.1'
37
+ spec.add_development_dependency 'rubocop', '~> 1.12'
38
+ spec.add_development_dependency 'simplecov', '~> 0.21.2'
39
+ spec.add_development_dependency 'solargraph', '~> 0.40.4'
40
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.31.0
4
+ version: 1.39.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-10-21 00:00:00.000000000 Z
11
+ date: 2021-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -193,53 +193,47 @@ dependencies:
193
193
  - !ruby/object:Gem::Version
194
194
  version: '2'
195
195
  - !ruby/object:Gem::Dependency
196
- name: rake
196
+ name: rubocop
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: '13.0'
202
- - - ">="
203
- - !ruby/object:Gem::Version
204
- version: 13.0.1
201
+ version: '1.12'
205
202
  type: :development
206
203
  prerelease: false
207
204
  version_requirements: !ruby/object:Gem::Requirement
208
205
  requirements:
209
206
  - - "~>"
210
207
  - !ruby/object:Gem::Version
211
- version: '13.0'
212
- - - ">="
213
- - !ruby/object:Gem::Version
214
- version: 13.0.1
208
+ version: '1.12'
215
209
  - !ruby/object:Gem::Dependency
216
- name: rubocop
210
+ name: simplecov
217
211
  requirement: !ruby/object:Gem::Requirement
218
212
  requirements:
219
213
  - - "~>"
220
214
  - !ruby/object:Gem::Version
221
- version: '1.0'
215
+ version: 0.21.2
222
216
  type: :development
223
217
  prerelease: false
224
218
  version_requirements: !ruby/object:Gem::Requirement
225
219
  requirements:
226
220
  - - "~>"
227
221
  - !ruby/object:Gem::Version
228
- version: '1.0'
222
+ version: 0.21.2
229
223
  - !ruby/object:Gem::Dependency
230
- name: simplecov
224
+ name: solargraph
231
225
  requirement: !ruby/object:Gem::Requirement
232
226
  requirements:
233
227
  - - "~>"
234
228
  - !ruby/object:Gem::Version
235
- version: 0.17.1
229
+ version: 0.40.4
236
230
  type: :development
237
231
  prerelease: false
238
232
  version_requirements: !ruby/object:Gem::Requirement
239
233
  requirements:
240
234
  - - "~>"
241
235
  - !ruby/object:Gem::Version
242
- version: 0.17.1
236
+ version: 0.40.4
243
237
  description: Allows you to keep using the power of ruby to test other systems
244
238
  email:
245
239
  - alexrfalkowski@gmail.com
@@ -253,6 +247,7 @@ files:
253
247
  - ".gitignore"
254
248
  - ".rubocop.yml"
255
249
  - ".ruby-version"
250
+ - CHANGELOG.md
256
251
  - Gemfile
257
252
  - Gemfile.lock
258
253
  - LICENSE
@@ -294,7 +289,6 @@ files:
294
289
  - lib/nonnative/timeout.rb
295
290
  - lib/nonnative/version.rb
296
291
  - nonnative.gemspec
297
- - sonar-project.properties
298
292
  homepage: https://github.com/alexfalkowski/nonnative
299
293
  licenses:
300
294
  - Unlicense
@@ -317,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
317
311
  - !ruby/object:Gem::Version
318
312
  version: '0'
319
313
  requirements: []
320
- rubygems_version: 3.1.2
314
+ rubygems_version: 3.1.4
321
315
  signing_key:
322
316
  specification_version: 4
323
317
  summary: Allows you to keep using the power of ruby to test other systems
@@ -1,4 +0,0 @@
1
- sonar.projectKey=alexfalkowski_nonnative
2
- sonar.organization=alejandrofalkowski
3
- sonar.exclusions=features/**/*
4
- sonar.ruby.coverage.reportPaths=coverage/.resultset.json