protobuf 2.8.13 → 3.0.0.rc1
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.
- checksums.yaml +4 -4
- data/CHANGES.md +84 -5
- data/CONTRIBUTING.md +3 -3
- data/Rakefile +46 -7
- data/lib/protobuf/cli.rb +2 -20
- data/lib/protobuf/decoder.rb +74 -0
- data/lib/protobuf/deprecator.rb +42 -0
- data/lib/protobuf/descriptors/google/protobuf/compiler/plugin.pb.rb +17 -16
- data/lib/protobuf/descriptors/google/protobuf/descriptor.pb.rb +86 -85
- data/lib/protobuf/encoder.rb +62 -0
- data/lib/protobuf/enum.rb +298 -37
- data/lib/protobuf/field/base_field.rb +41 -27
- data/lib/protobuf/field/bool_field.rb +22 -4
- data/lib/protobuf/field/bytes_field.rb +36 -15
- data/lib/protobuf/field/double_field.rb +10 -3
- data/lib/protobuf/field/enum_field.rb +21 -18
- data/lib/protobuf/field/field_array.rb +26 -16
- data/lib/protobuf/field/fixed32_field.rb +10 -4
- data/lib/protobuf/field/fixed64_field.rb +10 -3
- data/lib/protobuf/field/float_field.rb +18 -5
- data/lib/protobuf/field/int32_field.rb +14 -4
- data/lib/protobuf/field/int64_field.rb +14 -4
- data/lib/protobuf/field/integer_field.rb +9 -4
- data/lib/protobuf/field/message_field.rb +16 -7
- data/lib/protobuf/field/sfixed32_field.rb +10 -3
- data/lib/protobuf/field/sfixed64_field.rb +12 -7
- data/lib/protobuf/field/signed_integer_field.rb +7 -0
- data/lib/protobuf/field/sint32_field.rb +14 -4
- data/lib/protobuf/field/sint64_field.rb +14 -4
- data/lib/protobuf/field/string_field.rb +11 -1
- data/lib/protobuf/field/uint32_field.rb +14 -4
- data/lib/protobuf/field/uint64_field.rb +14 -4
- data/lib/protobuf/field/varint_field.rb +11 -9
- data/lib/protobuf/field.rb +42 -25
- data/lib/protobuf/generators/enum_generator.rb +12 -1
- data/lib/protobuf/generators/field_generator.rb +1 -1
- data/lib/protobuf/lifecycle.rb +3 -4
- data/lib/protobuf/message/fields.rb +122 -0
- data/lib/protobuf/message/serialization.rb +84 -0
- data/lib/protobuf/message.rb +21 -221
- data/lib/protobuf/optionable.rb +23 -0
- data/lib/protobuf/rpc/client.rb +2 -4
- data/lib/protobuf/rpc/connector.rb +0 -2
- data/lib/protobuf/rpc/connectors/common.rb +2 -2
- data/lib/protobuf/rpc/dynamic_discovery.pb.rb +14 -16
- data/lib/protobuf/rpc/env.rb +58 -0
- data/lib/protobuf/rpc/error.rb +8 -5
- data/lib/protobuf/rpc/middleware/exception_handler.rb +36 -0
- data/lib/protobuf/rpc/middleware/logger.rb +91 -0
- data/lib/protobuf/rpc/middleware/request_decoder.rb +83 -0
- data/lib/protobuf/rpc/middleware/response_encoder.rb +88 -0
- data/lib/protobuf/rpc/middleware/runner.rb +18 -0
- data/lib/protobuf/rpc/middleware.rb +25 -0
- data/lib/protobuf/rpc/rpc.pb.rb +15 -16
- data/lib/protobuf/rpc/server.rb +14 -64
- data/lib/protobuf/rpc/servers/socket/server.rb +0 -2
- data/lib/protobuf/rpc/servers/socket/worker.rb +11 -15
- data/lib/protobuf/rpc/servers/zmq/util.rb +4 -1
- data/lib/protobuf/rpc/servers/zmq/worker.rb +5 -13
- data/lib/protobuf/rpc/servers/zmq_runner.rb +1 -1
- data/lib/protobuf/rpc/service.rb +38 -72
- data/lib/protobuf/rpc/service_dispatcher.rb +20 -108
- data/lib/protobuf/version.rb +1 -2
- data/lib/protobuf.rb +5 -13
- data/protobuf.gemspec +5 -5
- data/spec/benchmark/tasks.rb +2 -77
- data/spec/functional/zmq_server_spec.rb +13 -21
- data/spec/lib/protobuf/cli_spec.rb +5 -43
- data/spec/lib/protobuf/enum_spec.rb +194 -61
- data/spec/lib/protobuf/field_spec.rb +194 -0
- data/spec/lib/protobuf/generators/enum_generator_spec.rb +24 -1
- data/spec/lib/protobuf/generators/field_generator_spec.rb +6 -6
- data/spec/lib/protobuf/message_spec.rb +52 -70
- data/spec/lib/protobuf/optionable_spec.rb +46 -0
- data/spec/lib/protobuf/rpc/client_spec.rb +1 -93
- data/spec/lib/protobuf/rpc/connector_spec.rb +1 -7
- data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +8 -0
- data/spec/lib/protobuf/rpc/middleware/exception_handler_spec.rb +62 -0
- data/spec/lib/protobuf/rpc/middleware/logger_spec.rb +49 -0
- data/spec/lib/protobuf/rpc/middleware/request_decoder_spec.rb +115 -0
- data/spec/lib/protobuf/rpc/middleware/response_encoder_spec.rb +75 -0
- data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +0 -6
- data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +10 -0
- data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +30 -105
- data/spec/lib/protobuf/rpc/service_filters_spec.rb +4 -4
- data/spec/lib/protobuf/rpc/service_spec.rb +20 -24
- data/spec/lib/protobuf_spec.rb +3 -3
- data/spec/spec_helper.rb +5 -4
- data/spec/support/packed_field.rb +15 -14
- data/spec/support/server.rb +4 -21
- data/spec/support/test/defaults.pb.rb +4 -4
- data/spec/support/test/enum.pb.rb +13 -1
- data/spec/support/test/enum.proto +15 -0
- data/spec/support/test/extended.pb.rb +1 -1
- data/spec/support/test/google_unittest.pb.rb +239 -241
- data/spec/support/test/google_unittest_import.pb.rb +2 -2
- data/spec/support/test/multi_field_extensions.pb.rb +2 -2
- data/spec/support/test/resource.pb.rb +19 -18
- data/spec/support/test/resource.proto +1 -0
- data/spec/support/test/resource_service.rb +5 -0
- metadata +78 -57
- data/bin/rprotoc +0 -8
- data/lib/protobuf/enum_value.rb +0 -85
- data/lib/protobuf/evented.rb +0 -37
- data/lib/protobuf/ext/eventmachine.rb +0 -14
- data/lib/protobuf/field/extension_fields.rb +0 -32
- data/lib/protobuf/message/decoder.rb +0 -72
- data/lib/protobuf/message/message.rb +0 -1
- data/lib/protobuf/rpc/connectors/em_client.rb +0 -84
- data/lib/protobuf/rpc/connectors/eventmachine.rb +0 -87
- data/lib/protobuf/rpc/servers/evented/server.rb +0 -36
- data/lib/protobuf/rpc/servers/evented_runner.rb +0 -31
- data/spec/functional/embedded_service_spec.rb +0 -7
- data/spec/functional/evented_server_spec.rb +0 -64
- data/spec/lib/protobuf/enum_value_spec.rb +0 -29
- data/spec/lib/protobuf/rpc/servers/evented_server_spec.rb +0 -19
@@ -1,32 +0,0 @@
|
|
1
|
-
module Protobuf
|
2
|
-
module Field
|
3
|
-
class ExtensionFields < Array
|
4
|
-
##
|
5
|
-
# Constructor
|
6
|
-
#
|
7
|
-
def initialize
|
8
|
-
@ranges = []
|
9
|
-
end
|
10
|
-
|
11
|
-
##
|
12
|
-
# Public Instance Methods
|
13
|
-
#
|
14
|
-
|
15
|
-
# Append a range to the list of ranges.
|
16
|
-
def add_range(range = (0..-1))
|
17
|
-
@ranges << range
|
18
|
-
end
|
19
|
-
|
20
|
-
# Set value at tag location, if tag is in a valid range.
|
21
|
-
def []=(key, value)
|
22
|
-
raise RangeError, "#{key} is not in #{@ranges.join(', ')}" unless include_tag?(key)
|
23
|
-
super
|
24
|
-
end
|
25
|
-
|
26
|
-
# Check if the given tag exists in any of the defined ranges.
|
27
|
-
def include_tag?(tag)
|
28
|
-
@ranges.any? { |range| range.include?(tag) }
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
require 'protobuf/wire_type'
|
2
|
-
require 'protobuf/exceptions'
|
3
|
-
|
4
|
-
module Protobuf
|
5
|
-
|
6
|
-
module Decoder
|
7
|
-
|
8
|
-
module_function
|
9
|
-
|
10
|
-
# Read bytes from +stream+ and pass to +message+ object.
|
11
|
-
def decode(stream, message)
|
12
|
-
until stream.eof?
|
13
|
-
tag, wire_type = read_key(stream)
|
14
|
-
bytes =
|
15
|
-
case wire_type
|
16
|
-
when ::Protobuf::WireType::VARINT then
|
17
|
-
read_varint(stream)
|
18
|
-
when ::Protobuf::WireType::FIXED64 then
|
19
|
-
read_fixed64(stream)
|
20
|
-
when ::Protobuf::WireType::LENGTH_DELIMITED then
|
21
|
-
read_length_delimited(stream)
|
22
|
-
when ::Protobuf::WireType::FIXED32 then
|
23
|
-
read_fixed32(stream)
|
24
|
-
when ::Protobuf::WireType::START_GROUP then
|
25
|
-
raise NotImplementedError, 'Group is deprecated.'
|
26
|
-
when ::Protobuf::WireType::END_GROUP then
|
27
|
-
raise NotImplementedError, 'Group is deprecated.'
|
28
|
-
else
|
29
|
-
raise InvalidWireType, wire_type
|
30
|
-
end
|
31
|
-
message.set_field(tag, bytes)
|
32
|
-
end
|
33
|
-
message
|
34
|
-
end
|
35
|
-
|
36
|
-
# Read key pair (tag and wire-type) from +stream+.
|
37
|
-
def read_key(stream)
|
38
|
-
bits = read_varint(stream)
|
39
|
-
wire_type = bits & 0x07
|
40
|
-
tag = bits >> 3
|
41
|
-
[tag, wire_type]
|
42
|
-
end
|
43
|
-
|
44
|
-
# Read varint integer value from +stream+.
|
45
|
-
def read_varint(stream)
|
46
|
-
value = index = 0
|
47
|
-
begin
|
48
|
-
byte = stream.readbyte
|
49
|
-
value |= (byte & 0x7f) << (7 * index)
|
50
|
-
index += 1
|
51
|
-
end while (byte & 0x80).nonzero?
|
52
|
-
value
|
53
|
-
end
|
54
|
-
|
55
|
-
# Read 32-bit string value from +stream+.
|
56
|
-
def read_fixed32(stream)
|
57
|
-
stream.read(4)
|
58
|
-
end
|
59
|
-
|
60
|
-
# Read 64-bit string value from +stream+.
|
61
|
-
def read_fixed64(stream)
|
62
|
-
stream.read(8)
|
63
|
-
end
|
64
|
-
|
65
|
-
# Read length-delimited string value from +stream+.
|
66
|
-
def read_length_delimited(stream)
|
67
|
-
value_length = read_varint(stream)
|
68
|
-
stream.read(value_length)
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'protobuf/message' # Need to get rid of this
|
@@ -1,84 +0,0 @@
|
|
1
|
-
# Handles client connections to the server
|
2
|
-
module Protobuf
|
3
|
-
module Rpc
|
4
|
-
module Connectors
|
5
|
-
|
6
|
-
class EMClient < EM::Connection
|
7
|
-
include Protobuf::Logger::LogMethods
|
8
|
-
include Protobuf::Rpc::Connectors::Common
|
9
|
-
|
10
|
-
attr_reader :options, :request, :response
|
11
|
-
attr_reader :error, :error_reason, :error_message
|
12
|
-
|
13
|
-
##
|
14
|
-
# Constructor
|
15
|
-
#
|
16
|
-
def initialize(options = {}, &failure_cb)
|
17
|
-
@failure_cb = failure_cb
|
18
|
-
@options = DEFAULT_OPTIONS.merge(options)
|
19
|
-
@response_buffer = ::Protobuf::Rpc::Buffer.new(:read)
|
20
|
-
verify_options!
|
21
|
-
|
22
|
-
log_debug { sign_message("Client Initialized: #{options.inspect}") }
|
23
|
-
rescue => e
|
24
|
-
fail(:RPC_ERROR, "Failed to initialize connection: #{e.message}")
|
25
|
-
end
|
26
|
-
|
27
|
-
##
|
28
|
-
# Class Methods
|
29
|
-
#
|
30
|
-
def self.connect(options = {})
|
31
|
-
options = DEFAULT_OPTIONS.merge(options)
|
32
|
-
log_debug { sign_message("Connecting to server: #{options.inspect}") }
|
33
|
-
EM.connect(options[:host], options[:port], self, options)
|
34
|
-
end
|
35
|
-
|
36
|
-
# turn post_init back into a no-op for event machine
|
37
|
-
def post_init
|
38
|
-
end
|
39
|
-
|
40
|
-
##
|
41
|
-
# Instance Methods
|
42
|
-
#
|
43
|
-
# Completion callback registration
|
44
|
-
def on_complete(&complete_cb)
|
45
|
-
@complete_cb = complete_cb
|
46
|
-
end
|
47
|
-
|
48
|
-
# Failure callback registration
|
49
|
-
def on_failure(&failure_cb)
|
50
|
-
@failure_cb = failure_cb
|
51
|
-
end
|
52
|
-
|
53
|
-
# Success callback registration
|
54
|
-
def on_success(&success_cb)
|
55
|
-
@success_cb = success_cb
|
56
|
-
end
|
57
|
-
|
58
|
-
def receive_data(data)
|
59
|
-
log_debug { sign_message("receive_data: #{data}") }
|
60
|
-
@response_buffer << data
|
61
|
-
@response_data = @response_buffer.data
|
62
|
-
parse_response if !@response_data.nil? && @response_buffer.flushed?
|
63
|
-
end
|
64
|
-
|
65
|
-
def send_data
|
66
|
-
request_buffer = ::Protobuf::Rpc::Buffer.new(:write)
|
67
|
-
request_buffer.set_data(@request_data)
|
68
|
-
log_debug { sign_message("sending data: #{request_buffer.inspect}") }
|
69
|
-
super(request_buffer.write)
|
70
|
-
rescue => e
|
71
|
-
fail(:RPC_ERROR, "Connection error: #{e.message}")
|
72
|
-
end
|
73
|
-
|
74
|
-
# overwriting this method for java because it's broken in eventmachine. See https://github.com/eventmachine/eventmachine/issues/14
|
75
|
-
if RUBY_PLATFORM =~ /java/
|
76
|
-
def error?
|
77
|
-
!!@error
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
@@ -1,87 +0,0 @@
|
|
1
|
-
require 'protobuf/rpc/connectors/base'
|
2
|
-
require 'protobuf/rpc/connectors/em_client'
|
3
|
-
|
4
|
-
module Protobuf
|
5
|
-
module Rpc
|
6
|
-
module Connectors
|
7
|
-
class EventMachine < Base
|
8
|
-
|
9
|
-
def send_request
|
10
|
-
ensure_em_running do
|
11
|
-
f = Fiber.current
|
12
|
-
|
13
|
-
::EM.next_tick do
|
14
|
-
log_debug { sign_message('Scheduling EventMachine client request to be created on next tick') }
|
15
|
-
cnxn = EMClient.connect(options, &ensure_cb)
|
16
|
-
cnxn.on_success(&success_cb) if success_cb
|
17
|
-
cnxn.on_failure(&ensure_cb)
|
18
|
-
cnxn.on_complete { resume_fiber(f) }
|
19
|
-
cnxn.setup_connection
|
20
|
-
cnxn.send_data
|
21
|
-
log_debug { sign_message('Connection scheduled') }
|
22
|
-
end
|
23
|
-
|
24
|
-
set_timeout_and_validate_fiber
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# Returns a callable that ensures any errors will be returned to the client
|
29
|
-
#
|
30
|
-
# If a failure callback was set, just use that as a direct assignment
|
31
|
-
# otherwise implement one here that simply throws an exception, since we
|
32
|
-
# don't want to swallow the black holes.
|
33
|
-
#
|
34
|
-
def ensure_cb
|
35
|
-
@ensure_cb ||= (@failure_cb || lambda { |error| raise "#{error.code.name}: #{error.message}" })
|
36
|
-
end
|
37
|
-
|
38
|
-
def log_signature
|
39
|
-
@_log_signature ||= "client-#{self.class}"
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def ensure_em_running(&blk)
|
45
|
-
if ::EM.reactor_running?
|
46
|
-
@using_global_reactor = true
|
47
|
-
yield
|
48
|
-
else
|
49
|
-
@using_global_reactor = false
|
50
|
-
::EM.fiber_run do
|
51
|
-
blk.call
|
52
|
-
::EM.stop
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def resume_fiber(fib)
|
58
|
-
::EM::cancel_timer(@timeout_timer)
|
59
|
-
fib.resume(true)
|
60
|
-
rescue => ex
|
61
|
-
log_exception(ex)
|
62
|
-
message = "Synchronous client failed: #{ex.message}"
|
63
|
-
error_stop_reactor(message)
|
64
|
-
end
|
65
|
-
|
66
|
-
def set_timeout_and_validate_fiber
|
67
|
-
@timeout_timer = ::EM::add_timer(@options[:timeout]) do
|
68
|
-
message = "Client timeout of #{@options[:timeout]} seconds expired"
|
69
|
-
error_stop_reactor(message)
|
70
|
-
end
|
71
|
-
|
72
|
-
Fiber.yield
|
73
|
-
rescue FiberError => ex
|
74
|
-
log_exception(ex)
|
75
|
-
message = "Synchronous calls must be in 'EM.fiber_run' block"
|
76
|
-
error_stop_reactor(message)
|
77
|
-
end
|
78
|
-
|
79
|
-
def error_stop_reactor(message)
|
80
|
-
err = Protobuf::Rpc::ClientError.new(Protobuf::Socketrpc::ErrorReason::RPC_ERROR, message)
|
81
|
-
ensure_cb.call(err)
|
82
|
-
::EM.stop unless @using_global_reactor
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'protobuf/rpc/server'
|
2
|
-
|
3
|
-
module Protobuf
|
4
|
-
module Rpc
|
5
|
-
module Evented
|
6
|
-
class Server < ::EventMachine::Connection
|
7
|
-
include ::Protobuf::Rpc::Server
|
8
|
-
include ::Protobuf::Logger::LogMethods
|
9
|
-
|
10
|
-
# Initialize a new read buffer for storing client request info
|
11
|
-
def post_init
|
12
|
-
initialize_request!
|
13
|
-
@request_buffer = Protobuf::Rpc::Buffer.new(:read)
|
14
|
-
end
|
15
|
-
|
16
|
-
# Receive a chunk of data, potentially flushed to handle_client
|
17
|
-
def receive_data(data)
|
18
|
-
log_debug { sign_message("receive_data: #{data}") }
|
19
|
-
|
20
|
-
@request_buffer << data
|
21
|
-
@request_data = @request_buffer.data
|
22
|
-
|
23
|
-
handle_client if @request_buffer.flushed?
|
24
|
-
end
|
25
|
-
|
26
|
-
def send_data
|
27
|
-
response_buffer = Protobuf::Rpc::Buffer.new(:write)
|
28
|
-
response_buffer.set_data(@response)
|
29
|
-
@stats.response_size = response_buffer.size
|
30
|
-
log_debug { sign_message("sending data: #{response_buffer.inspect}") }
|
31
|
-
super(response_buffer.write)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module Protobuf
|
2
|
-
module Rpc
|
3
|
-
class EventedRunner
|
4
|
-
|
5
|
-
def initialize(options)
|
6
|
-
@options = options
|
7
|
-
end
|
8
|
-
|
9
|
-
def run
|
10
|
-
# Startup and run the rpc server
|
11
|
-
::EventMachine.schedule do
|
12
|
-
::EventMachine.start_server(
|
13
|
-
@options[:host],
|
14
|
-
@options[:port],
|
15
|
-
::Protobuf::Rpc::Evented::Server
|
16
|
-
)
|
17
|
-
end
|
18
|
-
|
19
|
-
# Join or start the reactor
|
20
|
-
yield if block_given?
|
21
|
-
|
22
|
-
::EM.reactor_running? ? ::EM.reactor_thread.join : ::EM.run
|
23
|
-
end
|
24
|
-
|
25
|
-
def stop
|
26
|
-
::EventMachine.stop_event_loop if ::EventMachine.reactor_running?
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,64 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'spec/support/test/resource_service'
|
3
|
-
|
4
|
-
describe 'Functional EventMachine Client' do
|
5
|
-
before(:each) do
|
6
|
-
load 'protobuf/evented.rb'
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'runs fine when required fields are set' do
|
10
|
-
expect {
|
11
|
-
EventMachine.fiber_run do
|
12
|
-
StubServer.new do |server|
|
13
|
-
client = ::Test::ResourceService.client(:timeout => 5)
|
14
|
-
|
15
|
-
client.find(:name => 'Test Name', :active => true) do |c|
|
16
|
-
c.on_success do |succ|
|
17
|
-
succ.name.should eq("Test Name")
|
18
|
-
succ.status.should eq(::Test::StatusType::ENABLED)
|
19
|
-
end
|
20
|
-
|
21
|
-
c.on_failure do |err|
|
22
|
-
raise err.inspect
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
EM.stop
|
27
|
-
end
|
28
|
-
}.to_not raise_error
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'calls the on_failure callback when a message is malformed' do
|
32
|
-
error = nil
|
33
|
-
EventMachine.fiber_run do
|
34
|
-
StubServer.new do |server|
|
35
|
-
request = ::Test::ResourceFindRequest.new(:active => true)
|
36
|
-
client = ::Test::ResourceService.client
|
37
|
-
|
38
|
-
client.find(request) do |c|
|
39
|
-
c.on_success { raise "shouldn't pass"}
|
40
|
-
c.on_failure {|e| error = e}
|
41
|
-
end
|
42
|
-
end
|
43
|
-
EM.stop
|
44
|
-
end
|
45
|
-
error.message.should =~ /name.*required/
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'calls the on_failure callback when the request type is wrong' do
|
49
|
-
error = nil
|
50
|
-
EventMachine.fiber_run do
|
51
|
-
StubServer.new do |server|
|
52
|
-
request = ::Test::Resource.new(:name => 'Test Name')
|
53
|
-
client = ::Test::ResourceService.client
|
54
|
-
|
55
|
-
client.find(request) do |c|
|
56
|
-
c.on_success { raise "shouldn't pass"}
|
57
|
-
c.on_failure {|e| error = e}
|
58
|
-
end
|
59
|
-
end
|
60
|
-
EM.stop
|
61
|
-
end
|
62
|
-
error.message.should =~ /expected request.*ResourceFindRequest.*Resource instead/i
|
63
|
-
end
|
64
|
-
end
|
@@ -1,29 +0,0 @@
|
|
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
|
-
it "can be used as the index to an array" do
|
16
|
-
array = [0, 1, 2, 3]
|
17
|
-
array[::Test::EnumTestType::ONE].should eq(1)
|
18
|
-
end
|
19
|
-
|
20
|
-
describe '#try' do
|
21
|
-
specify { subject.try(:class).should eq subject.class }
|
22
|
-
specify { subject.try(:name).should eq subject.name }
|
23
|
-
specify { subject.try(:value).should eq subject.value }
|
24
|
-
specify { subject.try(:to_i).should eq subject.to_i }
|
25
|
-
specify { subject.try(:to_int).should eq subject.to_int }
|
26
|
-
specify { subject.try { |yielded| yielded.should eq subject } }
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'spec/support/test/resource_service'
|
3
|
-
require 'protobuf/rpc/servers/evented_runner'
|
4
|
-
require 'protobuf/evented'
|
5
|
-
|
6
|
-
describe Protobuf::Rpc::Evented::Server do
|
7
|
-
|
8
|
-
it "provides a Runner class" do
|
9
|
-
runner_class = described_class.to_s.gsub(/Evented::Server/, "EventedRunner")
|
10
|
-
expect { runner_class.constantize }.to_not raise_error
|
11
|
-
end
|
12
|
-
|
13
|
-
it "Runner provides a stop method" do
|
14
|
-
runner_class = described_class.to_s.gsub(/Evented::Server/, "EventedRunner").constantize
|
15
|
-
runner = runner_class.new({})
|
16
|
-
runner.respond_to?(:stop).should be_true
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|