nonnative 1.28.0 → 1.29.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/Gemfile.lock +1 -1
- data/README.md +36 -0
- data/lib/nonnative.rb +2 -0
- data/lib/nonnative/go_command.rb +40 -0
- data/lib/nonnative/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38e0bc3edd8186e46c09f6ced347428e59c84d2fd1fa3621b43d750e6869df24
|
4
|
+
data.tar.gz: bce006f5c6c8efec4ee05eed6e596a387362efd533d39a76730d4c418da3ca96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de9987b642545511b4b4357b1b74670ba2f82d15c13b6df442ea6ef8954ac1f4225d2fdd8029395a085491dace93f827bae0fa85256a6c7c8fed90681e252b72
|
7
|
+
data.tar.gz: aecc4f783443ecfc13dc8a93329e16fbf0677f09dff875bf878316e64c468e19abf3d93f08a8e246de56c33c2c103a14653b07b9048e1be2cde2458e69ca7752
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -373,3 +373,39 @@ server = Nonnative.pool.server_by_name(name)
|
|
373
373
|
server.proxy.close_all # To use close_all.
|
374
374
|
server.proxy.reset # To reset it back to a good state.
|
375
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'
|
@@ -40,6 +41,7 @@ require 'nonnative/delay_socket_pair'
|
|
40
41
|
require 'nonnative/invalid_data_socket_pair'
|
41
42
|
require 'nonnative/socket_pair_factory'
|
42
43
|
require 'nonnative/strategy'
|
44
|
+
require 'nonnative/go_command'
|
43
45
|
|
44
46
|
module Nonnative
|
45
47
|
class << self
|
@@ -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
|
data/lib/nonnative/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nonnative
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.29.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Falkowski
|
@@ -292,6 +292,7 @@ files:
|
|
292
292
|
- lib/nonnative/delay_socket_pair.rb
|
293
293
|
- lib/nonnative/error.rb
|
294
294
|
- lib/nonnative/fault_injection_proxy.rb
|
295
|
+
- lib/nonnative/go_command.rb
|
295
296
|
- lib/nonnative/grpc_server.rb
|
296
297
|
- lib/nonnative/http_client.rb
|
297
298
|
- lib/nonnative/http_server.rb
|