protobuf 2.2.5-java

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 (256) hide show
  1. data/.gitignore +17 -0
  2. data/.travis.yml +9 -0
  3. data/.yardopts +5 -0
  4. data/Gemfile +3 -0
  5. data/README.md +316 -0
  6. data/Rakefile +29 -0
  7. data/UPGRADING.md +60 -0
  8. data/bin/rpc_server +5 -0
  9. data/bin/rprotoc +62 -0
  10. data/examples/addressbook.pb.rb +55 -0
  11. data/examples/addressbook.proto +24 -0
  12. data/examples/reading_a_message.rb +32 -0
  13. data/examples/writing_a_message.rb +46 -0
  14. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/code_generator.h +142 -0
  15. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/command_line_interface.h +318 -0
  16. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum.h +99 -0
  17. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum_field.h +103 -0
  18. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_extension.h +85 -0
  19. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_field.h +167 -0
  20. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_file.h +98 -0
  21. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_generator.h +72 -0
  22. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_helpers.h +159 -0
  23. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message.h +170 -0
  24. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message_field.h +102 -0
  25. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_primitive_field.h +103 -0
  26. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_service.h +118 -0
  27. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_string_field.h +104 -0
  28. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.h +2721 -0
  29. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/importer.h +303 -0
  30. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum.h +84 -0
  31. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum_field.h +121 -0
  32. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_extension.h +77 -0
  33. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_field.h +108 -0
  34. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_file.h +101 -0
  35. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_generator.h +72 -0
  36. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_helpers.h +213 -0
  37. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message.h +109 -0
  38. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message_field.h +134 -0
  39. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_primitive_field.h +121 -0
  40. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_service.h +113 -0
  41. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_string_field.h +120 -0
  42. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/mock_code_generator.h +113 -0
  43. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/package_info.h +64 -0
  44. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/parser.h +434 -0
  45. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.h +73 -0
  46. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.pb.h +790 -0
  47. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/python/python_generator.h +156 -0
  48. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/subprocess.h +108 -0
  49. data/ext/protobuf-2.4.1/src/google/protobuf/compiler/zip_writer.h +93 -0
  50. data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.h +1367 -0
  51. data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.pb.h +5223 -0
  52. data/ext/protobuf-2.4.1/src/google/protobuf/descriptor_database.h +366 -0
  53. data/ext/protobuf-2.4.1/src/google/protobuf/dynamic_message.h +136 -0
  54. data/ext/protobuf-2.4.1/src/google/protobuf/extension_set.h +904 -0
  55. data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_reflection.h +424 -0
  56. data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_util.h +82 -0
  57. data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream.h +1102 -0
  58. data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream_inl.h +64 -0
  59. data/ext/protobuf-2.4.1/src/google/protobuf/io/gzip_stream.h +207 -0
  60. data/ext/protobuf-2.4.1/src/google/protobuf/io/package_info.h +54 -0
  61. data/ext/protobuf-2.4.1/src/google/protobuf/io/printer.h +136 -0
  62. data/ext/protobuf-2.4.1/src/google/protobuf/io/tokenizer.h +313 -0
  63. data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream.h +238 -0
  64. data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl.h +357 -0
  65. data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl_lite.h +340 -0
  66. data/ext/protobuf-2.4.1/src/google/protobuf/message.h +692 -0
  67. data/ext/protobuf-2.4.1/src/google/protobuf/message_lite.h +239 -0
  68. data/ext/protobuf-2.4.1/src/google/protobuf/package_info.h +64 -0
  69. data/ext/protobuf-2.4.1/src/google/protobuf/reflection_ops.h +80 -0
  70. data/ext/protobuf-2.4.1/src/google/protobuf/repeated_field.h +1295 -0
  71. data/ext/protobuf-2.4.1/src/google/protobuf/service.h +291 -0
  72. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/common.h +1211 -0
  73. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/hash.h +220 -0
  74. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/map-util.h +119 -0
  75. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/once.h +123 -0
  76. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/stl_util-inl.h +121 -0
  77. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/strutil.h +457 -0
  78. data/ext/protobuf-2.4.1/src/google/protobuf/stubs/substitute.h +170 -0
  79. data/ext/protobuf-2.4.1/src/google/protobuf/test_util.h +174 -0
  80. data/ext/protobuf-2.4.1/src/google/protobuf/test_util_lite.h +101 -0
  81. data/ext/protobuf-2.4.1/src/google/protobuf/testing/file.h +83 -0
  82. data/ext/protobuf-2.4.1/src/google/protobuf/testing/googletest.h +98 -0
  83. data/ext/protobuf-2.4.1/src/google/protobuf/text_format.h +285 -0
  84. data/ext/protobuf-2.4.1/src/google/protobuf/unittest.pb.h +11915 -0
  85. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_custom_options.pb.h +2895 -0
  86. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_embed_optimize_for.pb.h +211 -0
  87. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_empty.pb.h +56 -0
  88. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import.pb.h +188 -0
  89. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import_lite.pb.h +151 -0
  90. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite.pb.h +4752 -0
  91. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite_imports_nonlite.pb.h +150 -0
  92. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_mset.pb.h +816 -0
  93. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_no_generic_services.pb.h +197 -0
  94. data/ext/protobuf-2.4.1/src/google/protobuf/unittest_optimize_for.pb.h +403 -0
  95. data/ext/protobuf-2.4.1/src/google/protobuf/unknown_field_set.h +268 -0
  96. data/ext/protobuf-2.4.1/src/google/protobuf/wire_format.h +304 -0
  97. data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite.h +620 -0
  98. data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite_inl.h +774 -0
  99. data/ext/ruby_generator/Makefile +10 -0
  100. data/ext/ruby_generator/RubyGenerator.cpp +450 -0
  101. data/ext/ruby_generator/RubyGenerator.h +199 -0
  102. data/ext/ruby_generator/extconf.rb +36 -0
  103. data/ext/ruby_generator/protoc-ruby +0 -0
  104. data/lib/protobuf/cli.rb +188 -0
  105. data/lib/protobuf/enum.rb +58 -0
  106. data/lib/protobuf/enum_value.rb +59 -0
  107. data/lib/protobuf/evented.rb +22 -0
  108. data/lib/protobuf/exceptions.rb +11 -0
  109. data/lib/protobuf/ext/eventmachine.rb +14 -0
  110. data/lib/protobuf/field/base_field.rb +240 -0
  111. data/lib/protobuf/field/bool_field.rb +36 -0
  112. data/lib/protobuf/field/bytes_field.rb +38 -0
  113. data/lib/protobuf/field/double_field.rb +19 -0
  114. data/lib/protobuf/field/enum_field.rb +50 -0
  115. data/lib/protobuf/field/extension_fields.rb +32 -0
  116. data/lib/protobuf/field/field_array.rb +65 -0
  117. data/lib/protobuf/field/fixed32_field.rb +19 -0
  118. data/lib/protobuf/field/fixed64_field.rb +22 -0
  119. data/lib/protobuf/field/float_field.rb +31 -0
  120. data/lib/protobuf/field/int32_field.rb +12 -0
  121. data/lib/protobuf/field/int64_field.rb +12 -0
  122. data/lib/protobuf/field/integer_field.rb +19 -0
  123. data/lib/protobuf/field/message_field.rb +53 -0
  124. data/lib/protobuf/field/sfixed32_field.rb +21 -0
  125. data/lib/protobuf/field/sfixed64_field.rb +24 -0
  126. data/lib/protobuf/field/signed_integer_field.rb +23 -0
  127. data/lib/protobuf/field/sint32_field.rb +12 -0
  128. data/lib/protobuf/field/sint64_field.rb +12 -0
  129. data/lib/protobuf/field/string_field.rb +14 -0
  130. data/lib/protobuf/field/uint32_field.rb +12 -0
  131. data/lib/protobuf/field/uint64_field.rb +12 -0
  132. data/lib/protobuf/field/varint_field.rb +61 -0
  133. data/lib/protobuf/field.rb +57 -0
  134. data/lib/protobuf/logger.rb +86 -0
  135. data/lib/protobuf/message/decoder.rb +83 -0
  136. data/lib/protobuf/message/encoder.rb +48 -0
  137. data/lib/protobuf/message/extend.rb +8 -0
  138. data/lib/protobuf/message/message.rb +1 -0
  139. data/lib/protobuf/message.rb +320 -0
  140. data/lib/protobuf/rpc/buffer.rb +79 -0
  141. data/lib/protobuf/rpc/client.rb +166 -0
  142. data/lib/protobuf/rpc/connector.rb +19 -0
  143. data/lib/protobuf/rpc/connectors/base.rb +38 -0
  144. data/lib/protobuf/rpc/connectors/common.rb +156 -0
  145. data/lib/protobuf/rpc/connectors/em_client.rb +84 -0
  146. data/lib/protobuf/rpc/connectors/eventmachine.rb +87 -0
  147. data/lib/protobuf/rpc/connectors/socket.rb +73 -0
  148. data/lib/protobuf/rpc/connectors/zmq.rb +69 -0
  149. data/lib/protobuf/rpc/error/client_error.rb +31 -0
  150. data/lib/protobuf/rpc/error/server_error.rb +43 -0
  151. data/lib/protobuf/rpc/error.rb +25 -0
  152. data/lib/protobuf/rpc/rpc.pb.rb +118 -0
  153. data/lib/protobuf/rpc/server.rb +89 -0
  154. data/lib/protobuf/rpc/servers/evented/server.rb +41 -0
  155. data/lib/protobuf/rpc/servers/evented_runner.rb +21 -0
  156. data/lib/protobuf/rpc/servers/socket/server.rb +111 -0
  157. data/lib/protobuf/rpc/servers/socket/worker.rb +66 -0
  158. data/lib/protobuf/rpc/servers/socket_runner.rb +27 -0
  159. data/lib/protobuf/rpc/servers/zmq/broker.rb +87 -0
  160. data/lib/protobuf/rpc/servers/zmq/server.rb +50 -0
  161. data/lib/protobuf/rpc/servers/zmq/util.rb +27 -0
  162. data/lib/protobuf/rpc/servers/zmq/worker.rb +60 -0
  163. data/lib/protobuf/rpc/servers/zmq_runner.rb +25 -0
  164. data/lib/protobuf/rpc/service.rb +173 -0
  165. data/lib/protobuf/rpc/service_dispatcher.rb +130 -0
  166. data/lib/protobuf/rpc/service_filters.rb +267 -0
  167. data/lib/protobuf/rpc/stat.rb +83 -0
  168. data/lib/protobuf/socket.rb +22 -0
  169. data/lib/protobuf/version.rb +4 -0
  170. data/lib/protobuf/wire_type.rb +10 -0
  171. data/lib/protobuf/zmq.rb +21 -0
  172. data/lib/protobuf.rb +86 -0
  173. data/proto/rpc.pb.rb +48 -0
  174. data/proto/rpc.proto +73 -0
  175. data/protobuf.gemspec +44 -0
  176. data/spec/benchmark/tasks.rb +179 -0
  177. data/spec/functional/embedded_service_spec.rb +7 -0
  178. data/spec/functional/evented_server_spec.rb +64 -0
  179. data/spec/functional/socket_server_spec.rb +58 -0
  180. data/spec/functional/zmq_server_spec.rb +58 -0
  181. data/spec/lib/protobuf/cli_spec.rb +212 -0
  182. data/spec/lib/protobuf/enum_spec.rb +98 -0
  183. data/spec/lib/protobuf/enum_value_spec.rb +15 -0
  184. data/spec/lib/protobuf/logger_spec.rb +131 -0
  185. data/spec/lib/protobuf/message/encoder_spec.rb +19 -0
  186. data/spec/lib/protobuf/message_spec.rb +209 -0
  187. data/spec/lib/protobuf/rpc/client_spec.rb +158 -0
  188. data/spec/lib/protobuf/rpc/connector_spec.rb +32 -0
  189. data/spec/lib/protobuf/rpc/connectors/base_spec.rb +50 -0
  190. data/spec/lib/protobuf/rpc/connectors/common_spec.rb +128 -0
  191. data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +36 -0
  192. data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +22 -0
  193. data/spec/lib/protobuf/rpc/servers/evented_server_spec.rb +18 -0
  194. data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +43 -0
  195. data/spec/lib/protobuf/rpc/servers/zmq/broker_spec.rb +35 -0
  196. data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +41 -0
  197. data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +45 -0
  198. data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +44 -0
  199. data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +116 -0
  200. data/spec/lib/protobuf/rpc/service_filters_spec.rb +451 -0
  201. data/spec/lib/protobuf/rpc/service_spec.rb +165 -0
  202. data/spec/lib/protobuf_spec.rb +62 -0
  203. data/spec/spec_helper.rb +51 -0
  204. data/spec/support/all.rb +6 -0
  205. data/spec/support/server.rb +101 -0
  206. data/spec/support/test/enum.pb.rb +34 -0
  207. data/spec/support/test/enum.proto +12 -0
  208. data/spec/support/test/resource.pb.rb +58 -0
  209. data/spec/support/test/resource.proto +31 -0
  210. data/spec/support/test/resource_service.rb +14 -0
  211. data/spec/support/test_app_file.rb +2 -0
  212. data/spec/support/tolerance_matcher.rb +40 -0
  213. data/test/data/data.bin +3 -0
  214. data/test/data/data_source.py +14 -0
  215. data/test/data/types.bin +0 -0
  216. data/test/data/types_source.py +22 -0
  217. data/test/data/unk.png +0 -0
  218. data/test/proto/addressbook.pb.rb +66 -0
  219. data/test/proto/addressbook.proto +33 -0
  220. data/test/proto/addressbook_base.pb.rb +58 -0
  221. data/test/proto/addressbook_base.proto +26 -0
  222. data/test/proto/addressbook_ext.pb.rb +20 -0
  223. data/test/proto/addressbook_ext.proto +6 -0
  224. data/test/proto/collision.pb.rb +17 -0
  225. data/test/proto/collision.proto +5 -0
  226. data/test/proto/ext_collision.pb.rb +24 -0
  227. data/test/proto/ext_collision.proto +8 -0
  228. data/test/proto/ext_range.pb.rb +22 -0
  229. data/test/proto/ext_range.proto +7 -0
  230. data/test/proto/float_default.proto +10 -0
  231. data/test/proto/lowercase.pb.rb +30 -0
  232. data/test/proto/lowercase.proto +9 -0
  233. data/test/proto/merge.pb.rb +39 -0
  234. data/test/proto/merge.proto +15 -0
  235. data/test/proto/nested.pb.rb +30 -0
  236. data/test/proto/nested.proto +9 -0
  237. data/test/proto/optional_field.pb.rb +35 -0
  238. data/test/proto/optional_field.proto +12 -0
  239. data/test/proto/packed.pb.rb +22 -0
  240. data/test/proto/packed.proto +6 -0
  241. data/test/proto/rpc.proto +6 -0
  242. data/test/proto/types.pb.rb +84 -0
  243. data/test/proto/types.proto +37 -0
  244. data/test/test_addressbook.rb +56 -0
  245. data/test/test_enum_value.rb +41 -0
  246. data/test/test_extension.rb +36 -0
  247. data/test/test_lowercase.rb +11 -0
  248. data/test/test_message.rb +128 -0
  249. data/test/test_optional_field.rb +103 -0
  250. data/test/test_packed_field.rb +40 -0
  251. data/test/test_parse.rb +15 -0
  252. data/test/test_repeated_types.rb +132 -0
  253. data/test/test_serialize.rb +61 -0
  254. data/test/test_standard_message.rb +96 -0
  255. data/test/test_types.rb +226 -0
  256. metadata +461 -0
