gapic-generator 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.yardopts +13 -0
- data/CHANGELOG.md +38 -0
- data/CODE_OF_CONDUCT.md +43 -0
- data/CONTRIBUTING.md +28 -0
- data/LICENSE +202 -0
- data/README.md +72 -0
- data/bin/gapic-generator +103 -0
- data/bin/protoc-gen-ruby_gapic +33 -0
- data/default-rubocop.yml +10 -0
- data/gem_templates/binary.erb +20 -0
- data/gem_templates/dockerfile.erb +39 -0
- data/gem_templates/entrypoint.erb +24 -0
- data/gem_templates/gapic_sh.erb +97 -0
- data/gem_templates/gemfile.erb +8 -0
- data/gem_templates/gemspec.erb +36 -0
- data/gem_templates/generator.erb +37 -0
- data/gem_templates/gitignore.erb +10 -0
- data/gem_templates/rakefile.erb +29 -0
- data/gem_templates/readme.erb +69 -0
- data/gem_templates/rubocop.erb +16 -0
- data/gem_templates/shared/_header.erb +4 -0
- data/gem_templates/shared/_license.erb +13 -0
- data/gem_templates/shared/_warning.erb +1 -0
- data/gem_templates/test_generator.erb +13 -0
- data/gem_templates/test_helper.erb +25 -0
- data/gem_templates/version.erb +10 -0
- data/lib/gapic/file_formatter.rb +62 -0
- data/lib/gapic/gem_builder.rb +98 -0
- data/lib/gapic/generator.rb +30 -0
- data/lib/gapic/generator/version.rb +21 -0
- data/lib/gapic/generators/base_generator.rb +91 -0
- data/lib/gapic/generators/default_generator.rb +101 -0
- data/lib/gapic/grpc_service_config/method_config.rb +49 -0
- data/lib/gapic/grpc_service_config/parser.rb +218 -0
- data/lib/gapic/grpc_service_config/parsing_error.rb +25 -0
- data/lib/gapic/grpc_service_config/retry_policy.rb +51 -0
- data/lib/gapic/grpc_service_config/service_config.rb +42 -0
- data/lib/gapic/path_template.rb +35 -0
- data/lib/gapic/path_template/parser.rb +83 -0
- data/lib/gapic/path_template/segment.rb +67 -0
- data/lib/gapic/resource_lookup.rb +91 -0
- data/lib/gapic/runner.rb +76 -0
- data/lib/gapic/schema.rb +17 -0
- data/lib/gapic/schema/api.rb +264 -0
- data/lib/gapic/schema/loader.rb +269 -0
- data/lib/gapic/schema/wrappers.rb +718 -0
- data/lib/google/api/annotations.pb.rb +39 -0
- data/lib/google/api/client.pb.rb +43 -0
- data/lib/google/api/field_behavior.pb.rb +51 -0
- data/lib/google/api/http.pb.rb +60 -0
- data/lib/google/api/resource.pb.rb +80 -0
- data/lib/google/longrunning/operations.pb.rb +115 -0
- data/lib/google/protobuf/any.pb.rb +40 -0
- data/lib/google/protobuf/compiler/plugin.pb.rb +72 -0
- data/lib/google/protobuf/descriptor.pb.rb +359 -0
- data/lib/google/protobuf/empty.pb.rb +36 -0
- data/lib/google/rpc/status.pb.rb +46 -0
- data/templates/default/gem/_version.erb +2 -0
- data/templates/default/gem/changelog.erb +3 -0
- data/templates/default/gem/gemfile.erb +4 -0
- data/templates/default/gem/gemspec.erb +37 -0
- data/templates/default/gem/gitignore.erb +18 -0
- data/templates/default/gem/license.erb +22 -0
- data/templates/default/gem/rakefile.erb +27 -0
- data/templates/default/gem/readme.erb +24 -0
- data/templates/default/gem/rubocop.erb +59 -0
- data/templates/default/gem/version.erb +6 -0
- data/templates/default/gem/yardopts.erb +12 -0
- data/templates/default/helpers/default_helper.rb +56 -0
- data/templates/default/helpers/filepath_helper.rb +38 -0
- data/templates/default/helpers/namespace_helper.rb +44 -0
- data/templates/default/helpers/presenter_helper.rb +24 -0
- data/templates/default/helpers/presenters/enum_presenter.rb +35 -0
- data/templates/default/helpers/presenters/enum_value_presenter.rb +33 -0
- data/templates/default/helpers/presenters/field_presenter.rb +146 -0
- data/templates/default/helpers/presenters/file_presenter.rb +53 -0
- data/templates/default/helpers/presenters/gem_presenter.rb +140 -0
- data/templates/default/helpers/presenters/message_presenter.rb +66 -0
- data/templates/default/helpers/presenters/method_presenter.rb +293 -0
- data/templates/default/helpers/presenters/package_presenter.rb +65 -0
- data/templates/default/helpers/presenters/resource_presenter.rb +92 -0
- data/templates/default/helpers/presenters/sample_presenter.rb +74 -0
- data/templates/default/helpers/presenters/service_presenter.rb +276 -0
- data/templates/default/layouts/_ruby.erb +20 -0
- data/templates/default/package.erb +6 -0
- data/templates/default/proto_docs/_enum.erb +13 -0
- data/templates/default/proto_docs/_message.erb +23 -0
- data/templates/default/proto_docs/_proto_file.erb +9 -0
- data/templates/default/proto_docs/proto_file.erb +6 -0
- data/templates/default/proto_docs/readme.erb +5 -0
- data/templates/default/service.erb +8 -0
- data/templates/default/service/client.erb +6 -0
- data/templates/default/service/client/_client.erb +137 -0
- data/templates/default/service/client/_config.erb +155 -0
- data/templates/default/service/client/_credentials.erb +21 -0
- data/templates/default/service/client/_helpers.erb +9 -0
- data/templates/default/service/client/_operations.erb +88 -0
- data/templates/default/service/client/_paths.erb +8 -0
- data/templates/default/service/client/_requires.erb +1 -0
- data/templates/default/service/client/_resource.erb +6 -0
- data/templates/default/service/client/_self_configure.erb +9 -0
- data/templates/default/service/client/_self_configure_defaults.erb +22 -0
- data/templates/default/service/client/_self_configure_retry_policy.erb +15 -0
- data/templates/default/service/client/method/_def.erb +21 -0
- data/templates/default/service/client/method/def/_options_defaults.erb +29 -0
- data/templates/default/service/client/method/def/_request.erb +6 -0
- data/templates/default/service/client/method/def/_request_normal.erb +4 -0
- data/templates/default/service/client/method/def/_request_streaming.erb +9 -0
- data/templates/default/service/client/method/def/_rescue.erb +1 -0
- data/templates/default/service/client/method/def/_response.erb +6 -0
- data/templates/default/service/client/method/def/_response_normal.erb +8 -0
- data/templates/default/service/client/method/def/_response_paged.erb +9 -0
- data/templates/default/service/client/method/docs/_error.erb +2 -0
- data/templates/default/service/client/method/docs/_request.erb +6 -0
- data/templates/default/service/client/method/docs/_request_field.erb +7 -0
- data/templates/default/service/client/method/docs/_request_normal.erb +20 -0
- data/templates/default/service/client/method/docs/_request_streaming.erb +5 -0
- data/templates/default/service/client/method/docs/_response.erb +6 -0
- data/templates/default/service/client/method/docs/_sample.erb +20 -0
- data/templates/default/service/client/method/docs/_sample_response.erb +24 -0
- data/templates/default/service/client/method/docs/_samples.erb +6 -0
- data/templates/default/service/client/method/docs/request_field/_arg.erb +10 -0
- data/templates/default/service/client/method/docs/request_field/_hash.erb +19 -0
- data/templates/default/service/client/method/docs/sample_response/_comment.erb +5 -0
- data/templates/default/service/client/method/docs/sample_response/_define.erb +2 -0
- data/templates/default/service/client/method/docs/sample_response/_loop.erb +12 -0
- data/templates/default/service/client/method/docs/sample_response/_print.erb +2 -0
- data/templates/default/service/client/method/docs/sample_response/_write_file.erb +2 -0
- data/templates/default/service/client/resource/_def.erb +6 -0
- data/templates/default/service/client/resource/_doc.erb +8 -0
- data/templates/default/service/client/resource/_multi.erb +28 -0
- data/templates/default/service/client/resource/_single.erb +11 -0
- data/templates/default/service/credentials.erb +6 -0
- data/templates/default/service/operations.erb +6 -0
- data/templates/default/service/paths.erb +6 -0
- data/templates/default/service/test/client.erb +24 -0
- data/templates/default/service/test/client_operations.erb +24 -0
- data/templates/default/service/test/method/_assert_response.erb +11 -0
- data/templates/default/service/test/method/_bidi.erb +100 -0
- data/templates/default/service/test/method/_client.erb +84 -0
- data/templates/default/service/test/method/_normal.erb +69 -0
- data/templates/default/service/test/method/_server.erb +85 -0
- data/templates/default/service/test/method/_setup.erb +21 -0
- data/templates/default/service/test/smoke.erb +12 -0
- data/templates/default/shared/_header.erb +4 -0
- data/templates/default/shared/_license.erb +21 -0
- data/templates/default/shared/_warning.erb +1 -0
- metadata +350 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
<%- assert_locals service -%>
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
<%= render partial: "shared/license" %>
|
5
|
+
require "simplecov"
|
6
|
+
require "minitest/autorun"
|
7
|
+
|
8
|
+
require "gapic/grpc/service_stub"
|
9
|
+
|
10
|
+
require "<%= service.proto_service_require %>"
|
11
|
+
require "<%= service.proto_services_require %>"
|
12
|
+
require "<%= service.service_require %>"
|
13
|
+
|
14
|
+
class <%= service.operations_name_full %>Test < Minitest::Test
|
15
|
+
<%= indent render(partial: "service/test/method/setup"), 2 %>
|
16
|
+
|
17
|
+
<% service.lro_service.methods.each do |method| %>
|
18
|
+
<%= indent render(partial: "service/test/method/#{method.kind}",
|
19
|
+
locals: { client_name_full: service.operations_name_full, method: method }), 2 %>
|
20
|
+
<% if method != service.lro_service.methods.last %>
|
21
|
+
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
<%- if method.paged? -%>
|
3
|
+
assert_kind_of Gapic::PagedEnumerable, response
|
4
|
+
assert_equal grpc_response, response.response
|
5
|
+
<%- elsif method.lro? %>
|
6
|
+
assert_kind_of Gapic::Operation, response
|
7
|
+
assert_equal grpc_response, response.grpc_op
|
8
|
+
<%- else -%>
|
9
|
+
assert_equal grpc_response, response
|
10
|
+
<%- end -%>
|
11
|
+
assert_equal grpc_operation, operation
|
@@ -0,0 +1,100 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
<%- full_client_name = defined?(client_name_full) ? client_name_full : method.service.client_name_full -%>
|
3
|
+
<%- fields = method.fields_with_first_oneof -%>
|
4
|
+
def test_<%= method.name %>
|
5
|
+
# Create GRPC objects.
|
6
|
+
grpc_response = <%= method.return_type %>.new
|
7
|
+
grpc_operation = GRPC::ActiveCall::Operation.new nil
|
8
|
+
grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
|
9
|
+
grpc_options = {}
|
10
|
+
|
11
|
+
# Create request parameters for a bidi streaming method.
|
12
|
+
<%- fields.each do |field| -%>
|
13
|
+
<%= field.name %> = <%= field.default_value %>
|
14
|
+
<%- end -%>
|
15
|
+
|
16
|
+
<%= method.name %>_client_stub = ClientStub.new [grpc_response].to_enum, grpc_operation do |name, request, options:|
|
17
|
+
assert_equal :<%= method.name %>, name
|
18
|
+
assert_kind_of Enumerable, request
|
19
|
+
refute_nil options
|
20
|
+
request
|
21
|
+
end
|
22
|
+
|
23
|
+
Gapic::ServiceStub.stub :new, <%= method.name %>_client_stub do
|
24
|
+
# Create client
|
25
|
+
client = <%= full_client_name %>.new do |config|
|
26
|
+
config.credentials = grpc_channel
|
27
|
+
end
|
28
|
+
|
29
|
+
# Use enumerable object with hash and protobuf object.
|
30
|
+
request_hash = { <%= fields.map(&:as_kwarg).join ", " %> }
|
31
|
+
request_proto = <%= method.request_type %>.new <%= fields.map(&:as_kwarg).join ", " %>
|
32
|
+
enum_input = [request_hash, request_proto].to_enum
|
33
|
+
client.<%= method.name %> enum_input do |response, operation|
|
34
|
+
assert_kind_of Enumerable, response
|
35
|
+
response.to_a.each do |r|
|
36
|
+
assert_kind_of <%= method.return_type %>, r
|
37
|
+
end
|
38
|
+
assert_equal grpc_operation, operation
|
39
|
+
end
|
40
|
+
|
41
|
+
# Use stream input object (from gapic-common).
|
42
|
+
request_hash = { <%= fields.map(&:as_kwarg).join ", " %> }
|
43
|
+
request_proto = <%= method.request_type %>.new <%= fields.map(&:as_kwarg).join ", " %>
|
44
|
+
stream_input = Gapic::StreamInput.new
|
45
|
+
client.<%= method.name %> stream_input do |response, operation|
|
46
|
+
assert_kind_of Enumerable, response
|
47
|
+
response.to_a.each do |r|
|
48
|
+
assert_kind_of <%= method.return_type %>, r
|
49
|
+
end
|
50
|
+
assert_equal grpc_operation, operation
|
51
|
+
end
|
52
|
+
stream_input << request_hash
|
53
|
+
stream_input << request_proto
|
54
|
+
stream_input.close
|
55
|
+
|
56
|
+
# Use enumerable object with hash and protobuf object with options.
|
57
|
+
request_hash = { <%= fields.map(&:as_kwarg).join ", " %> }
|
58
|
+
request_proto = <%= method.request_type %>.new <%= fields.map(&:as_kwarg).join ", " %>
|
59
|
+
enum_input = [request_hash, request_proto].to_enum
|
60
|
+
client.<%= method.name %> enum_input, grpc_options do |response, operation|
|
61
|
+
assert_kind_of Enumerable, response
|
62
|
+
response.to_a.each do |r|
|
63
|
+
assert_kind_of <%= method.return_type %>, r
|
64
|
+
end
|
65
|
+
assert_equal grpc_operation, operation
|
66
|
+
end
|
67
|
+
|
68
|
+
# Use stream input object (from gapic-common) with options.
|
69
|
+
request_hash = { <%= fields.map(&:as_kwarg).join ", " %> }
|
70
|
+
request_proto = <%= method.request_type %>.new <%= fields.map(&:as_kwarg).join ", " %>
|
71
|
+
stream_input = Gapic::StreamInput.new
|
72
|
+
client.<%= method.name %> stream_input, grpc_options do |response, operation|
|
73
|
+
assert_kind_of Enumerable, response
|
74
|
+
response.to_a.each do |r|
|
75
|
+
assert_kind_of <%= method.return_type %>, r
|
76
|
+
end
|
77
|
+
assert_equal grpc_operation, operation
|
78
|
+
end
|
79
|
+
stream_input << request_hash
|
80
|
+
stream_input << request_proto
|
81
|
+
stream_input.close
|
82
|
+
|
83
|
+
# Verify method calls
|
84
|
+
assert_equal 4, <%= method.name %>_client_stub.call_rpc_count
|
85
|
+
<%= method.name %>_client_stub.requests.each do |request|
|
86
|
+
request.to_a.each do |r|
|
87
|
+
assert_kind_of <%= method.request_type %>, r
|
88
|
+
<%- fields.each do |field| -%>
|
89
|
+
<%- if field.message? && field.repeated? -%>
|
90
|
+
assert_kind_of <%= field.type_name_full %>, request.<%= field.name %>.first
|
91
|
+
<%- elsif field.message? -%>
|
92
|
+
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), r.<%= field.name %>
|
93
|
+
<%- else -%>
|
94
|
+
assert_equal <%= field.default_value %>, r.<%= field.name %>
|
95
|
+
<%- end -%>
|
96
|
+
<%- end -%>
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
<%- full_client_name = defined?(client_name_full) ? client_name_full : method.service.client_name_full -%>
|
3
|
+
<%- fields = method.fields_with_first_oneof -%>
|
4
|
+
def test_<%= method.name %>
|
5
|
+
# Create GRPC objects.
|
6
|
+
grpc_response = <%= method.return_type %>.new
|
7
|
+
grpc_operation = GRPC::ActiveCall::Operation.new nil
|
8
|
+
grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
|
9
|
+
grpc_options = {}
|
10
|
+
|
11
|
+
# Create request parameters for a client streaming method.
|
12
|
+
<%- fields.each do |field| -%>
|
13
|
+
<%= field.name %> = <%= field.default_value %>
|
14
|
+
<%- end -%>
|
15
|
+
|
16
|
+
<%= method.name %>_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:|
|
17
|
+
assert_equal :<%= method.name %>, name
|
18
|
+
assert_kind_of Enumerable, request
|
19
|
+
refute_nil options
|
20
|
+
request
|
21
|
+
end
|
22
|
+
|
23
|
+
Gapic::ServiceStub.stub :new, <%= method.name %>_client_stub do
|
24
|
+
# Create client
|
25
|
+
client = <%= full_client_name %>.new do |config|
|
26
|
+
config.credentials = grpc_channel
|
27
|
+
end
|
28
|
+
|
29
|
+
# Use enumerable object with hash and protobuf object.
|
30
|
+
request_hash = { <%= fields.map(&:as_kwarg).join ", " %> }
|
31
|
+
request_proto = <%= method.request_type %>.new <%= fields.map(&:as_kwarg).join ", " %>
|
32
|
+
enum_input = [request_hash, request_proto].to_enum
|
33
|
+
client.<%= method.name %> enum_input do |response, operation|
|
34
|
+
<%= indent_tail render(partial: "service/test/method/assert_response", locals: { method: method }), 6 %>
|
35
|
+
end
|
36
|
+
|
37
|
+
# Use stream input object (from gapic-common).
|
38
|
+
request_hash = { <%= fields.map(&:as_kwarg).join ", " %> }
|
39
|
+
request_proto = <%= method.request_type %>.new <%= fields.map(&:as_kwarg).join ", " %>
|
40
|
+
stream_input = Gapic::StreamInput.new
|
41
|
+
client.<%= method.name %> stream_input do |response, operation|
|
42
|
+
<%= indent_tail render(partial: "service/test/method/assert_response", locals: { method: method }), 6 %>
|
43
|
+
end
|
44
|
+
stream_input << request_hash
|
45
|
+
stream_input << request_proto
|
46
|
+
stream_input.close
|
47
|
+
|
48
|
+
# Use enumerable object with hash and protobuf object with options.
|
49
|
+
request_hash = { <%= fields.map(&:as_kwarg).join ", " %> }
|
50
|
+
request_proto = <%= method.request_type %>.new <%= fields.map(&:as_kwarg).join ", " %>
|
51
|
+
enum_input = [request_hash, request_proto].to_enum
|
52
|
+
client.<%= method.name %> enum_input, grpc_options do |response, operation|
|
53
|
+
<%= indent_tail render(partial: "service/test/method/assert_response", locals: { method: method }), 6 %>
|
54
|
+
end
|
55
|
+
|
56
|
+
# Use stream input object (from gapic-common) with options.
|
57
|
+
request_hash = { <%= fields.map(&:as_kwarg).join ", " %> }
|
58
|
+
request_proto = <%= method.request_type %>.new <%= fields.map(&:as_kwarg).join ", " %>
|
59
|
+
stream_input = Gapic::StreamInput.new
|
60
|
+
client.<%= method.name %> stream_input, grpc_options do |response, operation|
|
61
|
+
<%= indent_tail render(partial: "service/test/method/assert_response", locals: { method: method }), 6 %>
|
62
|
+
end
|
63
|
+
stream_input << request_hash
|
64
|
+
stream_input << request_proto
|
65
|
+
stream_input.close
|
66
|
+
|
67
|
+
# Verify method calls
|
68
|
+
assert_equal 4, <%= method.name %>_client_stub.call_rpc_count
|
69
|
+
<%= method.name %>_client_stub.requests.each do |request|
|
70
|
+
request.to_a.each do |r|
|
71
|
+
assert_kind_of <%= method.request_type %>, r
|
72
|
+
<%- fields.each do |field| -%>
|
73
|
+
<%- if field.message? && field.repeated? -%>
|
74
|
+
assert_kind_of <%= field.type_name_full %>, request.<%= field.name %>.first
|
75
|
+
<%- elsif field.message? -%>
|
76
|
+
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), r.<%= field.name %>
|
77
|
+
<%- else -%>
|
78
|
+
assert_equal <%= field.default_value %>, r.<%= field.name %>
|
79
|
+
<%- end -%>
|
80
|
+
<%- end -%>
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
<%- full_client_name = defined?(client_name_full) ? client_name_full : method.service.client_name_full -%>
|
3
|
+
<%- fields = method.fields_with_first_oneof -%>
|
4
|
+
def test_<%= method.name %>
|
5
|
+
# Create GRPC objects.
|
6
|
+
grpc_response = <%= method.return_type %>.new
|
7
|
+
grpc_operation = GRPC::ActiveCall::Operation.new nil
|
8
|
+
grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
|
9
|
+
grpc_options = {}
|
10
|
+
|
11
|
+
# Create request parameters for a unary method.
|
12
|
+
<%- fields.each do |field| -%>
|
13
|
+
<%= field.name %> = <%= field.default_value %>
|
14
|
+
<%- end -%>
|
15
|
+
|
16
|
+
<%= method.name %>_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:|
|
17
|
+
assert_equal :<%= method.name %>, name
|
18
|
+
assert_kind_of <%= method.request_type %>, request
|
19
|
+
<%- fields.each do |field| -%>
|
20
|
+
<%- if field.message? && field.repeated? && !field.map? -%>
|
21
|
+
assert_kind_of <%= field.type_name_full %>, request.<%= field.name %>.first
|
22
|
+
<%- elsif field.map? -%>
|
23
|
+
assert_equal(<%= field.default_value %>, request.<%= field.name %>.to_h)
|
24
|
+
<%- elsif field.message? -%>
|
25
|
+
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), request.<%= field.name %>
|
26
|
+
<%- else -%>
|
27
|
+
assert_equal <%= field.default_value %>, request.<%= field.name %>
|
28
|
+
<%- end -%>
|
29
|
+
<%- end -%>
|
30
|
+
refute_nil options
|
31
|
+
end
|
32
|
+
|
33
|
+
Gapic::ServiceStub.stub :new, <%= method.name %>_client_stub do
|
34
|
+
# Create client
|
35
|
+
client = <%= full_client_name %>.new do |config|
|
36
|
+
config.credentials = grpc_channel
|
37
|
+
end
|
38
|
+
|
39
|
+
# Use hash object
|
40
|
+
client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }) do |response, operation|
|
41
|
+
<%= indent_tail render(partial: "service/test/method/assert_response", locals: { method: method }), 6 %>
|
42
|
+
end
|
43
|
+
|
44
|
+
<%- if fields.any? -%>
|
45
|
+
# Use named arguments
|
46
|
+
client.<%= method.name %> <%= fields.map(&:as_kwarg).join ", " %> do |response, operation|
|
47
|
+
<%= indent_tail render(partial: "service/test/method/assert_response", locals: { method: method }), 6 %>
|
48
|
+
end
|
49
|
+
|
50
|
+
<%- end -%>
|
51
|
+
# Use protobuf object
|
52
|
+
client.<%= method.name %> <%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>) do |response, operation|
|
53
|
+
<%= indent_tail render(partial: "service/test/method/assert_response", locals: { method: method }), 6 %>
|
54
|
+
end
|
55
|
+
|
56
|
+
# Use hash object with options
|
57
|
+
client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }, grpc_options) do |response, operation|
|
58
|
+
<%= indent_tail render(partial: "service/test/method/assert_response", locals: { method: method }), 6 %>
|
59
|
+
end
|
60
|
+
|
61
|
+
# Use protobuf object with options
|
62
|
+
client.<%= method.name %> <%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>), grpc_options do |response, operation|
|
63
|
+
<%= indent_tail render(partial: "service/test/method/assert_response", locals: { method: method }), 6 %>
|
64
|
+
end
|
65
|
+
|
66
|
+
# Verify method calls
|
67
|
+
assert_equal <%= fields.any? ? 5 : 4 %>, <%= method.name %>_client_stub.call_rpc_count
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
<%- full_client_name = defined?(client_name_full) ? client_name_full : method.service.client_name_full -%>
|
3
|
+
<%- fields = method.fields_with_first_oneof -%>
|
4
|
+
def test_<%= method.name %>
|
5
|
+
# Create GRPC objects.
|
6
|
+
grpc_response = <%= method.return_type %>.new
|
7
|
+
grpc_operation = GRPC::ActiveCall::Operation.new nil
|
8
|
+
grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
|
9
|
+
grpc_options = {}
|
10
|
+
|
11
|
+
# Create request parameters for a server streaming method.
|
12
|
+
<%- fields.each do |field| -%>
|
13
|
+
<%= field.name %> = <%= field.default_value %>
|
14
|
+
<%- end -%>
|
15
|
+
|
16
|
+
<%= method.name %>_client_stub = ClientStub.new [grpc_response].to_enum, grpc_operation do |name, request, options:|
|
17
|
+
assert_equal :<%= method.name %>, name
|
18
|
+
assert_kind_of <%= method.request_type %>, request
|
19
|
+
<%- fields.each do |field| -%>
|
20
|
+
<%- if field.message? && field.repeated? -%>
|
21
|
+
assert_kind_of <%= field.type_name_full %>, request.<%= field.name %>.first
|
22
|
+
<%- elsif field.message? -%>
|
23
|
+
assert_equal Gapic::Protobuf.coerce(<%= field.default_value %>, to: <%= field.type_name_full %>), request.<%= field.name %>
|
24
|
+
<%- else -%>
|
25
|
+
assert_equal <%= field.default_value %>, request.<%= field.name %>
|
26
|
+
<%- end -%>
|
27
|
+
<%- end -%>
|
28
|
+
refute_nil options
|
29
|
+
end
|
30
|
+
|
31
|
+
Gapic::ServiceStub.stub :new, <%= method.name %>_client_stub do
|
32
|
+
# Create client
|
33
|
+
client = <%= full_client_name %>.new do |config|
|
34
|
+
config.credentials = grpc_channel
|
35
|
+
end
|
36
|
+
|
37
|
+
# Use hash object
|
38
|
+
client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }) do |response, operation|
|
39
|
+
assert_kind_of Enumerable, response
|
40
|
+
response.to_a.each do |r|
|
41
|
+
assert_kind_of <%= method.return_type %>, r
|
42
|
+
end
|
43
|
+
assert_equal grpc_operation, operation
|
44
|
+
end
|
45
|
+
|
46
|
+
# Use named arguments
|
47
|
+
client.<%= method.name %> <%= fields.map(&:as_kwarg).join ", " %> do |response, operation|
|
48
|
+
assert_kind_of Enumerable, response
|
49
|
+
response.to_a.each do |r|
|
50
|
+
assert_kind_of <%= method.return_type %>, r
|
51
|
+
end
|
52
|
+
assert_equal grpc_operation, operation
|
53
|
+
end
|
54
|
+
|
55
|
+
# Use protobuf object
|
56
|
+
client.<%= method.name %> <%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>) do |response, operation|
|
57
|
+
assert_kind_of Enumerable, response
|
58
|
+
response.to_a.each do |r|
|
59
|
+
assert_kind_of <%= method.return_type %>, r
|
60
|
+
end
|
61
|
+
assert_equal grpc_operation, operation
|
62
|
+
end
|
63
|
+
|
64
|
+
# Use hash object with options
|
65
|
+
client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }, grpc_options) do |response, operation|
|
66
|
+
assert_kind_of Enumerable, response
|
67
|
+
response.to_a.each do |r|
|
68
|
+
assert_kind_of <%= method.return_type %>, r
|
69
|
+
end
|
70
|
+
assert_equal grpc_operation, operation
|
71
|
+
end
|
72
|
+
|
73
|
+
# Use protobuf object with options
|
74
|
+
client.<%= method.name %> <%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>), grpc_options do |response, operation|
|
75
|
+
assert_kind_of Enumerable, response
|
76
|
+
response.to_a.each do |r|
|
77
|
+
assert_kind_of <%= method.return_type %>, r
|
78
|
+
end
|
79
|
+
assert_equal grpc_operation, operation
|
80
|
+
end
|
81
|
+
|
82
|
+
# Verify method calls
|
83
|
+
assert_equal 5, <%= method.name %>_client_stub.call_rpc_count
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class ClientStub
|
2
|
+
attr_accessor :call_rpc_count, :requests
|
3
|
+
|
4
|
+
def initialize response, operation, &block
|
5
|
+
@response = response
|
6
|
+
@operation = operation
|
7
|
+
@block = block
|
8
|
+
@call_rpc_count = 0
|
9
|
+
@requests = []
|
10
|
+
end
|
11
|
+
|
12
|
+
def call_rpc *args
|
13
|
+
@call_rpc_count += 1
|
14
|
+
|
15
|
+
@requests << @block&.call(*args)
|
16
|
+
|
17
|
+
yield @response, @operation if block_given?
|
18
|
+
|
19
|
+
@response
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%- assert_locals gem -%>
|
2
|
+
<%= render partial: "shared/header" -%>
|
3
|
+
|
4
|
+
require "simplecov"
|
5
|
+
require "minitest/autorun"
|
6
|
+
require "minitest/spec"
|
7
|
+
|
8
|
+
require "<%= service_require service %>"
|
9
|
+
|
10
|
+
describe "<%= service.name %>SmokeTest TODO: add lib version" do
|
11
|
+
# TODO: Add smoke test implementation
|
12
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# The MIT License (MIT)
|
2
|
+
#
|
3
|
+
# Copyright <YEAR> <COPYRIGHT HOLDER>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
# THE SOFTWARE.
|
@@ -0,0 +1 @@
|
|
1
|
+
# Auto-generated by gapic-generator-ruby. DO NOT EDIT!
|