mather-rb 0.0.4 → 0.0.7
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/{exe → cmd/mather-rb-server}/mather-rb-server +6 -5
- data/src/lib/mather.rb +2 -0
- data/src/lib/mather_test.rb +34 -0
- data/src/{svc/proto → proto/generated}/mather_pb.rb +0 -0
- data/src/{svc/proto → proto/generated}/mather_services_pb.rb +0 -0
- data/src/{svc/proto → proto}/mather.proto +0 -0
- data/src/svc/mather.rb +25 -21
- metadata +51 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83304e6d64ac58c74da248c86e088a5d1e8616dc804a8b5a32923d9f6a3414f3
|
4
|
+
data.tar.gz: e3aede09a1fec47cc1a32e549558b4ddaa40f4b5bf6861e4f445d676b93d8c38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59fd8e801162dbfa11f4628c652d0375707267074f3842abc0a9fd5767ed1e4caeabd126fc13edb8e8b229a79488aebe5c40839aea24dc308d77d2af7a4f6f43
|
7
|
+
data.tar.gz: a39eea8deb22f51a0ea8f74aa30ac8ea4d880523b62082ed0ab3c51f93413a9e4ff8a76076226b93882eab3d9b1806068307a1854d118f8665dcb139add71f0a
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
this_dir = File.expand_path(File.dirname(__FILE__))
|
3
|
-
lib_dir = File.join(this_dir, '..', 'src', 'svc')
|
3
|
+
lib_dir = File.join(this_dir, '..', '..', 'src', 'svc')
|
4
4
|
$LOAD_PATH.unshift(lib_dir)
|
5
5
|
|
6
6
|
require 'rubygems'
|
@@ -8,6 +8,8 @@ require 'bundler/setup'
|
|
8
8
|
require 'grpc'
|
9
9
|
require 'mather'
|
10
10
|
require 'commander'
|
11
|
+
require 'ougai'
|
12
|
+
LOG = Ougai::Logger.new(STDOUT) if !defined?(LOG)
|
11
13
|
|
12
14
|
class MatherServer
|
13
15
|
include Commander::Methods
|
@@ -15,13 +17,12 @@ class MatherServer
|
|
15
17
|
def run
|
16
18
|
program :name, 'Mather Server (in Ruby)'
|
17
19
|
program :version, '1.0.0'
|
18
|
-
program :description,
|
19
|
-
'A simple math gRPC microservice, for the purpose of learning and evaluating Ruby and gRPC.'
|
20
|
+
program :description, 'Simple Ruby gRPC microservice that does math.'
|
20
21
|
|
21
22
|
command :start do |c|
|
22
23
|
c.syntax = 'mather-rb-server start'
|
23
24
|
c.description = 'Starts the server'
|
24
|
-
c.option '--port PORT', String, "Server's port (
|
25
|
+
c.option '--port PORT', String, "Server's port (default \":30000\")"
|
25
26
|
|
26
27
|
c.action do |args, options|
|
27
28
|
port = options.port || ':30000'
|
@@ -30,7 +31,7 @@ class MatherServer
|
|
30
31
|
s.add_http2_port("0.0.0.0#{port}", :this_port_is_insecure)
|
31
32
|
s.handle(MatherService)
|
32
33
|
|
33
|
-
|
34
|
+
LOG.info "Server started on port #{port}"
|
34
35
|
s.run_till_terminated_or_interrupted([1, 'int', 'SIGQUIT'])
|
35
36
|
end
|
36
37
|
end
|
data/src/lib/mather.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require_relative 'mather'
|
3
|
+
|
4
|
+
add_results = [
|
5
|
+
[0, 0, 0],
|
6
|
+
[0, 1, 1],
|
7
|
+
[1, 0, 1],
|
8
|
+
[1, 1, 2],
|
9
|
+
[-1, 1, 0],
|
10
|
+
[1, -1, 0],
|
11
|
+
[-1, -1, -2]
|
12
|
+
]
|
13
|
+
|
14
|
+
subtract_results = [
|
15
|
+
[0, 0, 0],
|
16
|
+
[1, 0, -1],
|
17
|
+
[0, 1, 1],
|
18
|
+
[-1, 0, 1],
|
19
|
+
[-1, -1, 0],
|
20
|
+
[1, -1, -2]
|
21
|
+
]
|
22
|
+
|
23
|
+
describe 'Mather' do
|
24
|
+
it 'Adds' do
|
25
|
+
matherLib = MatherLib.new
|
26
|
+
add_results.each { |r| _(matherLib.add(r[0], r[1])).must_equal(r[2]) }
|
27
|
+
end
|
28
|
+
it 'Subtracts' do
|
29
|
+
matherLib = MatherLib.new
|
30
|
+
subtract_results.each do |r|
|
31
|
+
_(matherLib.subtract(r[0], r[1])).must_equal(r[2])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
data/src/svc/mather.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
this_dir = File.expand_path(File.dirname(__FILE__))
|
2
|
-
proto_dir = File.join(this_dir, 'proto')
|
2
|
+
proto_dir = File.join(this_dir, '..', 'proto', 'generated')
|
3
3
|
lib_dir = File.join(this_dir, '..', 'lib')
|
4
4
|
$LOAD_PATH.unshift(proto_dir)
|
5
5
|
$LOAD_PATH.unshift(lib_dir)
|
@@ -7,45 +7,49 @@ $LOAD_PATH.unshift(lib_dir)
|
|
7
7
|
require 'mather_services_pb'
|
8
8
|
require 'grpc'
|
9
9
|
require 'mather'
|
10
|
+
require 'ougai'
|
11
|
+
LOG = Ougai::Logger.new(STDOUT) if !defined?(LOG)
|
10
12
|
|
11
13
|
class MatherService < Mather::Math::Service
|
14
|
+
# add adds two numbers
|
12
15
|
def add(req, _)
|
16
|
+
# Validate input
|
13
17
|
if req.First == 0
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
)
|
18
|
+
msg = 'Could not add, `First` has not been provided'
|
19
|
+
LOG.error msg
|
20
|
+
raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, msg)
|
18
21
|
end
|
19
|
-
|
20
22
|
if req.Second == 0
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
)
|
23
|
+
msg = 'Could not add, `Second` has not been provided'
|
24
|
+
LOG.error msg
|
25
|
+
raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, msg)
|
25
26
|
end
|
26
27
|
|
27
|
-
|
28
|
+
# Log progress
|
29
|
+
LOG.info "Adding #{req.First} to #{req.Second}"
|
28
30
|
|
31
|
+
# Return added numbers
|
29
32
|
Mather::MathAddReply.new(Result: MatherLib.new.add(req.First, req.Second))
|
30
33
|
end
|
31
34
|
|
35
|
+
# subtract subtracts two numbers
|
32
36
|
def subtract(req, _)
|
37
|
+
# Validate input
|
33
38
|
if req.First == 0
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
)
|
39
|
+
msg = 'Could not subtract, `First` has not been provided'
|
40
|
+
LOG.error msg
|
41
|
+
raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, msg)
|
38
42
|
end
|
39
|
-
|
40
43
|
if req.Second == 0
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
)
|
44
|
+
msg = 'Could not subtract, `Second` has not been provided'
|
45
|
+
LOG.error msg
|
46
|
+
raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, msg)
|
45
47
|
end
|
46
48
|
|
47
|
-
|
49
|
+
# Log progress
|
50
|
+
LOG.info "Subtracting #{req.First} from #{req.Second}"
|
48
51
|
|
52
|
+
# Return subtracted numbers
|
49
53
|
Mather::MathSubtractReply.new(
|
50
54
|
Result: MatherLib.new.subtract(req.First, req.Second)
|
51
55
|
)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mather-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Pojtinger
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: cmd/mather-rb-server
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grpc
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: ougai
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.8'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.8'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +80,20 @@ dependencies:
|
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rerun
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.13.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.13.0
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: grpc-tools
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +136,20 @@ dependencies:
|
|
108
136
|
- - "~>"
|
109
137
|
- !ruby/object:Gem::Version
|
110
138
|
version: '1.0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: minitest
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '5.13'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '5.13'
|
111
153
|
description:
|
112
154
|
email:
|
113
155
|
- felix@pojtinger.com
|
@@ -116,12 +158,13 @@ executables:
|
|
116
158
|
extensions: []
|
117
159
|
extra_rdoc_files: []
|
118
160
|
files:
|
119
|
-
-
|
161
|
+
- cmd/mather-rb-server/mather-rb-server
|
120
162
|
- src/lib/mather.rb
|
163
|
+
- src/lib/mather_test.rb
|
164
|
+
- src/proto/generated/mather_pb.rb
|
165
|
+
- src/proto/generated/mather_services_pb.rb
|
166
|
+
- src/proto/mather.proto
|
121
167
|
- src/svc/mather.rb
|
122
|
-
- src/svc/proto/mather.proto
|
123
|
-
- src/svc/proto/mather_pb.rb
|
124
|
-
- src/svc/proto/mather_services_pb.rb
|
125
168
|
homepage: https://pojntfx.github.io/mather-rb/
|
126
169
|
licenses:
|
127
170
|
- AGPL-3.0
|
@@ -148,5 +191,5 @@ rubyforge_project:
|
|
148
191
|
rubygems_version: 2.7.8
|
149
192
|
signing_key:
|
150
193
|
specification_version: 4
|
151
|
-
summary: Simple gRPC microservice that does math.
|
194
|
+
summary: Simple Ruby gRPC microservice that does math.
|
152
195
|
test_files: []
|