@@ -0,0 +1,51 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ require 'rubygems'
5
+ require 'bundler'
6
+ Bundler.setup :default, :development, :test
7
+ require 'pry'
8
+
9
+ $: << ::File.expand_path('..', File.dirname(__FILE__))
10
+ #$: << ::File.expand_path('../lib', File.dirname(__FILE__))
11
+
12
+ require 'protobuf'
13
+ require ::File.dirname(__FILE__) + '/support/all'
14
+
15
+ # Including a way to turn on debug logger for spec runs
16
+ if ENV["DEBUG"]
17
+ debug_log = ::File.expand_path('../debug_specs.log', File.dirname(__FILE__) )
18
+ ::Protobuf::Logger.configure(:file => debug_log, :level => ::Logger::DEBUG)
19
+ end
20
+
21
+ ::RSpec.configure do |c|
22
+ c.include(::Sander6::CustomMatchers)
23
+ c.mock_with :rspec
24
+
25
+ c.before(:suite) do
26
+ unless ENV['NO_COMPILE_TEST_PROTOS']
27
+ $stdout.puts 'Compiling test protos (use NO_COMPILE_TEST_PROTOS=1 to skip)'
28
+ proto_path = File.expand_path("../support/", __FILE__)
29
+ cmd = %Q{ rprotoc --proto_path=#{proto_path} --ruby_out=#{proto_path} #{File.join(proto_path, '**', '*.proto')} }
30
+ puts cmd
31
+ %x{#{cmd}}
32
+ end
33
+ end
34
+ end
35
+
36
+ Dir[File.expand_path('../support/**/*.pb.rb', __FILE__)].each do |proto_file|
37
+ require proto_file
38
+ end
39
+
40
+ class ::Protobuf::Rpc::Client
41
+ def ==(other)
42
+ connector.options == other.options && \
43
+ success_cb == other.success_cb && \
44
+ failure_cb == other.failure_cb
45
+ end
46
+ end
47
+
48
+ def reset_service_location(service)
49
+ service.host = nil
50
+ service.port = nil
51
+ end
@@ -0,0 +1,6 @@
1
+ require 'support/tolerance_matcher'
2
+ require 'support/server'
3
+
4
+ def now
5
+ Time.new.to_f
6
+ end
@@ -0,0 +1,101 @@
1
+ require 'ostruct'
2
+ require 'protobuf/logger'
3
+ require 'protobuf/rpc/server'
4
+ require 'protobuf/rpc/servers/socket/server'
5
+ require 'protobuf/rpc/servers/socket_runner'
6
+ require 'protobuf/rpc/servers/zmq/server'
7
+ require 'protobuf/rpc/servers/zmq_runner'
8
+ require 'spec/support/test/resource_service'
9
+
10
+ # Want to abort if server dies?
11
+ Thread.abort_on_exception = true
12
+
13
+ module StubProtobufServerFactory
14
+ def self.build(delay)
15
+ new_server = Class.new(Protobuf::Rpc::Evented::Server) do
16
+ def self.sleep_interval
17
+ @sleep_interval
18
+ end
19
+
20
+ def self.sleep_interval=(si)
21
+ @sleep_interval = si
22
+ end
23
+
24
+ def post_init
25
+ sleep self.class.sleep_interval
26
+ super
27
+ end
28
+ end
29
+
30
+ new_server.sleep_interval = delay
31
+ return new_server
32
+ end
33
+ end
34
+
35
+ class StubServer
36
+ include Protobuf::Logger::LogMethods
37
+
38
+ attr_accessor :options
39
+
40
+ def initialize(options = {})
41
+ @running = true
42
+ @options = OpenStruct.new({ :host => "127.0.0.1",
43
+ :port => 9399,
44
+ :delay => 0,
45
+ :server => Protobuf::Rpc::Evented::Server }.merge(options))
46
+
47
+ start
48
+ yield self
49
+ ensure
50
+ stop if @running
51
+ end
52
+
53
+ def start
54
+ case
55
+ when @options.server == Protobuf::Rpc::Evented::Server then start_em_server
56
+ when @options.server == Protobuf::Rpc::Zmq::Server then start_zmq_server
57
+ else
58
+ start_socket_server
59
+ end
60
+ log_debug { sign_message("Server started #{@options.host}:#{@options.port}") }
61
+ rescue => ex
62
+ if ex =~ /no acceptor/ # Means EM didn't shutdown in the next_tick yet
63
+ stop
64
+ retry
65
+ end
66
+ end
67
+
68
+ def start_em_server
69
+ @server_handle = EventMachine.start_server(@options.host, @options.port, StubProtobufServerFactory.build(@options.delay))
70
+ end
71
+
72
+ def start_socket_server
73
+ @sock_server = Thread.new(@options) { |opt| Protobuf::Rpc::SocketRunner.run(opt) }
74
+ @sock_server.abort_on_exception = true # Set for testing purposes
75
+ Thread.pass until Protobuf::Rpc::Socket::Server.running?
76
+ end
77
+
78
+ def start_zmq_server
79
+ @zmq_server = Thread.new(@options) { |opt| Protobuf::Rpc::ZmqRunner.run(opt) }
80
+ Thread.pass until Protobuf::Rpc::Zmq::Server.running?
81
+ end
82
+
83
+ def stop
84
+ case
85
+ when @options.server == Protobuf::Rpc::Evented::Server then
86
+ EventMachine.stop_server(@server_handle) if @server_handle
87
+ when @options.server == Protobuf::Rpc::Zmq::Server then
88
+ Protobuf::Rpc::ZmqRunner.stop
89
+ @zmq_server.join if @zmq_server
90
+ else
91
+ Protobuf::Rpc::SocketRunner.stop
92
+ @sock_server.join if @sock_server
93
+ end
94
+
95
+ @running = false
96
+ end
97
+
98
+ def log_signature
99
+ @_log_signature ||= "[stub-server]"
100
+ end
101
+ end
@@ -0,0 +1,34 @@
1
+ ##
2
+ # This file is auto-generated. DO NOT EDIT!
3
+ #
4
+ require 'protobuf/message'
5
+
6
+ module Test
7
+ ##
8
+ # Enum Classes
9
+ #
10
+ class EnumTestType < ::Protobuf::Enum; end
11
+
12
+ ##
13
+ # Message Classes
14
+ #
15
+ class EnumTestMessage < ::Protobuf::Message; end
16
+
17
+ ##
18
+ # Enum Values
19
+ #
20
+ class EnumTestType
21
+ define :ONE, 1
22
+ define :TWO, 2
23
+ end
24
+
25
+ ##
26
+ # Message Fields
27
+ #
28
+ class EnumTestMessage
29
+ optional ::Test::EnumTestType, :non_default_enum, 1
30
+ optional ::Test::EnumTestType, :default_enum, 2, :default => ::Test::EnumTestType::ONE
31
+ repeated ::Test::EnumTestType, :repeated_enums, 3
32
+ end
33
+
34
+ end
@@ -0,0 +1,12 @@
1
+ package test;
2
+
3
+ enum EnumTestType {
4
+ ONE = 1;
5
+ TWO = 2;
6
+ }
7
+
8
+ message EnumTestMessage {
9
+ optional EnumTestType non_default_enum = 1;
10
+ optional EnumTestType default_enum = 2 [default=ONE];
11
+ repeated EnumTestType repeated_enums = 3;
12
+ }
@@ -0,0 +1,58 @@
1
+ ##
2
+ # This file is auto-generated. DO NOT EDIT!
3
+ #
4
+ require 'protobuf/message'
5
+ require 'protobuf/rpc/service'
6
+
7
+ module Test
8
+ ##
9
+ # Enum Classes
10
+ #
11
+ class StatusType < ::Protobuf::Enum; end
12
+
13
+ ##
14
+ # Message Classes
15
+ #
16
+ class ResourceFindRequest < ::Protobuf::Message; end
17
+ class Resource < ::Protobuf::Message; end
18
+ class Nested < ::Protobuf::Message; end
19
+
20
+ ##
21
+ # Enum Values
22
+ #
23
+ class StatusType
24
+ define :PENDING, 0
25
+ define :ENABLED, 1
26
+ define :DISABLED, 2
27
+ define :DELETED, 3
28
+ end
29
+
30
+ ##
31
+ # Message Fields
32
+ #
33
+ class ResourceFindRequest
34
+ required ::Protobuf::Field::StringField, :name, 1
35
+ optional ::Protobuf::Field::BoolField, :active, 2
36
+ end
37
+
38
+ class Resource
39
+ required ::Protobuf::Field::StringField, :name, 1
40
+ optional ::Protobuf::Field::Int64Field, :date_created, 2
41
+ optional ::Test::StatusType, :status, 3
42
+ repeated ::Test::StatusType, :repeated_enum, 4
43
+ end
44
+
45
+ class Nested
46
+ optional ::Protobuf::Field::StringField, :name, 1
47
+ optional ::Test::Resource, :resource, 2
48
+ repeated ::Test::Resource, :multiple_resources, 3
49
+ optional ::Test::StatusType, :status, 4
50
+ end
51
+
52
+ ##
53
+ # Services
54
+ #
55
+ class ResourceService < ::Protobuf::Rpc::Service
56
+ rpc :find, ::Test::ResourceFindRequest, ::Test::Resource
57
+ end
58
+ end
@@ -0,0 +1,31 @@
1
+ package test;
2
+
3
+ enum StatusType {
4
+ PENDING = 0;
5
+ ENABLED = 1;
6
+ DISABLED = 2;
7
+ DELETED = 3;
8
+ }
9
+
10
+ message ResourceFindRequest {
11
+ required string name = 1;
12
+ optional bool active = 2;
13
+ }
14
+
15
+ message Resource {
16
+ required string name = 1;
17
+ optional int64 date_created = 2;
18
+ optional StatusType status = 3;
19
+ repeated StatusType repeated_enum = 4;
20
+ }
21
+
22
+ message Nested {
23
+ optional string name = 1;
24
+ optional Resource resource = 2;
25
+ repeated Resource multiple_resources = 3;
26
+ optional StatusType status = 4;
27
+ }
28
+
29
+ service ResourceService {
30
+ rpc Find (ResourceFindRequest) returns (Resource);
31
+ }
@@ -0,0 +1,14 @@
1
+ require ::File.expand_path('../resource.pb', __FILE__)
2
+
3
+ module Test
4
+ class ResourceService
5
+
6
+ # request -> Test::ResourceFindRequest
7
+ # response -> Test::Resource
8
+ def find
9
+ response.name = request.name
10
+ response.status = request.active ? 1 : 0
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,2 @@
1
+ # For use in testing the rpc_server
2
+ ENV['TEST_APP_FILE_LOADED'] = 'true'
@@ -0,0 +1,40 @@
1
+ #
2
+ # courtesy of sander 6
3
+ # - http://github.com/sander6/custom_matchers/blob/master/lib/matchers/tolerance_matchers.rb
4
+ #
5
+ module Sander6
6
+ module CustomMatchers
7
+
8
+ class ToleranceMatcher
9
+ def initialize(tolerance)
10
+ @tolerance = tolerance
11
+ @target = 0
12
+ end
13
+
14
+ def of(target)
15
+ @target = target
16
+ self
17
+ end
18
+
19
+ def matches?(value)
20
+ @value = value
21
+ ((@target - @tolerance)..(@target + @tolerance)).include?(@value)
22
+ end
23
+
24
+ def failure_message
25
+ "Expected #{@value.inspect} to be within #{@tolerance.inspect} of #{@target.inspect}, but it wasn't.\n" +
26
+ "Difference: #{@value - @target}"
27
+ end
28
+
29
+ def negative_failure_message
30
+ "Expected #{@value.inspect} not to be within #{@tolerance.inspect} of #{@target.inspect}, but it was.\n" +
31
+ "Difference: #{@value - @target}"
32
+ end
33
+ end
34
+
35
+ def be_within(value)
36
+ Sander6::CustomMatchers::ToleranceMatcher.new(value)
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+
2
+ John Doe� jdoe@example.com"
3
+ 555-4321
@@ -0,0 +1,14 @@
1
+ import addressbook_pb2
2
+ import sys
3
+
4
+ person = addressbook_pb2.Person()
5
+ person.id = 1234
6
+ person.name = "John Doe"
7
+ person.email = "jdoe@example.com"
8
+ phone = person.phone.add()
9
+ phone.number = "555-4321"
10
+ phone.type = addressbook_pb2.Person.HOME
11
+
12
+ f = open('data.bin', 'wb')
13
+ f.write(person.SerializeToString())
14
+ f.close()
Binary file
@@ -0,0 +1,22 @@
1
+ import types_pb2
2
+ import sys
3
+
4
+ types = types_pb2.TestTypes()
5
+ types.type1 = 0.01
6
+ types.type2 = 0.1
7
+ types.type3 = 1
8
+ types.type4 = 10
9
+ types.type5 = 100
10
+ types.type6 = 1000
11
+ types.type7 = -1
12
+ types.type8 = -10
13
+ types.type9 = 10000
14
+ types.type10 = 100000
15
+ types.type11 = False
16
+ types.type12 = 'hello all types'
17
+ # TODO test type13
18
+ #types.type13 =
19
+
20
+ f = open('types.bin', 'wb')
21
+ f.write(types.SerializeToString())
22
+ f.close()
data/test/data/unk.png ADDED
Binary file
@@ -0,0 +1,66 @@
1
+ ### Generated by rprotoc. DO NOT EDIT!
2
+ ### <proto file: test/proto/addressbook.proto>
3
+ # package tutorial;
4
+ #
5
+ # message Person {
6
+ # required string name = 1;
7
+ # required int32 id = 2;
8
+ # optional string email = 3;
9
+ #
10
+ # enum PhoneType {
11
+ # MOBILE = 0;
12
+ # HOME = 1;
13
+ # WORK = 2;
14
+ # }
15
+ #
16
+ # message PhoneNumber {
17
+ # required string number = 1;
18
+ # optional PhoneType type = 2 [default = HOME];
19
+ # }
20
+ #
21
+ # repeated PhoneNumber phone = 4;
22
+ # optional uint32 age = 5 [default = 20];
23
+ #
24
+ # extensions 100 to 200;
25
+ # }
26
+ #
27
+ # /*
28
+ # extend Person {
29
+ # optional int32 age = 100;
30
+ # }
31
+ # */
32
+ #
33
+ # message AddressBook {
34
+ # repeated Person person = 1;
35
+ # }
36
+
37
+ require 'protobuf/message/message'
38
+ require 'protobuf/message/enum'
39
+ require 'protobuf/message/extend'
40
+
41
+ module Tutorial
42
+ class Person < ::Protobuf::Message
43
+ defined_in __FILE__
44
+ required :string, :name, 1
45
+ required :int32, :id, 2
46
+ optional :string, :email, 3
47
+ class PhoneType < ::Protobuf::Enum
48
+ defined_in __FILE__
49
+ define :MOBILE, 0
50
+ define :HOME, 1
51
+ define :WORK, 2
52
+ end
53
+ class PhoneNumber < ::Protobuf::Message
54
+ defined_in __FILE__
55
+ required :string, :number, 1
56
+ optional :PhoneType, :type, 2, :default => :HOME
57
+ end
58
+ repeated :PhoneNumber, :phone, 4
59
+ optional :uint32, :age, 5, :default => 20
60
+ extensions 100..200
61
+ end
62
+ class AddressBook < ::Protobuf::Message
63
+ defined_in __FILE__
64
+ repeated :Person, :person, 1
65
+ end
66
+ end
@@ -0,0 +1,33 @@
1
+ package tutorial;
2
+
3
+ message Person {
4
+ required string name = 1;
5
+ required int32 id = 2;
6
+ optional string email = 3;
7
+
8
+ enum PhoneType {
9
+ MOBILE = 0;
10
+ HOME = 1;
11
+ WORK = 2;
12
+ }
13
+
14
+ message PhoneNumber {
15
+ required string number = 1;
16
+ optional PhoneType type = 2 [default = HOME];
17
+ }
18
+
19
+ repeated PhoneNumber phone = 4;
20
+ optional uint32 age = 5 [default = 20];
21
+
22
+ extensions 100 to 200;
23
+ }
24
+
25
+ /*
26
+ extend Person {
27
+ optional int32 age = 100;
28
+ }
29
+ */
30
+
31
+ message AddressBook {
32
+ repeated Person person = 1;
33
+ }
@@ -0,0 +1,58 @@
1
+ ### Generated by rprotoc. DO NOT EDIT!
2
+ ### <proto file: test/proto/addressbook_base.proto>
3
+ # package tutorial_ext;
4
+ #
5
+ # message Person {
6
+ # required string name = 1;
7
+ # required int32 id = 2;
8
+ # optional string email = 3;
9
+ #
10
+ # enum PhoneType {
11
+ # MOBILE = 0;
12
+ # HOME = 1;
13
+ # WORK = 2;
14
+ # }
15
+ #
16
+ # message PhoneNumber {
17
+ # required string number = 1;
18
+ # optional PhoneType type = 2 [default = HOME];
19
+ # }
20
+ #
21
+ # repeated PhoneNumber phone = 4;
22
+ #
23
+ # extensions 100 to 200;
24
+ # }
25
+ #
26
+ # message AddressBook {
27
+ # repeated Person person = 1;
28
+ # }
29
+
30
+ require 'protobuf/message/message'
31
+ require 'protobuf/message/enum'
32
+ require 'protobuf/message/extend'
33
+
34
+ module TutorialExt
35
+ class Person < ::Protobuf::Message
36
+ defined_in __FILE__
37
+ required :string, :name, 1
38
+ required :int32, :id, 2
39
+ optional :string, :email, 3
40
+ class PhoneType < ::Protobuf::Enum
41
+ defined_in __FILE__
42
+ define :MOBILE, 0
43
+ define :HOME, 1
44
+ define :WORK, 2
45
+ end
46
+ class PhoneNumber < ::Protobuf::Message
47
+ defined_in __FILE__
48
+ required :string, :number, 1
49
+ optional :PhoneType, :type, 2, :default => :HOME
50
+ end
51
+ repeated :PhoneNumber, :phone, 4
52
+ extensions 100..200
53
+ end
54
+ class AddressBook < ::Protobuf::Message
55
+ defined_in __FILE__
56
+ repeated :Person, :person, 1
57
+ end
58
+ end
@@ -0,0 +1,26 @@
1
+ package tutorial_ext;
2
+
3
+ message Person {
4
+ required string name = 1;
5
+ required int32 id = 2;
6
+ optional string email = 3;
7
+
8
+ enum PhoneType {
9
+ MOBILE = 0;
10
+ HOME = 1;
11
+ WORK = 2;
12
+ }
13
+
14
+ message PhoneNumber {
15
+ required string number = 1;
16
+ optional PhoneType type = 2 [default = HOME];
17
+ }
18
+
19
+ repeated PhoneNumber phone = 4;
20
+
21
+ extensions 100 to 200;
22
+ }
23
+
24
+ message AddressBook {
25
+ repeated Person person = 1;
26
+ }
@@ -0,0 +1,20 @@
1
+ ### Generated by rprotoc. DO NOT EDIT!
2
+ ### <proto file: test/proto/addressbook_ext.proto>
3
+ # import "test/proto/addressbook_base.proto";
4
+ # package tutorial_ext;
5
+ #
6
+ # extend Person {
7
+ # optional int32 age = 100;
8
+ # }
9
+
10
+ require 'protobuf/message/message'
11
+ require 'protobuf/message/enum'
12
+ require 'protobuf/message/extend'
13
+
14
+ require 'test/proto/addressbook_base.pb'
15
+ module TutorialExt
16
+ class Person < ::Protobuf::Message
17
+ defined_in __FILE__
18
+ optional :int32, :age, 100, :extension => true
19
+ end
20
+ end
@@ -0,0 +1,6 @@
1
+ import "test/proto/addressbook_base.proto";
2
+ package tutorial_ext;
3
+
4
+ extend Person {
5
+ optional int32 age = 100;
6
+ }
@@ -0,0 +1,17 @@
1
+ ### Generated by rprotoc. DO NOT EDIT!
2
+ ### <proto file: test/proto/collision.proto>
3
+ # message CollisionTest {
4
+ # optional string a = 1;
5
+ # optional string b = 1;
6
+ # }
7
+ #
8
+
9
+ require 'protobuf/message/message'
10
+ require 'protobuf/message/enum'
11
+ require 'protobuf/message/extend'
12
+
13
+ class CollisionTest < ::Protobuf::Message
14
+ defined_in __FILE__
15
+ optional :string, :a, 1
16
+ optional :string, :b, 1
17
+ end
@@ -0,0 +1,5 @@
1
+ message CollisionTest {
2
+ optional string a = 1;
3
+ optional string b = 1;
4
+ }
5
+
@@ -0,0 +1,24 @@
1
+ ### Generated by rprotoc. DO NOT EDIT!
2
+ ### <proto file: test/proto/ext_collision.proto>
3
+ # message ExtCollisionTest {
4
+ # extensions 1 to 10;
5
+ # }
6
+ #
7
+ # message ExtCollisionTest {
8
+ # optional string a = 1;
9
+ # optional string b = 1;
10
+ # }
11
+
12
+ require 'protobuf/message/message'
13
+ require 'protobuf/message/enum'
14
+ require 'protobuf/message/extend'
15
+
16
+ class ExtCollisionTest < ::Protobuf::Message
17
+ defined_in __FILE__
18
+ extensions 1..10
19
+ end
20
+ class ExtCollisionTest < ::Protobuf::Message
21
+ defined_in __FILE__
22
+ optional :string, :a, 1
23
+ optional :string, :b, 1
24
+ end
@@ -0,0 +1,8 @@
1
+ message ExtCollisionTest {
2
+ extensions 1 to 10;
3
+ }
4
+
5
+ message ExtCollisionTest {
6
+ optional string a = 1;
7
+ optional string b = 1;
8
+ }