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
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'spec/support/test/resource_service'
|
|
3
|
+
|
|
4
|
+
describe 'Functional Socket Client' do
|
|
5
|
+
before(:all) do
|
|
6
|
+
load "protobuf/socket.rb"
|
|
7
|
+
Thread.abort_on_exception = true
|
|
8
|
+
server = OpenStruct.new(:host => "127.0.0.1", :port => 9399, :backlog => 100, :threshold => 100)
|
|
9
|
+
@server_thread = Thread.new(server) { |s| Protobuf::Rpc::SocketRunner.run(s) }
|
|
10
|
+
Thread.pass until Protobuf::Rpc::Socket::Server.running?
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
after(:all) do
|
|
14
|
+
Protobuf::Rpc::SocketRunner.stop
|
|
15
|
+
@server_thread.join
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'runs fine when required fields are set' do
|
|
19
|
+
expect {
|
|
20
|
+
client = ::Test::ResourceService.client
|
|
21
|
+
|
|
22
|
+
client.find(:name => 'Test Name', :active => true) do |c|
|
|
23
|
+
c.on_success do |succ|
|
|
24
|
+
succ.name.should eq("Test Name")
|
|
25
|
+
succ.status.should eq(::Test::StatusType::ENABLED)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
c.on_failure do |err|
|
|
29
|
+
raise err.inspect
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
}.to_not raise_error
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'calls the on_failure callback when a message is malformed' do
|
|
36
|
+
error = nil
|
|
37
|
+
request = ::Test::ResourceFindRequest.new(:active => true)
|
|
38
|
+
client = ::Test::ResourceService.client
|
|
39
|
+
|
|
40
|
+
client.find(request) do |c|
|
|
41
|
+
c.on_success { raise "shouldn't pass"}
|
|
42
|
+
c.on_failure {|e| error = e}
|
|
43
|
+
end
|
|
44
|
+
error.message.should =~ /ResourceFindRequest.*fields.*improperly set/
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'calls the on_failure callback when the request type is wrong' do
|
|
48
|
+
error = nil
|
|
49
|
+
request = ::Test::Resource.new(:name => 'Test Name')
|
|
50
|
+
client = ::Test::ResourceService.client
|
|
51
|
+
|
|
52
|
+
client.find(request) do |c|
|
|
53
|
+
c.on_success { raise "shouldn't pass"}
|
|
54
|
+
c.on_failure {|e| error = e}
|
|
55
|
+
end
|
|
56
|
+
error.message.should =~ /expected request.*ResourceFindRequest.*Resource instead/i
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'spec/support/test/resource_service'
|
|
3
|
+
|
|
4
|
+
describe 'Functional ZMQ Client' do
|
|
5
|
+
before(:all) do
|
|
6
|
+
load "protobuf/zmq.rb"
|
|
7
|
+
Thread.abort_on_exception = true
|
|
8
|
+
server = OpenStruct.new(:host => "127.0.0.1", :port => 9399, :backlog => 100, :threshold => 100, :threads => 5)
|
|
9
|
+
@server_thread = Thread.new(server) { |s| Protobuf::Rpc::ZmqRunner.run(s) }
|
|
10
|
+
Thread.pass until Protobuf::Rpc::Zmq::Server.running?
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
after(:all) do
|
|
14
|
+
::Protobuf::Rpc::Zmq::Server.stop
|
|
15
|
+
@server_thread.join
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'runs fine when required fields are set' do
|
|
19
|
+
expect {
|
|
20
|
+
client = ::Test::ResourceService.client
|
|
21
|
+
|
|
22
|
+
client.find(:name => 'Test Name', :active => true) do |c|
|
|
23
|
+
c.on_success do |succ|
|
|
24
|
+
succ.name.should eq("Test Name")
|
|
25
|
+
succ.status.should eq(::Test::StatusType::ENABLED)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
c.on_failure do |err|
|
|
29
|
+
raise err.inspect
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
}.to_not raise_error
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'calls the on_failure callback when a message is malformed' do
|
|
36
|
+
error = nil
|
|
37
|
+
request = ::Test::ResourceFindRequest.new(:active => true)
|
|
38
|
+
client = ::Test::ResourceService.client
|
|
39
|
+
|
|
40
|
+
client.find(request) do |c|
|
|
41
|
+
c.on_success { raise "shouldn't pass"}
|
|
42
|
+
c.on_failure {|e| error = e}
|
|
43
|
+
end
|
|
44
|
+
error.message.should =~ /ResourceFindRequest.*fields.*improperly set/
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'calls the on_failure callback when the request type is wrong' do
|
|
48
|
+
error = nil
|
|
49
|
+
request = ::Test::Resource.new(:name => 'Test Name')
|
|
50
|
+
client = ::Test::ResourceService.client
|
|
51
|
+
|
|
52
|
+
client.find(request) do |c|
|
|
53
|
+
c.on_success { raise "shouldn't pass"}
|
|
54
|
+
c.on_failure {|e| error = e}
|
|
55
|
+
end
|
|
56
|
+
error.message.should =~ /expected request.*ResourceFindRequest.*Resource instead/i
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'protobuf/cli'
|
|
3
|
+
|
|
4
|
+
describe ::Protobuf::CLI do
|
|
5
|
+
|
|
6
|
+
let(:app_file) do
|
|
7
|
+
File.expand_path('../../../support/test_app_file.rb', __FILE__)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
before do
|
|
11
|
+
::Protobuf::Rpc::SocketRunner.stub(:run)
|
|
12
|
+
::Protobuf::Rpc::ZmqRunner.stub(:run)
|
|
13
|
+
::Protobuf::Rpc::EventedRunner.stub(:run)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe '#start' do
|
|
17
|
+
let(:base_args) { [ 'start', app_file ] }
|
|
18
|
+
let(:test_args) { [] }
|
|
19
|
+
let(:args) { base_args + test_args }
|
|
20
|
+
|
|
21
|
+
context 'host option' do
|
|
22
|
+
let(:test_args) { [ '--host=123.123.123.123' ] }
|
|
23
|
+
|
|
24
|
+
it 'sends the host option to the runner' do
|
|
25
|
+
::Protobuf::Rpc::SocketRunner.should_receive(:run) do |options|
|
|
26
|
+
options[:host].should eq '123.123.123.123'
|
|
27
|
+
end
|
|
28
|
+
described_class.start(args)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context 'port option' do
|
|
33
|
+
let(:test_args) { [ '--port=12345' ] }
|
|
34
|
+
|
|
35
|
+
it 'sends the port option to the runner' do
|
|
36
|
+
::Protobuf::Rpc::SocketRunner.should_receive(:run) do |options|
|
|
37
|
+
options[:port].should eq 12345
|
|
38
|
+
end
|
|
39
|
+
described_class.start(args)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
context 'threads option' do
|
|
44
|
+
let(:test_args) { [ '--threads=500' ] }
|
|
45
|
+
|
|
46
|
+
it 'sends the threads option to the runner' do
|
|
47
|
+
::Protobuf::Rpc::SocketRunner.should_receive(:run) do |options|
|
|
48
|
+
options[:threads].should eq 500
|
|
49
|
+
end
|
|
50
|
+
described_class.start(args)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
context 'backlog option' do
|
|
55
|
+
let(:test_args) { [ '--backlog=500' ] }
|
|
56
|
+
|
|
57
|
+
it 'sends the backlog option to the runner' do
|
|
58
|
+
::Protobuf::Rpc::SocketRunner.should_receive(:run) do |options|
|
|
59
|
+
options[:backlog].should eq 500
|
|
60
|
+
end
|
|
61
|
+
described_class.start(args)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context 'threshold option' do
|
|
66
|
+
let(:test_args) { [ '--threshold=500' ] }
|
|
67
|
+
|
|
68
|
+
it 'sends the backlog option to the runner' do
|
|
69
|
+
::Protobuf::Rpc::SocketRunner.should_receive(:run) do |options|
|
|
70
|
+
options[:threshold].should eq 500
|
|
71
|
+
end
|
|
72
|
+
described_class.start(args)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
context 'log options' do
|
|
77
|
+
let(:test_args) { [ '--log=mylog.log', '--level=0' ] }
|
|
78
|
+
|
|
79
|
+
it 'sends the log file and level options to the runner' do
|
|
80
|
+
::Protobuf::Logger.should_receive(:configure) do |options|
|
|
81
|
+
options[:file].should eq 'mylog.log'
|
|
82
|
+
options[:level].should eq 0
|
|
83
|
+
end
|
|
84
|
+
described_class.start(args)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
context 'when debugging' do
|
|
88
|
+
let(:test_args) { [ '--level=3', '--debug' ] }
|
|
89
|
+
|
|
90
|
+
it 'overrides the log-level to DEBUG' do
|
|
91
|
+
::Protobuf::Logger.should_receive(:configure) do |options|
|
|
92
|
+
options[:level].should eq ::Logger::DEBUG
|
|
93
|
+
end
|
|
94
|
+
described_class.start(args)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
context 'gc options' do
|
|
100
|
+
|
|
101
|
+
context 'when gc options are not present' do
|
|
102
|
+
let(:test_args) { [] }
|
|
103
|
+
|
|
104
|
+
it 'sets both request and serialization pausing to false' do
|
|
105
|
+
described_class.start(args)
|
|
106
|
+
::Protobuf.gc_pause_server_request?.should be_false
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
context 'request pausing' do
|
|
111
|
+
let(:test_args) { [ '--gc_pause_request' ] }
|
|
112
|
+
|
|
113
|
+
it 'sets the configuration option to GC pause server request' do
|
|
114
|
+
described_class.start(args)
|
|
115
|
+
::Protobuf.gc_pause_server_request?.should be_true
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
context 'deprecation options' do
|
|
121
|
+
context 'when not given' do
|
|
122
|
+
let(:test_args) { [] }
|
|
123
|
+
|
|
124
|
+
it 'sets the deprecation warning flag to its default value' do
|
|
125
|
+
described_class.start(args)
|
|
126
|
+
::Protobuf.print_deprecation_warnings?.should be_true
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
context 'when enabled' do
|
|
131
|
+
let(:test_args) { [ '--print_deprecation_warnings' ] }
|
|
132
|
+
|
|
133
|
+
it 'sets the deprecation warning flag to true' do
|
|
134
|
+
described_class.start(args)
|
|
135
|
+
::Protobuf.print_deprecation_warnings?.should be_true
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
context 'when disabled' do
|
|
140
|
+
let(:test_args) { [ '--no-print_deprecation_warnings' ] }
|
|
141
|
+
|
|
142
|
+
it 'sets the deprecation warning flag to false' do
|
|
143
|
+
described_class.start(args)
|
|
144
|
+
::Protobuf.print_deprecation_warnings?.should be_false
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
context 'run modes' do
|
|
150
|
+
|
|
151
|
+
context 'socket' do
|
|
152
|
+
let(:test_args) { [ '--socket' ] }
|
|
153
|
+
|
|
154
|
+
before do
|
|
155
|
+
::Protobuf::Rpc::EventedRunner.should_not_receive(:run)
|
|
156
|
+
::Protobuf::Rpc::ZmqRunner.should_not_receive(:run)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
it 'is activated by the --socket switch' do
|
|
160
|
+
::Protobuf::Rpc::SocketRunner.should_receive(:run)
|
|
161
|
+
described_class.start(args)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
it 'configures the connector type to be socket' do
|
|
165
|
+
load "protobuf/socket.rb"
|
|
166
|
+
::Protobuf.connector_type.should == :socket
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
context 'evented' do
|
|
171
|
+
let(:test_args) { [ '--evented' ] }
|
|
172
|
+
|
|
173
|
+
before do
|
|
174
|
+
::Protobuf::Rpc::SocketRunner.should_not_receive(:run)
|
|
175
|
+
::Protobuf::Rpc::ZmqRunner.should_not_receive(:run)
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
it 'is activated by the --evented switch' do
|
|
179
|
+
::Protobuf::Rpc::EventedRunner.should_receive(:run)
|
|
180
|
+
described_class.start(args)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it 'configures the connector type to be evented' do
|
|
184
|
+
load "protobuf/evented.rb"
|
|
185
|
+
::Protobuf.connector_type.should == :evented
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
context 'zmq' do
|
|
190
|
+
let(:test_args) { [ '--zmq' ] }
|
|
191
|
+
|
|
192
|
+
before do
|
|
193
|
+
::Protobuf::Rpc::SocketRunner.should_not_receive(:run)
|
|
194
|
+
::Protobuf::Rpc::EventedRunner.should_not_receive(:run)
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it 'is activated by the --zmq switch' do
|
|
198
|
+
::Protobuf::Rpc::ZmqRunner.should_receive(:run)
|
|
199
|
+
described_class.start(args)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
it 'configures the connector type to be zmq' do
|
|
203
|
+
load "protobuf/zmq.rb"
|
|
204
|
+
::Protobuf.connector_type.should == :zmq
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Protobuf::Enum do
|
|
4
|
+
let(:name) { :THREE }
|
|
5
|
+
let(:tag) { 3 }
|
|
6
|
+
|
|
7
|
+
before(:all) do
|
|
8
|
+
Test::EnumTestType.define(name, tag)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe '.define' do
|
|
12
|
+
it 'defines a constant enum value on the parent class' do
|
|
13
|
+
Test::EnumTestType.constants.should include(name)
|
|
14
|
+
Test::EnumTestType::THREE.should be_a(Protobuf::EnumValue)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '.fetch' do
|
|
19
|
+
context 'when value is an EnumValue' do
|
|
20
|
+
it 'responds with that object' do
|
|
21
|
+
Test::EnumTestType.fetch(Test::EnumTestType::THREE).should eq Test::EnumTestType::THREE
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context 'when value can be coerced to a symbol' do
|
|
26
|
+
it 'fetches based on the symbol name value' do
|
|
27
|
+
Test::EnumTestType.fetch("ONE").should eq Test::EnumTestType::ONE
|
|
28
|
+
Test::EnumTestType.fetch(:ONE).should eq Test::EnumTestType::ONE
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context 'when value can be coerced to an integer' do
|
|
33
|
+
it 'fetches based on the integer tag value' do
|
|
34
|
+
Test::EnumTestType.fetch(3.0).should eq Test::EnumTestType::THREE
|
|
35
|
+
Test::EnumTestType.fetch(3).should eq Test::EnumTestType::THREE
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context 'when value is not an applicable type' do
|
|
40
|
+
it 'returns a nil' do
|
|
41
|
+
Test::EnumTestType.fetch(Test::Resource.new).should be_nil
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe '.enum_by_value' do
|
|
47
|
+
it 'gets the EnumValue corresponding to the given value (tag)' do
|
|
48
|
+
Test::EnumTestType.enum_by_value(tag).should eq Test::EnumTestType::THREE
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe '.name_by_value' do
|
|
53
|
+
it 'gets the name of the enum corresponding to the given value (tag)' do
|
|
54
|
+
Test::EnumTestType.name_by_value(tag).should eq name
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
context 'when given name is nil' do
|
|
58
|
+
it 'returns a nil' do
|
|
59
|
+
Test::EnumTestType.name_by_value(nil).should be_nil
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe '.valid_tag?' do
|
|
65
|
+
context 'when tag is defined' do
|
|
66
|
+
specify { Test::EnumTestType.valid_tag?(tag).should be_true }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
context 'when tag is not defined' do
|
|
70
|
+
specify { Test::EnumTestType.valid_tag?(300).should be_false }
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe '.value_by_name' do
|
|
75
|
+
it 'gets the EnumValue corresponding to the given name' do
|
|
76
|
+
Test::EnumTestType.value_by_name(name).should eq Test::EnumTestType::THREE
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
describe '.values' do
|
|
81
|
+
it 'provides a hash of defined EnumValues' do
|
|
82
|
+
Test::EnumTestType.values.should eq({
|
|
83
|
+
:ONE => Test::EnumTestType::ONE,
|
|
84
|
+
:TWO => Test::EnumTestType::TWO,
|
|
85
|
+
:THREE => Test::EnumTestType::THREE
|
|
86
|
+
})
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
context 'when coercing from enum' do
|
|
91
|
+
subject { Test::StatusType::PENDING }
|
|
92
|
+
it { should eq(0) }
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
context 'when coercing from integer' do
|
|
96
|
+
specify { 0.should eq(Test::StatusType::PENDING) }
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Protobuf::EnumValue do
|
|
4
|
+
|
|
5
|
+
subject { Test::EnumTestType::ONE }
|
|
6
|
+
its(:class) { should eq(Fixnum) }
|
|
7
|
+
its(:parent_class) { should eq(Test::EnumTestType) }
|
|
8
|
+
its(:name) { should eq(:ONE) }
|
|
9
|
+
its(:value) { should eq(1) }
|
|
10
|
+
its(:to_hash_value) { should eq(1) }
|
|
11
|
+
its(:to_s) { should eq("1") }
|
|
12
|
+
its(:inspect) { should eq('#<Protobuf::EnumValue Test::EnumTestType::ONE=1>') }
|
|
13
|
+
specify { subject.to_s(:name).should eq("ONE") }
|
|
14
|
+
|
|
15
|
+
end
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
require 'protobuf/logger'
|
|
2
|
+
require 'stringio'
|
|
3
|
+
|
|
4
|
+
describe Protobuf::Logger do
|
|
5
|
+
|
|
6
|
+
subject { Protobuf::Logger }
|
|
7
|
+
|
|
8
|
+
before(:each) do
|
|
9
|
+
Protobuf::Logger.reset_device!
|
|
10
|
+
Protobuf::Logger.file = '/dev/null'
|
|
11
|
+
Protobuf::Logger.level = ::Logger::INFO
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe '.instance' do
|
|
15
|
+
|
|
16
|
+
it 'doesn\'t create a logger if the file was not set' do
|
|
17
|
+
subject.file = nil
|
|
18
|
+
subject.instance.should be_nil
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'doesn\'t create a logger if the level was not set' do
|
|
22
|
+
subject.level = nil
|
|
23
|
+
subject.instance.should be_nil
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'gets a new instance of the logger when file and level are set' do
|
|
27
|
+
subject.file.should_not be_nil
|
|
28
|
+
subject.level.should_not be_nil
|
|
29
|
+
subject.instance.should_not be_nil
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'keeps the same object from multiple calls to instance' do
|
|
33
|
+
subject.instance === subject.instance
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe '.configure' do
|
|
39
|
+
before(:each) { subject.reset_device! }
|
|
40
|
+
it 'sets the file and level in one call' do
|
|
41
|
+
subject.file.should_not be
|
|
42
|
+
subject.level.should_not be
|
|
43
|
+
subject.instance.should_not be
|
|
44
|
+
subject.configure :file => 'myfile.log', :level => ::Logger::WARN
|
|
45
|
+
subject.file.should == 'myfile.log'
|
|
46
|
+
subject.level.should == ::Logger::WARN
|
|
47
|
+
subject.instance.level.should == ::Logger::WARN
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe '.reset_device!' do
|
|
53
|
+
|
|
54
|
+
it 'resets the logger instance, file, and level' do
|
|
55
|
+
subject.instance.should be
|
|
56
|
+
subject.file.should be
|
|
57
|
+
subject.level.should be
|
|
58
|
+
subject.reset_device!
|
|
59
|
+
subject.instance.should_not be
|
|
60
|
+
subject.file.should_not be
|
|
61
|
+
subject.level.should_not be
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
context 'when logging' do
|
|
67
|
+
|
|
68
|
+
it 'doesn\'t raise errors when log instance is nil' do
|
|
69
|
+
subject.reset_device!
|
|
70
|
+
subject.instance.should be_nil
|
|
71
|
+
expect {
|
|
72
|
+
subject.debug 'No errors here'
|
|
73
|
+
subject.info 'No errors here'
|
|
74
|
+
subject.warn 'No errors here'
|
|
75
|
+
subject.error 'No errors here'
|
|
76
|
+
subject.fatal 'No errors here'
|
|
77
|
+
subject.add 'No errors here'
|
|
78
|
+
subject.log 'No errors here'
|
|
79
|
+
}.to_not raise_error
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it 'logs correctly when instance is valid' do
|
|
83
|
+
subject.instance.should_not be_nil
|
|
84
|
+
subject.instance.should_receive(:info).with('Should log great')
|
|
85
|
+
subject.info 'Should log great'
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
describe Protobuf::Logger::LogMethods do
|
|
91
|
+
|
|
92
|
+
context 'when included in another class' do
|
|
93
|
+
|
|
94
|
+
before(:all) do
|
|
95
|
+
class MyTestClass
|
|
96
|
+
include Protobuf::Logger::LogMethods
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
subject { MyTestClass.new }
|
|
101
|
+
|
|
102
|
+
it { should respond_to(:log_debug) }
|
|
103
|
+
it { should respond_to(:log_info) }
|
|
104
|
+
it { should respond_to(:log_warn) }
|
|
105
|
+
it { should respond_to(:log_error) }
|
|
106
|
+
it { should respond_to(:log_fatal) }
|
|
107
|
+
it { should respond_to(:log_add) }
|
|
108
|
+
it { should respond_to(:log_log) }
|
|
109
|
+
|
|
110
|
+
context '#log_exception' do
|
|
111
|
+
it 'logs the exception message as an error and backtrace as debug' do
|
|
112
|
+
subject.should_receive(:log_error).twice
|
|
113
|
+
subject.should_receive(:log_debug)
|
|
114
|
+
subject.log_exception(RuntimeError.new('this is an exception'))
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
its(:log_signature) { should eq "[MyTestClass]" }
|
|
119
|
+
describe '#sign_message' do
|
|
120
|
+
specify { subject.sign_message("this is a test").should eq "[MyTestClass] this is a test" }
|
|
121
|
+
specify { subject.class.sign_message("this is a test").should eq "[MyTestClass] this is a test" }
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it 'passes all embedded log calls to Logger instance' do
|
|
125
|
+
Protobuf::Logger.instance.should_receive(:debug).with('[MyTestClass] log this')
|
|
126
|
+
subject.log_debug('log this')
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class EncoderTest
|
|
4
|
+
extend ::Protobuf::Encoder
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe Protobuf::Encoder do
|
|
8
|
+
describe '#encode' do
|
|
9
|
+
context "when there's no value for a required field" do
|
|
10
|
+
let(:message) { ::Test::Resource.new }
|
|
11
|
+
let(:stream) { StringIO.new }
|
|
12
|
+
it "raises a 'message not initialized' error" do
|
|
13
|
+
expect {
|
|
14
|
+
EncoderTest.__send__(:encode, stream, message)
|
|
15
|
+
}.to raise_error(Protobuf::NotInitializedError, /message.*not initialized/i)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|