nonnative 1.34.0 → 1.40.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 +5 -8
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +59 -0
- data/Gemfile.lock +109 -79
- data/Makefile +8 -8
- data/README.md +2 -6
- data/lib/nonnative.rb +4 -0
- data/lib/nonnative/close_all_socket_pair.rb +1 -0
- data/lib/nonnative/fault_injection_proxy.rb +30 -11
- data/lib/nonnative/go_command.rb +7 -12
- data/lib/nonnative/socket_pair.rb +2 -5
- data/lib/nonnative/socket_pair_factory.rb +2 -2
- data/lib/nonnative/version.rb +1 -1
- data/nonnative.gemspec +5 -5
- metadata +36 -43
- data/sonar-project.properties +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 870143059910a181598b40406aebc0e8d7882133aa01b82091da14436dee664a
|
|
4
|
+
data.tar.gz: 6a1e9449a4eb21b1c58c6c5b3a8256546956f84db8cd5c09c7a939ea09f33cbc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 38f4f40a6460548a9470f707c66e1b5067c3a336a97f49de4415ffdcbb85f07c7f626b61f5948485c630ddcb9d8235b0a6ed069cbd1c6844bfd25b4e9109879c
|
|
7
|
+
data.tar.gz: a19898c50a83a2f7d3d330eec829d7420236f87f0f00919256ebe1ab34c4bffd175124cd5ed832b09275942707b9a15fc3f84a7b14e82d85a5d9437e89bcbadf
|
data/.circleci/config.yml
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
version: 2.1
|
|
2
|
-
orbs:
|
|
3
|
-
sonarcloud: sonarsource/sonarcloud@1.0.1
|
|
4
2
|
|
|
5
3
|
jobs:
|
|
6
4
|
build:
|
|
@@ -12,7 +10,7 @@ jobs:
|
|
|
12
10
|
keys:
|
|
13
11
|
- nonnative-gem-cache-{{ checksum "Gemfile.lock" }}
|
|
14
12
|
- nonnative-gem-cache-
|
|
15
|
-
- run: make
|
|
13
|
+
- run: make dep
|
|
16
14
|
- save_cache:
|
|
17
15
|
key: nonnative-gem-cache-{{ checksum "Gemfile.lock" }}
|
|
18
16
|
paths:
|
|
@@ -20,15 +18,14 @@ jobs:
|
|
|
20
18
|
- run: make features
|
|
21
19
|
- store_test_results:
|
|
22
20
|
path: reports
|
|
23
|
-
- run: make
|
|
21
|
+
- run: make lint
|
|
24
22
|
- store_artifacts:
|
|
25
23
|
path: coverage
|
|
26
24
|
- store_artifacts:
|
|
27
25
|
path: features/logs
|
|
28
|
-
- sonarcloud/scan
|
|
29
26
|
release:
|
|
30
27
|
docker:
|
|
31
|
-
- image: alexfalkowski/release:
|
|
28
|
+
- image: alexfalkowski/release:2.0
|
|
32
29
|
steps:
|
|
33
30
|
- checkout
|
|
34
31
|
- run: release.sh
|
|
@@ -36,9 +33,9 @@ jobs:
|
|
|
36
33
|
workflows:
|
|
37
34
|
nonnative:
|
|
38
35
|
jobs:
|
|
39
|
-
- build
|
|
40
|
-
context: SonarCloud
|
|
36
|
+
- build
|
|
41
37
|
- release:
|
|
38
|
+
context: gh
|
|
42
39
|
requires:
|
|
43
40
|
- build
|
|
44
41
|
filters:
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
ruby-2.7.
|
|
1
|
+
ruby-2.7.2
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,65 @@
|
|
|
2
2
|
|
|
3
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
4
|
|
|
5
|
+
## [1.40.0](https://github.com/alexfalkowski/nonnative/compare/v1.39.0...v1.40.0) (2021-04-25)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* update deps ([#76](https://github.com/alexfalkowski/nonnative/issues/76)) ([83c9e16](https://github.com/alexfalkowski/nonnative/commit/83c9e16b5e5f9f14ed2cc5fd2eb29b83147c1e53))
|
|
11
|
+
|
|
12
|
+
## [1.39.0](https://github.com/alexfalkowski/nonnative/compare/v1.38.0...v1.39.0) (2021-04-23)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* log interruptions ([#75](https://github.com/alexfalkowski/nonnative/issues/75)) ([bde3e05](https://github.com/alexfalkowski/nonnative/commit/bde3e052b422a0ca659cfb54fcf3ca9d8a1fb20c))
|
|
18
|
+
|
|
19
|
+
## [1.38.0](https://github.com/alexfalkowski/nonnative/compare/v1.37.0...v1.38.0) (2021-04-22)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Features
|
|
23
|
+
|
|
24
|
+
* terminate connections on change ([#74](https://github.com/alexfalkowski/nonnative/issues/74)) ([6c1cc8e](https://github.com/alexfalkowski/nonnative/commit/6c1cc8e1c3f15d11848889852897b523f5848794))
|
|
25
|
+
|
|
26
|
+
## [1.37.0](https://github.com/alexfalkowski/nonnative/compare/v1.36.0...v1.37.0) (2021-04-22)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### Features
|
|
30
|
+
|
|
31
|
+
* simplify go exeutable ([#73](https://github.com/alexfalkowski/nonnative/issues/73)) ([95e4cf4](https://github.com/alexfalkowski/nonnative/commit/95e4cf44180ee84d32cc42ee058d6742732b57b9))
|
|
32
|
+
|
|
33
|
+
## [1.36.0](https://github.com/alexfalkowski/nonnative/compare/v1.35.2...v1.36.0) (2021-04-21)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Features
|
|
37
|
+
|
|
38
|
+
* remove badge from docs ([#72](https://github.com/alexfalkowski/nonnative/issues/72)) ([2cd384c](https://github.com/alexfalkowski/nonnative/commit/2cd384cb9f73da1f131829f1eaf9b0c9e1ae3cdf))
|
|
39
|
+
|
|
40
|
+
### [1.35.2](https://github.com/alexfalkowski/nonnative/compare/v1.35.1...v1.35.2) (2021-04-21)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Bug Fixes
|
|
44
|
+
|
|
45
|
+
* go command ([#71](https://github.com/alexfalkowski/nonnative/issues/71)) ([fe28cf3](https://github.com/alexfalkowski/nonnative/commit/fe28cf345be108780b47ac4c96d212b215d721a8))
|
|
46
|
+
|
|
47
|
+
### [1.35.1](https://github.com/alexfalkowski/nonnative/compare/v1.35.0...v1.35.1) (2021-04-04)
|
|
48
|
+
|
|
49
|
+
## [1.35.0](https://github.com/alexfalkowski/nonnative/compare/v1.34.0...v1.35.0) (2021-04-03)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### Features
|
|
53
|
+
|
|
54
|
+
* **deps:** udate to latest ([#69](https://github.com/alexfalkowski/nonnative/issues/69)) ([8989b5d](https://github.com/alexfalkowski/nonnative/commit/8989b5dd960cc7064ed196545625c9ef8b9ee280))
|
|
55
|
+
* update ruby to version 2.7.2 [ci skip] ([90d3cb7](https://github.com/alexfalkowski/nonnative/commit/90d3cb7b24d2c4a70dd8e4fad809f008c849b34b))
|
|
56
|
+
|
|
57
|
+
## [1.34.0](https://github.com/alexfalkowski/nonnative/compare/v1.33.0...v1.34.0) (2020-10-30)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### Features
|
|
61
|
+
|
|
62
|
+
* bump to version 1.34.0 ([882f3db](https://github.com/alexfalkowski/nonnative/commit/882f3db513a8ffae7661dd000d50a380c2c004d0))
|
|
63
|
+
|
|
5
64
|
## [1.33.0](https://github.com/alexfalkowski/nonnative/compare/v1.32.0...v1.33.0) (2020-10-30)
|
|
6
65
|
|
|
7
66
|
|
data/Gemfile.lock
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
nonnative (1.
|
|
4
|
+
nonnative (1.40.0)
|
|
5
5
|
concurrent-ruby (~> 1.0, >= 1.0.5)
|
|
6
|
-
cucumber (>=
|
|
6
|
+
cucumber (>= 6, < 7)
|
|
7
7
|
grpc (>= 1, < 2)
|
|
8
|
+
grpc-tools (>= 1, < 2)
|
|
8
9
|
puma (~> 5.0)
|
|
9
10
|
rest-client (~> 2.1)
|
|
10
11
|
rspec-benchmark (~> 0.6.0)
|
|
@@ -14,99 +15,113 @@ PATH
|
|
|
14
15
|
GEM
|
|
15
16
|
remote: https://rubygems.org/
|
|
16
17
|
specs:
|
|
17
|
-
activesupport (6.
|
|
18
|
+
activesupport (6.1.3.1)
|
|
18
19
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
19
|
-
i18n (>=
|
|
20
|
-
minitest (
|
|
21
|
-
tzinfo (~>
|
|
22
|
-
zeitwerk (~> 2.
|
|
23
|
-
ast (2.4.
|
|
20
|
+
i18n (>= 1.6, < 2)
|
|
21
|
+
minitest (>= 5.1)
|
|
22
|
+
tzinfo (~> 2.0)
|
|
23
|
+
zeitwerk (~> 2.3)
|
|
24
|
+
ast (2.4.2)
|
|
25
|
+
backport (1.1.2)
|
|
26
|
+
benchmark (0.1.1)
|
|
24
27
|
benchmark-malloc (0.2.0)
|
|
25
28
|
benchmark-perf (0.6.0)
|
|
26
29
|
benchmark-trend (0.4.0)
|
|
27
30
|
builder (3.2.4)
|
|
28
|
-
concurrent-ruby (1.1.
|
|
29
|
-
cucumber (
|
|
31
|
+
concurrent-ruby (1.1.8)
|
|
32
|
+
cucumber (6.0.0)
|
|
30
33
|
builder (~> 3.2, >= 3.2.4)
|
|
31
|
-
cucumber-core (~>
|
|
32
|
-
cucumber-create-meta (~>
|
|
33
|
-
cucumber-cucumber-expressions (~>
|
|
34
|
-
cucumber-gherkin (~>
|
|
35
|
-
cucumber-html-formatter (~>
|
|
36
|
-
cucumber-messages (~>
|
|
37
|
-
cucumber-wire (~>
|
|
34
|
+
cucumber-core (~> 9.0, >= 9.0.0)
|
|
35
|
+
cucumber-create-meta (~> 4.0, >= 4.0.0)
|
|
36
|
+
cucumber-cucumber-expressions (~> 12.1, >= 12.1.1)
|
|
37
|
+
cucumber-gherkin (~> 18.1, >= 18.1.0)
|
|
38
|
+
cucumber-html-formatter (~> 13.0, >= 13.0.0)
|
|
39
|
+
cucumber-messages (~> 15.0, >= 15.0.0)
|
|
40
|
+
cucumber-wire (~> 5.0, >= 5.0.0)
|
|
38
41
|
diff-lcs (~> 1.4, >= 1.4.4)
|
|
42
|
+
mime-types (~> 3.3, >= 3.3.1)
|
|
39
43
|
multi_test (~> 0.1, >= 0.1.2)
|
|
40
|
-
sys-uname (~> 1.2, >= 1.2.
|
|
41
|
-
cucumber-core (
|
|
42
|
-
cucumber-gherkin (~>
|
|
43
|
-
cucumber-messages (~>
|
|
44
|
-
cucumber-tag-expressions (~>
|
|
45
|
-
cucumber-create-meta (
|
|
46
|
-
cucumber-messages (~>
|
|
47
|
-
sys-uname (~> 1.2, >= 1.2.
|
|
48
|
-
cucumber-cucumber-expressions (
|
|
49
|
-
cucumber-gherkin (
|
|
50
|
-
cucumber-messages (~>
|
|
51
|
-
cucumber-html-formatter (
|
|
52
|
-
cucumber-messages (~>
|
|
53
|
-
cucumber-messages (
|
|
44
|
+
sys-uname (~> 1.2, >= 1.2.2)
|
|
45
|
+
cucumber-core (9.0.0)
|
|
46
|
+
cucumber-gherkin (~> 18.1, >= 18.1.0)
|
|
47
|
+
cucumber-messages (~> 15.0, >= 15.0.0)
|
|
48
|
+
cucumber-tag-expressions (~> 3.0, >= 3.0.1)
|
|
49
|
+
cucumber-create-meta (4.0.0)
|
|
50
|
+
cucumber-messages (~> 15.0, >= 15.0.0)
|
|
51
|
+
sys-uname (~> 1.2, >= 1.2.2)
|
|
52
|
+
cucumber-cucumber-expressions (12.1.1)
|
|
53
|
+
cucumber-gherkin (18.1.1)
|
|
54
|
+
cucumber-messages (~> 15.0, >= 15.0.0)
|
|
55
|
+
cucumber-html-formatter (13.0.0)
|
|
56
|
+
cucumber-messages (~> 15.0, >= 15.0.0)
|
|
57
|
+
cucumber-messages (15.0.0)
|
|
54
58
|
protobuf-cucumber (~> 3.10, >= 3.10.8)
|
|
55
|
-
cucumber-tag-expressions (
|
|
56
|
-
cucumber-wire (
|
|
57
|
-
cucumber-core (~>
|
|
58
|
-
cucumber-cucumber-expressions (~>
|
|
59
|
-
cucumber-messages (~>
|
|
59
|
+
cucumber-tag-expressions (3.0.1)
|
|
60
|
+
cucumber-wire (5.0.0)
|
|
61
|
+
cucumber-core (~> 9.0, >= 9.0.0)
|
|
62
|
+
cucumber-cucumber-expressions (~> 12.1, >= 12.1.1)
|
|
63
|
+
cucumber-messages (~> 15.0, >= 15.0.0)
|
|
60
64
|
diff-lcs (1.4.4)
|
|
61
|
-
docile (1.3.
|
|
65
|
+
docile (1.3.5)
|
|
62
66
|
domain_name (0.5.20190701)
|
|
63
67
|
unf (>= 0.0.5, < 1.0.0)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
e2mmap (0.1.0)
|
|
69
|
+
ffi (1.15.0)
|
|
70
|
+
google-protobuf (3.15.8)
|
|
71
|
+
googleapis-common-protos-types (1.0.6)
|
|
72
|
+
google-protobuf (~> 3.14)
|
|
73
|
+
grpc (1.37.0)
|
|
74
|
+
google-protobuf (~> 3.15)
|
|
70
75
|
googleapis-common-protos-types (~> 1.0)
|
|
71
|
-
grpc-tools (1.
|
|
76
|
+
grpc-tools (1.37.0)
|
|
72
77
|
http-accept (1.7.0)
|
|
73
78
|
http-cookie (1.0.3)
|
|
74
79
|
domain_name (~> 0.5)
|
|
75
|
-
i18n (1.8.
|
|
80
|
+
i18n (1.8.10)
|
|
76
81
|
concurrent-ruby (~> 1.0)
|
|
77
|
-
|
|
82
|
+
jaro_winkler (1.5.4)
|
|
83
|
+
kramdown (2.3.1)
|
|
84
|
+
rexml
|
|
85
|
+
kramdown-parser-gfm (1.1.0)
|
|
86
|
+
kramdown (~> 2.0)
|
|
78
87
|
middleware (0.1.0)
|
|
79
88
|
mime-types (3.3.1)
|
|
80
89
|
mime-types-data (~> 3.2015)
|
|
81
|
-
mime-types-data (3.
|
|
82
|
-
|
|
90
|
+
mime-types-data (3.2021.0225)
|
|
91
|
+
mini_portile2 (2.5.0)
|
|
92
|
+
minitest (5.14.4)
|
|
83
93
|
multi_test (0.1.2)
|
|
84
94
|
mustermann (1.1.1)
|
|
85
95
|
ruby2_keywords (~> 0.0.1)
|
|
86
96
|
netrc (0.11.0)
|
|
87
|
-
nio4r (2.5.
|
|
88
|
-
|
|
89
|
-
|
|
97
|
+
nio4r (2.5.7)
|
|
98
|
+
nokogiri (1.11.3)
|
|
99
|
+
mini_portile2 (~> 2.5.0)
|
|
100
|
+
racc (~> 1.4)
|
|
101
|
+
parallel (1.20.1)
|
|
102
|
+
parser (3.0.1.0)
|
|
90
103
|
ast (~> 2.4.1)
|
|
91
104
|
protobuf-cucumber (3.10.8)
|
|
92
105
|
activesupport (>= 3.2)
|
|
93
106
|
middleware
|
|
94
107
|
thor
|
|
95
108
|
thread_safe
|
|
96
|
-
puma (5.
|
|
109
|
+
puma (5.2.2)
|
|
97
110
|
nio4r (~> 2.0)
|
|
111
|
+
racc (1.5.2)
|
|
98
112
|
rack (2.2.3)
|
|
99
113
|
rack-protection (2.1.0)
|
|
100
114
|
rack
|
|
101
115
|
rainbow (3.0.0)
|
|
102
|
-
|
|
103
|
-
regexp_parser (1.8.2)
|
|
116
|
+
regexp_parser (2.1.1)
|
|
104
117
|
rest-client (2.1.0)
|
|
105
118
|
http-accept (>= 1.7.0, < 2.0)
|
|
106
119
|
http-cookie (>= 1.0.2, < 2.0)
|
|
107
120
|
mime-types (>= 1.16, < 4.0)
|
|
108
121
|
netrc (~> 0.8)
|
|
109
|
-
|
|
122
|
+
reverse_markdown (2.0.0)
|
|
123
|
+
nokogiri
|
|
124
|
+
rexml (3.2.5)
|
|
110
125
|
rspec (3.10.0)
|
|
111
126
|
rspec-core (~> 3.10.0)
|
|
112
127
|
rspec-expectations (~> 3.10.0)
|
|
@@ -116,61 +131,76 @@ GEM
|
|
|
116
131
|
benchmark-perf (~> 0.6)
|
|
117
132
|
benchmark-trend (~> 0.4)
|
|
118
133
|
rspec (>= 3.0)
|
|
119
|
-
rspec-core (3.10.
|
|
134
|
+
rspec-core (3.10.1)
|
|
120
135
|
rspec-support (~> 3.10.0)
|
|
121
|
-
rspec-expectations (3.10.
|
|
136
|
+
rspec-expectations (3.10.1)
|
|
122
137
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
123
138
|
rspec-support (~> 3.10.0)
|
|
124
|
-
rspec-mocks (3.10.
|
|
139
|
+
rspec-mocks (3.10.2)
|
|
125
140
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
126
141
|
rspec-support (~> 3.10.0)
|
|
127
|
-
rspec-support (3.10.
|
|
128
|
-
rubocop (1.
|
|
142
|
+
rspec-support (3.10.2)
|
|
143
|
+
rubocop (1.13.0)
|
|
129
144
|
parallel (~> 1.10)
|
|
130
|
-
parser (>=
|
|
145
|
+
parser (>= 3.0.0.0)
|
|
131
146
|
rainbow (>= 2.2.2, < 4.0)
|
|
132
|
-
regexp_parser (>= 1.8)
|
|
147
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
133
148
|
rexml
|
|
134
|
-
rubocop-ast (>=
|
|
149
|
+
rubocop-ast (>= 1.2.0, < 2.0)
|
|
135
150
|
ruby-progressbar (~> 1.7)
|
|
136
|
-
unicode-display_width (>= 1.4.0, <
|
|
137
|
-
rubocop-ast (1.
|
|
151
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
152
|
+
rubocop-ast (1.4.1)
|
|
138
153
|
parser (>= 2.7.1.5)
|
|
139
|
-
ruby-progressbar (1.
|
|
140
|
-
ruby2_keywords (0.0.
|
|
141
|
-
simplecov (0.
|
|
154
|
+
ruby-progressbar (1.11.0)
|
|
155
|
+
ruby2_keywords (0.0.4)
|
|
156
|
+
simplecov (0.21.2)
|
|
142
157
|
docile (~> 1.1)
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
simplecov-html (0.
|
|
158
|
+
simplecov-html (~> 0.11)
|
|
159
|
+
simplecov_json_formatter (~> 0.1)
|
|
160
|
+
simplecov-html (0.12.3)
|
|
161
|
+
simplecov_json_formatter (0.1.2)
|
|
146
162
|
sinatra (2.1.0)
|
|
147
163
|
mustermann (~> 1.0)
|
|
148
164
|
rack (~> 2.2)
|
|
149
165
|
rack-protection (= 2.1.0)
|
|
150
166
|
tilt (~> 2.0)
|
|
167
|
+
solargraph (0.40.4)
|
|
168
|
+
backport (~> 1.1)
|
|
169
|
+
benchmark
|
|
170
|
+
bundler (>= 1.17.2)
|
|
171
|
+
e2mmap
|
|
172
|
+
jaro_winkler (~> 1.5)
|
|
173
|
+
kramdown (~> 2.3)
|
|
174
|
+
kramdown-parser-gfm (~> 1.1)
|
|
175
|
+
parser (~> 3.0)
|
|
176
|
+
reverse_markdown (>= 1.0.5, < 3)
|
|
177
|
+
rubocop (>= 0.52)
|
|
178
|
+
thor (~> 1.0)
|
|
179
|
+
tilt (~> 2.0)
|
|
180
|
+
yard (~> 0.9, >= 0.9.24)
|
|
151
181
|
sys-uname (1.2.2)
|
|
152
182
|
ffi (~> 1.1)
|
|
153
183
|
thor (1.0.1)
|
|
154
184
|
thread_safe (0.3.6)
|
|
155
185
|
tilt (2.0.10)
|
|
156
|
-
tzinfo (
|
|
157
|
-
|
|
186
|
+
tzinfo (2.0.4)
|
|
187
|
+
concurrent-ruby (~> 1.0)
|
|
158
188
|
unf (0.1.4)
|
|
159
189
|
unf_ext
|
|
160
190
|
unf_ext (0.0.7.7)
|
|
161
|
-
unicode-display_width (
|
|
162
|
-
|
|
191
|
+
unicode-display_width (2.0.0)
|
|
192
|
+
yard (0.9.26)
|
|
193
|
+
zeitwerk (2.4.2)
|
|
163
194
|
|
|
164
195
|
PLATFORMS
|
|
165
196
|
ruby
|
|
166
197
|
|
|
167
198
|
DEPENDENCIES
|
|
168
199
|
bundler (~> 2.1, >= 2.1.4)
|
|
169
|
-
grpc-tools (>= 1, < 2)
|
|
170
200
|
nonnative!
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
201
|
+
rubocop (~> 1.12)
|
|
202
|
+
simplecov (~> 0.21.2)
|
|
203
|
+
solargraph (~> 0.40.4)
|
|
174
204
|
|
|
175
205
|
BUNDLED WITH
|
|
176
206
|
2.1.4
|
data/Makefile
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
.PHONY: features
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
dep:
|
|
4
4
|
bin/setup
|
|
5
5
|
|
|
6
|
-
outdated
|
|
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
|
-
|
|
12
|
+
lint:
|
|
13
13
|
bundle exec rubocop
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
fix-lint:
|
|
16
16
|
bundle exec rubocop -A
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
clean-logs:
|
|
19
19
|
rm -rf features/logs/*.log
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
clean-reports:
|
|
22
22
|
rm -rf reports
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
clean-coverage:
|
|
25
25
|
rm -rf coverage
|
|
26
26
|
|
|
27
|
-
clean:
|
|
27
|
+
clean: clean-logs clean-reports clean-coverage
|
data/README.md
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
[](https://circleci.com/gh/alexfalkowski/nonnative)
|
|
2
|
-
[](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 -
|
|
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
|
|
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
|
|
@@ -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
|
-
|
|
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
|
|
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
|
|
87
|
+
mutex.synchronize do
|
|
88
|
+
@state = state
|
|
89
|
+
close_connections
|
|
90
|
+
end
|
|
72
91
|
end
|
|
73
92
|
|
|
74
93
|
def read_state
|
data/lib/nonnative/go_command.rb
CHANGED
|
@@ -2,30 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
module Nonnative
|
|
4
4
|
class GoCommand
|
|
5
|
-
def initialize(
|
|
6
|
-
@
|
|
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
|
-
"#{
|
|
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 :
|
|
17
|
+
attr_reader :exec, :output
|
|
24
18
|
|
|
25
19
|
def flags(cmd, params)
|
|
26
|
-
m = File.basename(
|
|
20
|
+
m = File.basename(exec, File.extname(exec))
|
|
27
21
|
p = params.gsub(/\W/, '')
|
|
28
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
18
|
+
pair.new(proxy)
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
end
|
data/lib/nonnative/version.rb
CHANGED
data/nonnative.gemspec
CHANGED
|
@@ -24,8 +24,9 @@ Gem::Specification.new do |spec|
|
|
|
24
24
|
spec.required_ruby_version = ['>= 2.7.0', '< 2.8.0']
|
|
25
25
|
|
|
26
26
|
spec.add_dependency 'concurrent-ruby', '~> 1.0', '>= 1.0.5'
|
|
27
|
-
spec.add_dependency 'cucumber', ['>=
|
|
27
|
+
spec.add_dependency 'cucumber', ['>= 6', '< 7']
|
|
28
28
|
spec.add_dependency 'grpc', ['>= 1', '< 2']
|
|
29
|
+
spec.add_dependency 'grpc-tools', ['>= 1', '< 2']
|
|
29
30
|
spec.add_dependency 'puma', '~> 5.0'
|
|
30
31
|
spec.add_dependency 'rest-client', '~> 2.1'
|
|
31
32
|
spec.add_dependency 'rspec-benchmark', '~> 0.6.0'
|
|
@@ -33,8 +34,7 @@ Gem::Specification.new do |spec|
|
|
|
33
34
|
spec.add_dependency 'sinatra', '~> 2.0', '>= 2.0.8.1'
|
|
34
35
|
|
|
35
36
|
spec.add_development_dependency 'bundler', '~> 2.1', '>= 2.1.4'
|
|
36
|
-
spec.add_development_dependency '
|
|
37
|
-
spec.add_development_dependency '
|
|
38
|
-
spec.add_development_dependency '
|
|
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.
|
|
4
|
+
version: 1.40.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:
|
|
11
|
+
date: 2021-04-25 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: '6'
|
|
40
40
|
- - "<"
|
|
41
41
|
- !ruby/object:Gem::Version
|
|
42
|
-
version: '
|
|
42
|
+
version: '7'
|
|
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: '6'
|
|
50
50
|
- - "<"
|
|
51
51
|
- !ruby/object:Gem::Version
|
|
52
|
-
version: '
|
|
52
|
+
version: '7'
|
|
53
53
|
- !ruby/object:Gem::Dependency
|
|
54
54
|
name: grpc
|
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -70,6 +70,26 @@ dependencies:
|
|
|
70
70
|
- - "<"
|
|
71
71
|
- !ruby/object:Gem::Version
|
|
72
72
|
version: '2'
|
|
73
|
+
- !ruby/object:Gem::Dependency
|
|
74
|
+
name: grpc-tools
|
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: '1'
|
|
80
|
+
- - "<"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '2'
|
|
83
|
+
type: :runtime
|
|
84
|
+
prerelease: false
|
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '1'
|
|
90
|
+
- - "<"
|
|
91
|
+
- !ruby/object:Gem::Version
|
|
92
|
+
version: '2'
|
|
73
93
|
- !ruby/object:Gem::Dependency
|
|
74
94
|
name: puma
|
|
75
95
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -173,73 +193,47 @@ dependencies:
|
|
|
173
193
|
- !ruby/object:Gem::Version
|
|
174
194
|
version: 2.1.4
|
|
175
195
|
- !ruby/object:Gem::Dependency
|
|
176
|
-
name:
|
|
177
|
-
requirement: !ruby/object:Gem::Requirement
|
|
178
|
-
requirements:
|
|
179
|
-
- - ">="
|
|
180
|
-
- !ruby/object:Gem::Version
|
|
181
|
-
version: '1'
|
|
182
|
-
- - "<"
|
|
183
|
-
- !ruby/object:Gem::Version
|
|
184
|
-
version: '2'
|
|
185
|
-
type: :development
|
|
186
|
-
prerelease: false
|
|
187
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
188
|
-
requirements:
|
|
189
|
-
- - ">="
|
|
190
|
-
- !ruby/object:Gem::Version
|
|
191
|
-
version: '1'
|
|
192
|
-
- - "<"
|
|
193
|
-
- !ruby/object:Gem::Version
|
|
194
|
-
version: '2'
|
|
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: '
|
|
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: '
|
|
212
|
-
- - ">="
|
|
213
|
-
- !ruby/object:Gem::Version
|
|
214
|
-
version: 13.0.1
|
|
208
|
+
version: '1.12'
|
|
215
209
|
- !ruby/object:Gem::Dependency
|
|
216
|
-
name:
|
|
210
|
+
name: simplecov
|
|
217
211
|
requirement: !ruby/object:Gem::Requirement
|
|
218
212
|
requirements:
|
|
219
213
|
- - "~>"
|
|
220
214
|
- !ruby/object:Gem::Version
|
|
221
|
-
version:
|
|
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:
|
|
222
|
+
version: 0.21.2
|
|
229
223
|
- !ruby/object:Gem::Dependency
|
|
230
|
-
name:
|
|
224
|
+
name: solargraph
|
|
231
225
|
requirement: !ruby/object:Gem::Requirement
|
|
232
226
|
requirements:
|
|
233
227
|
- - "~>"
|
|
234
228
|
- !ruby/object:Gem::Version
|
|
235
|
-
version: 0.
|
|
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.
|
|
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
|
|
@@ -295,7 +289,6 @@ files:
|
|
|
295
289
|
- lib/nonnative/timeout.rb
|
|
296
290
|
- lib/nonnative/version.rb
|
|
297
291
|
- nonnative.gemspec
|
|
298
|
-
- sonar-project.properties
|
|
299
292
|
homepage: https://github.com/alexfalkowski/nonnative
|
|
300
293
|
licenses:
|
|
301
294
|
- Unlicense
|
|
@@ -318,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
318
311
|
- !ruby/object:Gem::Version
|
|
319
312
|
version: '0'
|
|
320
313
|
requirements: []
|
|
321
|
-
rubygems_version: 3.1.
|
|
314
|
+
rubygems_version: 3.1.4
|
|
322
315
|
signing_key:
|
|
323
316
|
specification_version: 4
|
|
324
317
|
summary: Allows you to keep using the power of ruby to test other systems
|
data/sonar-project.properties
DELETED