gapic-generator 0.1.4

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.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +13 -0
  3. data/CHANGELOG.md +43 -0
  4. data/CODE_OF_CONDUCT.md +43 -0
  5. data/CONTRIBUTING.md +28 -0
  6. data/LICENSE +202 -0
  7. data/README.md +72 -0
  8. data/bin/gapic-generator +103 -0
  9. data/bin/protoc-gen-ruby_gapic +33 -0
  10. data/default-rubocop.yml +10 -0
  11. data/gem_templates/binary.erb +20 -0
  12. data/gem_templates/dockerfile.erb +39 -0
  13. data/gem_templates/entrypoint.erb +24 -0
  14. data/gem_templates/gapic_sh.erb +97 -0
  15. data/gem_templates/gemfile.erb +8 -0
  16. data/gem_templates/gemspec.erb +36 -0
  17. data/gem_templates/generator.erb +37 -0
  18. data/gem_templates/gitignore.erb +10 -0
  19. data/gem_templates/rakefile.erb +29 -0
  20. data/gem_templates/readme.erb +69 -0
  21. data/gem_templates/rubocop.erb +16 -0
  22. data/gem_templates/shared/_header.erb +4 -0
  23. data/gem_templates/shared/_license.erb +13 -0
  24. data/gem_templates/shared/_warning.erb +1 -0
  25. data/gem_templates/test_generator.erb +13 -0
  26. data/gem_templates/test_helper.erb +25 -0
  27. data/gem_templates/version.erb +10 -0
  28. data/lib/gapic/file_formatter.rb +62 -0
  29. data/lib/gapic/formatting_utils.rb +109 -0
  30. data/lib/gapic/gem_builder.rb +98 -0
  31. data/lib/gapic/generator.rb +30 -0
  32. data/lib/gapic/generator/version.rb +21 -0
  33. data/lib/gapic/generators/base_generator.rb +91 -0
  34. data/lib/gapic/generators/default_generator.rb +101 -0
  35. data/lib/gapic/grpc_service_config/method_config.rb +49 -0
  36. data/lib/gapic/grpc_service_config/parser.rb +218 -0
  37. data/lib/gapic/grpc_service_config/parsing_error.rb +25 -0
  38. data/lib/gapic/grpc_service_config/retry_policy.rb +51 -0
  39. data/lib/gapic/grpc_service_config/service_config.rb +42 -0
  40. data/lib/gapic/path_template.rb +35 -0
  41. data/lib/gapic/path_template/parser.rb +83 -0
  42. data/lib/gapic/path_template/segment.rb +67 -0
  43. data/lib/gapic/resource_lookup.rb +91 -0
  44. data/lib/gapic/runner.rb +76 -0
  45. data/lib/gapic/schema.rb +17 -0
  46. data/lib/gapic/schema/api.rb +264 -0
  47. data/lib/gapic/schema/loader.rb +269 -0
  48. data/lib/gapic/schema/wrappers.rb +717 -0
  49. data/lib/google/api/annotations.pb.rb +39 -0
  50. data/lib/google/api/client.pb.rb +43 -0
  51. data/lib/google/api/field_behavior.pb.rb +51 -0
  52. data/lib/google/api/http.pb.rb +60 -0
  53. data/lib/google/api/resource.pb.rb +80 -0
  54. data/lib/google/longrunning/operations.pb.rb +115 -0
  55. data/lib/google/protobuf/any.pb.rb +40 -0
  56. data/lib/google/protobuf/compiler/plugin.pb.rb +72 -0
  57. data/lib/google/protobuf/descriptor.pb.rb +359 -0
  58. data/lib/google/protobuf/empty.pb.rb +36 -0
  59. data/lib/google/rpc/status.pb.rb +46 -0
  60. data/templates/default/gem/_version.erb +2 -0
  61. data/templates/default/gem/changelog.erb +3 -0
  62. data/templates/default/gem/gemfile.erb +4 -0
  63. data/templates/default/gem/gemspec.erb +37 -0
  64. data/templates/default/gem/gitignore.erb +20 -0
  65. data/templates/default/gem/license.erb +22 -0
  66. data/templates/default/gem/rakefile.erb +27 -0
  67. data/templates/default/gem/readme.erb +24 -0
  68. data/templates/default/gem/rubocop.erb +59 -0
  69. data/templates/default/gem/version.erb +6 -0
  70. data/templates/default/gem/yardopts.erb +12 -0
  71. data/templates/default/helpers/default_helper.rb +50 -0
  72. data/templates/default/helpers/filepath_helper.rb +38 -0
  73. data/templates/default/helpers/namespace_helper.rb +44 -0
  74. data/templates/default/helpers/presenter_helper.rb +24 -0
  75. data/templates/default/helpers/presenters/enum_presenter.rb +35 -0
  76. data/templates/default/helpers/presenters/enum_value_presenter.rb +33 -0
  77. data/templates/default/helpers/presenters/field_presenter.rb +146 -0
  78. data/templates/default/helpers/presenters/file_presenter.rb +53 -0
  79. data/templates/default/helpers/presenters/gem_presenter.rb +140 -0
  80. data/templates/default/helpers/presenters/message_presenter.rb +66 -0
  81. data/templates/default/helpers/presenters/method_presenter.rb +293 -0
  82. data/templates/default/helpers/presenters/package_presenter.rb +65 -0
  83. data/templates/default/helpers/presenters/resource_presenter.rb +92 -0
  84. data/templates/default/helpers/presenters/sample_presenter.rb +74 -0
  85. data/templates/default/helpers/presenters/service_presenter.rb +276 -0
  86. data/templates/default/layouts/_ruby.erb +20 -0
  87. data/templates/default/package.erb +6 -0
  88. data/templates/default/proto_docs/_enum.erb +13 -0
  89. data/templates/default/proto_docs/_message.erb +23 -0
  90. data/templates/default/proto_docs/_proto_file.erb +9 -0
  91. data/templates/default/proto_docs/proto_file.erb +6 -0
  92. data/templates/default/proto_docs/readme.erb +5 -0
  93. data/templates/default/service.erb +8 -0
  94. data/templates/default/service/client.erb +6 -0
  95. data/templates/default/service/client/_client.erb +137 -0
  96. data/templates/default/service/client/_config.erb +155 -0
  97. data/templates/default/service/client/_credentials.erb +21 -0
  98. data/templates/default/service/client/_helpers.erb +9 -0
  99. data/templates/default/service/client/_operations.erb +88 -0
  100. data/templates/default/service/client/_paths.erb +8 -0
  101. data/templates/default/service/client/_requires.erb +1 -0
  102. data/templates/default/service/client/_resource.erb +6 -0
  103. data/templates/default/service/client/_self_configure.erb +9 -0
  104. data/templates/default/service/client/_self_configure_defaults.erb +22 -0
  105. data/templates/default/service/client/_self_configure_retry_policy.erb +15 -0
  106. data/templates/default/service/client/method/_def.erb +21 -0
  107. data/templates/default/service/client/method/def/_options_defaults.erb +29 -0
  108. data/templates/default/service/client/method/def/_request.erb +6 -0
  109. data/templates/default/service/client/method/def/_request_normal.erb +4 -0
  110. data/templates/default/service/client/method/def/_request_streaming.erb +9 -0
  111. data/templates/default/service/client/method/def/_rescue.erb +1 -0
  112. data/templates/default/service/client/method/def/_response.erb +6 -0
  113. data/templates/default/service/client/method/def/_response_normal.erb +8 -0
  114. data/templates/default/service/client/method/def/_response_paged.erb +9 -0
  115. data/templates/default/service/client/method/docs/_error.erb +2 -0
  116. data/templates/default/service/client/method/docs/_request.erb +6 -0
  117. data/templates/default/service/client/method/docs/_request_field.erb +7 -0
  118. data/templates/default/service/client/method/docs/_request_normal.erb +20 -0
  119. data/templates/default/service/client/method/docs/_request_streaming.erb +5 -0
  120. data/templates/default/service/client/method/docs/_response.erb +6 -0
  121. data/templates/default/service/client/method/docs/_sample.erb +20 -0
  122. data/templates/default/service/client/method/docs/_sample_response.erb +24 -0
  123. data/templates/default/service/client/method/docs/_samples.erb +6 -0
  124. data/templates/default/service/client/method/docs/request_field/_arg.erb +10 -0
  125. data/templates/default/service/client/method/docs/request_field/_hash.erb +19 -0
  126. data/templates/default/service/client/method/docs/sample_response/_comment.erb +5 -0
  127. data/templates/default/service/client/method/docs/sample_response/_define.erb +2 -0
  128. data/templates/default/service/client/method/docs/sample_response/_loop.erb +12 -0
  129. data/templates/default/service/client/method/docs/sample_response/_print.erb +2 -0
  130. data/templates/default/service/client/method/docs/sample_response/_write_file.erb +2 -0
  131. data/templates/default/service/client/resource/_def.erb +6 -0
  132. data/templates/default/service/client/resource/_doc.erb +8 -0
  133. data/templates/default/service/client/resource/_multi.erb +28 -0
  134. data/templates/default/service/client/resource/_single.erb +11 -0
  135. data/templates/default/service/credentials.erb +6 -0
  136. data/templates/default/service/operations.erb +6 -0
  137. data/templates/default/service/paths.erb +6 -0
  138. data/templates/default/service/test/client.erb +24 -0
  139. data/templates/default/service/test/client_operations.erb +24 -0
  140. data/templates/default/service/test/method/_assert_response.erb +11 -0
  141. data/templates/default/service/test/method/_bidi.erb +100 -0
  142. data/templates/default/service/test/method/_client.erb +84 -0
  143. data/templates/default/service/test/method/_normal.erb +69 -0
  144. data/templates/default/service/test/method/_server.erb +85 -0
  145. data/templates/default/service/test/method/_setup.erb +21 -0
  146. data/templates/default/service/test/smoke.erb +12 -0
  147. data/templates/default/shared/_header.erb +4 -0
  148. data/templates/default/shared/_license.erb +21 -0
  149. data/templates/default/shared/_warning.erb +1 -0
  150. metadata +351 -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,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ <%= render partial: "shared/license" %>
4
+ <%= render partial: "shared/warning" -%>
@@ -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!