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.
- data/.gitignore +17 -0
- data/.travis.yml +9 -0
- data/.yardopts +5 -0
- data/Gemfile +3 -0
- data/README.md +316 -0
- data/Rakefile +29 -0
- data/UPGRADING.md +60 -0
- data/bin/rpc_server +5 -0
- data/bin/rprotoc +62 -0
- data/examples/addressbook.pb.rb +55 -0
- data/examples/addressbook.proto +24 -0
- data/examples/reading_a_message.rb +32 -0
- data/examples/writing_a_message.rb +46 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/code_generator.h +142 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/command_line_interface.h +318 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum.h +99 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum_field.h +103 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_extension.h +85 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_field.h +167 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_file.h +98 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_generator.h +72 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_helpers.h +159 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message.h +170 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message_field.h +102 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_primitive_field.h +103 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_service.h +118 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_string_field.h +104 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.h +2721 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/importer.h +303 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum.h +84 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum_field.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_extension.h +77 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_field.h +108 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_file.h +101 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_generator.h +72 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_helpers.h +213 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message.h +109 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message_field.h +134 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_primitive_field.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_service.h +113 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_string_field.h +120 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/mock_code_generator.h +113 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/package_info.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/parser.h +434 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.h +73 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.pb.h +790 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/python/python_generator.h +156 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/subprocess.h +108 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/zip_writer.h +93 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.h +1367 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.pb.h +5223 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor_database.h +366 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/dynamic_message.h +136 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/extension_set.h +904 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_reflection.h +424 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_util.h +82 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream.h +1102 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream_inl.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/gzip_stream.h +207 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/package_info.h +54 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/printer.h +136 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/tokenizer.h +313 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream.h +238 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl.h +357 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl_lite.h +340 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/message.h +692 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/message_lite.h +239 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/package_info.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/reflection_ops.h +80 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/repeated_field.h +1295 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/service.h +291 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/common.h +1211 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/hash.h +220 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/map-util.h +119 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/once.h +123 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/stl_util-inl.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/strutil.h +457 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/substitute.h +170 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/test_util.h +174 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/test_util_lite.h +101 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/testing/file.h +83 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/testing/googletest.h +98 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/text_format.h +285 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest.pb.h +11915 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_custom_options.pb.h +2895 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_embed_optimize_for.pb.h +211 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_empty.pb.h +56 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import.pb.h +188 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import_lite.pb.h +151 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite.pb.h +4752 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite_imports_nonlite.pb.h +150 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_mset.pb.h +816 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_no_generic_services.pb.h +197 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_optimize_for.pb.h +403 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unknown_field_set.h +268 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format.h +304 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite.h +620 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite_inl.h +774 -0
- data/ext/ruby_generator/Makefile +10 -0
- data/ext/ruby_generator/RubyGenerator.cpp +450 -0
- data/ext/ruby_generator/RubyGenerator.h +199 -0
- data/ext/ruby_generator/extconf.rb +36 -0
- data/ext/ruby_generator/protoc-ruby +0 -0
- data/lib/protobuf/cli.rb +188 -0
- data/lib/protobuf/enum.rb +58 -0
- data/lib/protobuf/enum_value.rb +59 -0
- data/lib/protobuf/evented.rb +22 -0
- data/lib/protobuf/exceptions.rb +11 -0
- data/lib/protobuf/ext/eventmachine.rb +14 -0
- data/lib/protobuf/field/base_field.rb +240 -0
- data/lib/protobuf/field/bool_field.rb +36 -0
- data/lib/protobuf/field/bytes_field.rb +38 -0
- data/lib/protobuf/field/double_field.rb +19 -0
- data/lib/protobuf/field/enum_field.rb +50 -0
- data/lib/protobuf/field/extension_fields.rb +32 -0
- data/lib/protobuf/field/field_array.rb +65 -0
- data/lib/protobuf/field/fixed32_field.rb +19 -0
- data/lib/protobuf/field/fixed64_field.rb +22 -0
- data/lib/protobuf/field/float_field.rb +31 -0
- data/lib/protobuf/field/int32_field.rb +12 -0
- data/lib/protobuf/field/int64_field.rb +12 -0
- data/lib/protobuf/field/integer_field.rb +19 -0
- data/lib/protobuf/field/message_field.rb +53 -0
- data/lib/protobuf/field/sfixed32_field.rb +21 -0
- data/lib/protobuf/field/sfixed64_field.rb +24 -0
- data/lib/protobuf/field/signed_integer_field.rb +23 -0
- data/lib/protobuf/field/sint32_field.rb +12 -0
- data/lib/protobuf/field/sint64_field.rb +12 -0
- data/lib/protobuf/field/string_field.rb +14 -0
- data/lib/protobuf/field/uint32_field.rb +12 -0
- data/lib/protobuf/field/uint64_field.rb +12 -0
- data/lib/protobuf/field/varint_field.rb +61 -0
- data/lib/protobuf/field.rb +57 -0
- data/lib/protobuf/logger.rb +86 -0
- data/lib/protobuf/message/decoder.rb +83 -0
- data/lib/protobuf/message/encoder.rb +48 -0
- data/lib/protobuf/message/extend.rb +8 -0
- data/lib/protobuf/message/message.rb +1 -0
- data/lib/protobuf/message.rb +320 -0
- data/lib/protobuf/rpc/buffer.rb +79 -0
- data/lib/protobuf/rpc/client.rb +166 -0
- data/lib/protobuf/rpc/connector.rb +19 -0
- data/lib/protobuf/rpc/connectors/base.rb +38 -0
- data/lib/protobuf/rpc/connectors/common.rb +156 -0
- data/lib/protobuf/rpc/connectors/em_client.rb +84 -0
- data/lib/protobuf/rpc/connectors/eventmachine.rb +87 -0
- data/lib/protobuf/rpc/connectors/socket.rb +73 -0
- data/lib/protobuf/rpc/connectors/zmq.rb +69 -0
- data/lib/protobuf/rpc/error/client_error.rb +31 -0
- data/lib/protobuf/rpc/error/server_error.rb +43 -0
- data/lib/protobuf/rpc/error.rb +25 -0
- data/lib/protobuf/rpc/rpc.pb.rb +118 -0
- data/lib/protobuf/rpc/server.rb +89 -0
- data/lib/protobuf/rpc/servers/evented/server.rb +41 -0
- data/lib/protobuf/rpc/servers/evented_runner.rb +21 -0
- data/lib/protobuf/rpc/servers/socket/server.rb +111 -0
- data/lib/protobuf/rpc/servers/socket/worker.rb +66 -0
- data/lib/protobuf/rpc/servers/socket_runner.rb +27 -0
- data/lib/protobuf/rpc/servers/zmq/broker.rb +87 -0
- data/lib/protobuf/rpc/servers/zmq/server.rb +50 -0
- data/lib/protobuf/rpc/servers/zmq/util.rb +27 -0
- data/lib/protobuf/rpc/servers/zmq/worker.rb +60 -0
- data/lib/protobuf/rpc/servers/zmq_runner.rb +25 -0
- data/lib/protobuf/rpc/service.rb +173 -0
- data/lib/protobuf/rpc/service_dispatcher.rb +130 -0
- data/lib/protobuf/rpc/service_filters.rb +267 -0
- data/lib/protobuf/rpc/stat.rb +83 -0
- data/lib/protobuf/socket.rb +22 -0
- data/lib/protobuf/version.rb +4 -0
- data/lib/protobuf/wire_type.rb +10 -0
- data/lib/protobuf/zmq.rb +21 -0
- data/lib/protobuf.rb +86 -0
- data/proto/rpc.pb.rb +48 -0
- data/proto/rpc.proto +73 -0
- data/protobuf.gemspec +44 -0
- data/spec/benchmark/tasks.rb +179 -0
- data/spec/functional/embedded_service_spec.rb +7 -0
- data/spec/functional/evented_server_spec.rb +64 -0
- data/spec/functional/socket_server_spec.rb +58 -0
- data/spec/functional/zmq_server_spec.rb +58 -0
- data/spec/lib/protobuf/cli_spec.rb +212 -0
- data/spec/lib/protobuf/enum_spec.rb +98 -0
- data/spec/lib/protobuf/enum_value_spec.rb +15 -0
- data/spec/lib/protobuf/logger_spec.rb +131 -0
- data/spec/lib/protobuf/message/encoder_spec.rb +19 -0
- data/spec/lib/protobuf/message_spec.rb +209 -0
- data/spec/lib/protobuf/rpc/client_spec.rb +158 -0
- data/spec/lib/protobuf/rpc/connector_spec.rb +32 -0
- data/spec/lib/protobuf/rpc/connectors/base_spec.rb +50 -0
- data/spec/lib/protobuf/rpc/connectors/common_spec.rb +128 -0
- data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +36 -0
- data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +22 -0
- data/spec/lib/protobuf/rpc/servers/evented_server_spec.rb +18 -0
- data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +43 -0
- data/spec/lib/protobuf/rpc/servers/zmq/broker_spec.rb +35 -0
- data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +41 -0
- data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +45 -0
- data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +44 -0
- data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +116 -0
- data/spec/lib/protobuf/rpc/service_filters_spec.rb +451 -0
- data/spec/lib/protobuf/rpc/service_spec.rb +165 -0
- data/spec/lib/protobuf_spec.rb +62 -0
- data/spec/spec_helper.rb +51 -0
- data/spec/support/all.rb +6 -0
- data/spec/support/server.rb +101 -0
- data/spec/support/test/enum.pb.rb +34 -0
- data/spec/support/test/enum.proto +12 -0
- data/spec/support/test/resource.pb.rb +58 -0
- data/spec/support/test/resource.proto +31 -0
- data/spec/support/test/resource_service.rb +14 -0
- data/spec/support/test_app_file.rb +2 -0
- data/spec/support/tolerance_matcher.rb +40 -0
- data/test/data/data.bin +3 -0
- data/test/data/data_source.py +14 -0
- data/test/data/types.bin +0 -0
- data/test/data/types_source.py +22 -0
- data/test/data/unk.png +0 -0
- data/test/proto/addressbook.pb.rb +66 -0
- data/test/proto/addressbook.proto +33 -0
- data/test/proto/addressbook_base.pb.rb +58 -0
- data/test/proto/addressbook_base.proto +26 -0
- data/test/proto/addressbook_ext.pb.rb +20 -0
- data/test/proto/addressbook_ext.proto +6 -0
- data/test/proto/collision.pb.rb +17 -0
- data/test/proto/collision.proto +5 -0
- data/test/proto/ext_collision.pb.rb +24 -0
- data/test/proto/ext_collision.proto +8 -0
- data/test/proto/ext_range.pb.rb +22 -0
- data/test/proto/ext_range.proto +7 -0
- data/test/proto/float_default.proto +10 -0
- data/test/proto/lowercase.pb.rb +30 -0
- data/test/proto/lowercase.proto +9 -0
- data/test/proto/merge.pb.rb +39 -0
- data/test/proto/merge.proto +15 -0
- data/test/proto/nested.pb.rb +30 -0
- data/test/proto/nested.proto +9 -0
- data/test/proto/optional_field.pb.rb +35 -0
- data/test/proto/optional_field.proto +12 -0
- data/test/proto/packed.pb.rb +22 -0
- data/test/proto/packed.proto +6 -0
- data/test/proto/rpc.proto +6 -0
- data/test/proto/types.pb.rb +84 -0
- data/test/proto/types.proto +37 -0
- data/test/test_addressbook.rb +56 -0
- data/test/test_enum_value.rb +41 -0
- data/test/test_extension.rb +36 -0
- data/test/test_lowercase.rb +11 -0
- data/test/test_message.rb +128 -0
- data/test/test_optional_field.rb +103 -0
- data/test/test_packed_field.rb +40 -0
- data/test/test_parse.rb +15 -0
- data/test/test_repeated_types.rb +132 -0
- data/test/test_serialize.rb +61 -0
- data/test/test_standard_message.rb +96 -0
- data/test/test_types.rb +226 -0
- metadata +461 -0
data/spec/spec_helper.rb
ADDED
|
@@ -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
|
data/spec/support/all.rb
ADDED
|
@@ -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,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,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
|
data/test/data/data.bin
ADDED
|
@@ -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()
|
data/test/data/types.bin
ADDED
|
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,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,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
|