protobuffy 3.6.0 → 4.0.0
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/.gitignore +1 -0
- data/.rubocop.yml +67 -0
- data/.rubocop_todo.yml +145 -0
- data/.travis.yml +25 -5
- data/CHANGES.md +55 -0
- data/CONTRIBUTING.md +1 -1
- data/LICENSE.txt +17 -9
- data/README.md +13 -12
- data/Rakefile +15 -11
- data/bin/protoc-gen-ruby +8 -3
- data/bin/rpc_server +1 -0
- data/examples/lib/example/reverse-client.rb +2 -2
- data/install-protobuf.sh +28 -0
- data/lib/protobuf.rb +57 -53
- data/lib/protobuf/cli.rb +94 -74
- data/lib/protobuf/code_generator.rb +60 -9
- data/lib/protobuf/decoder.rb +19 -65
- data/lib/protobuf/deprecation.rb +117 -0
- data/lib/protobuf/descriptors/google/protobuf/compiler/plugin.pb.rb +11 -1
- data/lib/protobuf/descriptors/google/protobuf/descriptor.pb.rb +55 -3
- data/lib/protobuf/encoder.rb +13 -53
- data/lib/protobuf/enum.rb +58 -63
- data/lib/protobuf/field.rb +4 -4
- data/lib/protobuf/field/base_field.rb +101 -173
- data/lib/protobuf/field/bool_field.rb +17 -11
- data/lib/protobuf/field/bytes_field.rb +21 -35
- data/lib/protobuf/field/double_field.rb +0 -1
- data/lib/protobuf/field/enum_field.rb +23 -22
- data/lib/protobuf/field/field_array.rb +5 -4
- data/lib/protobuf/field/fixed32_field.rb +1 -1
- data/lib/protobuf/field/fixed64_field.rb +0 -1
- data/lib/protobuf/field/float_field.rb +4 -1
- data/lib/protobuf/field/int32_field.rb +0 -1
- data/lib/protobuf/field/int64_field.rb +0 -1
- data/lib/protobuf/field/integer_field.rb +0 -1
- data/lib/protobuf/field/message_field.rb +13 -28
- data/lib/protobuf/field/sfixed32_field.rb +0 -1
- data/lib/protobuf/field/sfixed64_field.rb +0 -1
- data/lib/protobuf/field/signed_integer_field.rb +0 -1
- data/lib/protobuf/field/sint32_field.rb +0 -1
- data/lib/protobuf/field/sint64_field.rb +0 -1
- data/lib/protobuf/field/string_field.rb +2 -4
- data/lib/protobuf/field/uint32_field.rb +0 -1
- data/lib/protobuf/field/uint64_field.rb +0 -1
- data/lib/protobuf/field/varint_field.rb +30 -13
- data/lib/protobuf/generators/base.rb +30 -16
- data/lib/protobuf/generators/enum_generator.rb +6 -9
- data/lib/protobuf/generators/extension_generator.rb +1 -2
- data/lib/protobuf/generators/field_generator.rb +25 -13
- data/lib/protobuf/generators/file_generator.rb +157 -35
- data/lib/protobuf/generators/group_generator.rb +22 -17
- data/lib/protobuf/generators/message_generator.rb +13 -14
- data/lib/protobuf/generators/option_generator.rb +17 -0
- data/lib/protobuf/generators/printable.rb +12 -13
- data/lib/protobuf/generators/service_generator.rb +2 -3
- data/lib/protobuf/http.rb +2 -2
- data/lib/protobuf/lifecycle.rb +20 -33
- data/lib/protobuf/logging.rb +39 -0
- data/lib/protobuf/message.rb +114 -47
- data/lib/protobuf/message/fields.rb +170 -88
- data/lib/protobuf/message/serialization.rb +19 -18
- data/lib/protobuf/optionable.rb +53 -6
- data/lib/protobuf/rpc/buffer.rb +18 -19
- data/lib/protobuf/rpc/client.rb +22 -50
- data/lib/protobuf/rpc/connectors/base.rb +177 -12
- data/lib/protobuf/rpc/connectors/http.rb +14 -9
- data/lib/protobuf/rpc/connectors/ping.rb +89 -0
- data/lib/protobuf/rpc/connectors/socket.rb +13 -8
- data/lib/protobuf/rpc/connectors/zmq.rb +178 -73
- data/lib/protobuf/rpc/dynamic_discovery.pb.rb +4 -1
- data/lib/protobuf/rpc/env.rb +12 -12
- data/lib/protobuf/rpc/error.rb +3 -3
- data/lib/protobuf/rpc/error/client_error.rb +4 -4
- data/lib/protobuf/rpc/error/server_error.rb +9 -9
- data/lib/protobuf/rpc/middleware/exception_handler.rb +6 -2
- data/lib/protobuf/rpc/middleware/logger.rb +8 -4
- data/lib/protobuf/rpc/middleware/request_decoder.rb +17 -21
- data/lib/protobuf/rpc/middleware/response_encoder.rb +22 -27
- data/lib/protobuf/rpc/middleware/statsd.rb +3 -3
- data/lib/protobuf/rpc/rpc.pb.rb +4 -1
- data/lib/protobuf/rpc/server.rb +1 -1
- data/lib/protobuf/rpc/servers/http/server.rb +19 -17
- data/lib/protobuf/rpc/servers/socket/server.rb +78 -70
- data/lib/protobuf/rpc/servers/socket/worker.rb +4 -4
- data/lib/protobuf/rpc/servers/socket_runner.rb +27 -15
- data/lib/protobuf/rpc/servers/zmq/broker.rb +70 -31
- data/lib/protobuf/rpc/servers/zmq/server.rb +55 -47
- data/lib/protobuf/rpc/servers/zmq/util.rb +14 -13
- data/lib/protobuf/rpc/servers/zmq/worker.rb +16 -16
- data/lib/protobuf/rpc/servers/zmq_runner.rb +26 -7
- data/lib/protobuf/rpc/service.rb +21 -27
- data/lib/protobuf/rpc/service_directory.rb +43 -27
- data/lib/protobuf/rpc/service_dispatcher.rb +9 -10
- data/lib/protobuf/rpc/service_filters.rb +32 -55
- data/lib/protobuf/rpc/stat.rb +4 -8
- data/lib/protobuf/socket.rb +1 -2
- data/lib/protobuf/tasks/compile.rake +3 -4
- data/lib/protobuf/varint.rb +9 -0
- data/lib/protobuf/varint_pure.rb +13 -0
- data/lib/protobuf/version.rb +1 -1
- data/lib/protobuf/zmq.rb +2 -2
- data/proto/google/protobuf/descriptor.proto +190 -31
- data/protobuffy.gemspec +30 -17
- data/spec/benchmark/tasks.rb +27 -19
- data/spec/bin/protoc-gen-ruby_spec.rb +11 -6
- data/spec/encoding/all_types_spec.rb +96 -84
- data/spec/encoding/extreme_values_spec.rb +0 -0
- data/spec/functional/class_inheritance_spec.rb +52 -0
- data/spec/functional/code_generator_spec.rb +38 -0
- data/spec/functional/socket_server_spec.rb +15 -15
- data/spec/functional/zmq_server_spec.rb +29 -27
- data/spec/lib/protobuf/cli_spec.rb +82 -67
- data/spec/lib/protobuf/code_generator_spec.rb +37 -10
- data/spec/lib/protobuf/enum_spec.rb +77 -46
- data/spec/lib/protobuf/field/bool_field_spec.rb +91 -0
- data/spec/lib/protobuf/field/double_field_spec.rb +9 -0
- data/spec/lib/protobuf/field/enum_field_spec.rb +26 -0
- data/spec/lib/protobuf/field/field_array_spec.rb +69 -0
- data/spec/lib/protobuf/field/fixed32_field_spec.rb +7 -0
- data/spec/lib/protobuf/field/fixed64_field_spec.rb +7 -0
- data/spec/lib/protobuf/field/float_field_spec.rb +90 -0
- data/spec/lib/protobuf/field/int32_field_spec.rb +114 -1
- data/spec/lib/protobuf/field/int64_field_spec.rb +7 -0
- data/spec/lib/protobuf/field/message_field_spec.rb +132 -0
- data/spec/lib/protobuf/field/sfixed32_field_spec.rb +9 -0
- data/spec/lib/protobuf/field/sfixed64_field_spec.rb +9 -0
- data/spec/lib/protobuf/field/sint32_field_spec.rb +9 -0
- data/spec/lib/protobuf/field/sint64_field_spec.rb +9 -0
- data/spec/lib/protobuf/field/string_field_spec.rb +44 -11
- data/spec/lib/protobuf/field/uint32_field_spec.rb +7 -0
- data/spec/lib/protobuf/field/uint64_field_spec.rb +7 -0
- data/spec/lib/protobuf/field_spec.rb +4 -6
- data/spec/lib/protobuf/generators/base_spec.rb +80 -13
- data/spec/lib/protobuf/generators/enum_generator_spec.rb +35 -21
- data/spec/lib/protobuf/generators/extension_generator_spec.rb +12 -13
- data/spec/lib/protobuf/generators/field_generator_spec.rb +73 -21
- data/spec/lib/protobuf/generators/file_generator_spec.rb +89 -6
- data/spec/lib/protobuf/generators/service_generator_spec.rb +25 -13
- data/spec/lib/protobuf/lifecycle_spec.rb +25 -20
- data/spec/lib/protobuf/message_spec.rb +578 -79
- data/spec/lib/protobuf/optionable_spec.rb +202 -26
- data/spec/lib/protobuf/rpc/client_spec.rb +16 -16
- data/spec/lib/protobuf/rpc/connectors/base_spec.rb +167 -13
- data/spec/lib/protobuf/rpc/connectors/connector_spec.rb +4 -5
- data/spec/lib/protobuf/rpc/connectors/http_spec.rb +13 -11
- data/spec/lib/protobuf/rpc/connectors/ping_spec.rb +69 -0
- data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +6 -7
- data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +35 -52
- data/spec/lib/protobuf/rpc/middleware/exception_handler_spec.rb +10 -10
- data/spec/lib/protobuf/rpc/middleware/logger_spec.rb +11 -11
- data/spec/lib/protobuf/rpc/middleware/request_decoder_spec.rb +23 -23
- data/spec/lib/protobuf/rpc/middleware/response_encoder_spec.rb +11 -11
- data/spec/lib/protobuf/rpc/middleware/statsd_spec.rb +6 -6
- data/spec/lib/protobuf/rpc/servers/http/server_spec.rb +47 -44
- data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +6 -6
- data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +12 -10
- data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +11 -11
- data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +7 -7
- data/spec/lib/protobuf/rpc/service_directory_spec.rb +47 -49
- data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +8 -25
- data/spec/lib/protobuf/rpc/service_filters_spec.rb +102 -69
- data/spec/lib/protobuf/rpc/service_spec.rb +37 -36
- data/spec/lib/protobuf/rpc/stat_spec.rb +7 -9
- data/spec/lib/protobuf/varint_spec.rb +29 -0
- data/spec/lib/protobuf_spec.rb +55 -28
- data/spec/spec_helper.rb +12 -27
- data/spec/support/all.rb +0 -1
- data/spec/support/packed_field.rb +4 -3
- data/spec/support/{test → protos}/all_types.data.bin +0 -0
- data/spec/support/{test → protos}/all_types.data.txt +0 -0
- data/spec/support/{test → protos}/enum.pb.rb +8 -4
- data/spec/support/{test → protos}/enum.proto +4 -1
- data/spec/support/{test → protos}/extreme_values.data.bin +0 -0
- data/spec/support/protos/google_unittest.bin +0 -0
- data/spec/support/protos/google_unittest.pb.rb +798 -0
- data/spec/support/{test → protos}/google_unittest.proto +237 -66
- data/spec/support/protos/google_unittest_custom_options.bin +0 -0
- data/spec/support/protos/google_unittest_custom_options.pb.rb +268 -0
- data/spec/support/protos/google_unittest_custom_options.proto +424 -0
- data/spec/support/protos/google_unittest_import.pb.rb +55 -0
- data/spec/support/{test → protos}/google_unittest_import.proto +19 -10
- data/spec/support/protos/google_unittest_import_public.pb.rb +31 -0
- data/spec/support/{test → protos}/google_unittest_import_public.proto +8 -5
- data/spec/support/{test → protos}/multi_field_extensions.pb.rb +5 -2
- data/spec/support/{test → protos}/multi_field_extensions.proto +2 -0
- data/spec/support/{test → protos}/resource.pb.rb +47 -11
- data/spec/support/{test → protos}/resource.proto +24 -1
- data/spec/support/resource_service.rb +23 -0
- data/spec/support/server.rb +32 -61
- metadata +119 -59
- data/lib/protobuf/deprecator.rb +0 -42
- data/lib/protobuf/logger.rb +0 -93
- data/lib/protobuf/rpc/connector.rb +0 -21
- data/lib/protobuf/rpc/connectors/common.rb +0 -172
- data/spec/data/data.bin +0 -3
- data/spec/data/types.bin +0 -0
- data/spec/lib/protobuf/logger_spec.rb +0 -145
- data/spec/lib/protobuf/rpc/connector_spec.rb +0 -26
- data/spec/lib/protobuf/rpc/connectors/common_spec.rb +0 -170
- data/spec/support/test/defaults.pb.rb +0 -25
- data/spec/support/test/defaults.proto +0 -9
- data/spec/support/test/extended.pb.rb +0 -22
- data/spec/support/test/extended.proto +0 -10
- data/spec/support/test/google_unittest.pb.rb +0 -543
- data/spec/support/test/google_unittest_import.pb.rb +0 -37
- data/spec/support/test/google_unittest_import_public.pb.rb +0 -8
- data/spec/support/test/resource_service.rb +0 -26
- data/spec/support/tolerance_matcher.rb +0 -40
@@ -0,0 +1,55 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
##
|
4
|
+
# This file is auto-generated. DO NOT EDIT!
|
5
|
+
#
|
6
|
+
require 'protobuf'
|
7
|
+
|
8
|
+
|
9
|
+
##
|
10
|
+
# Imports
|
11
|
+
#
|
12
|
+
require 'protos/google_unittest_import_public.pb'
|
13
|
+
|
14
|
+
module Protobuf_unittest_import
|
15
|
+
::Protobuf::Optionable.inject(self) { ::Google::Protobuf::FileOptions }
|
16
|
+
|
17
|
+
##
|
18
|
+
# Enum Classes
|
19
|
+
#
|
20
|
+
class ImportEnum < ::Protobuf::Enum
|
21
|
+
define :IMPORT_FOO, 7
|
22
|
+
define :IMPORT_BAR, 8
|
23
|
+
define :IMPORT_BAZ, 9
|
24
|
+
end
|
25
|
+
|
26
|
+
class ImportEnumForMap < ::Protobuf::Enum
|
27
|
+
define :UNKNOWN, 0
|
28
|
+
define :FOO, 1
|
29
|
+
define :BAR, 2
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
##
|
34
|
+
# Message Classes
|
35
|
+
#
|
36
|
+
class ImportMessage < ::Protobuf::Message; end
|
37
|
+
|
38
|
+
|
39
|
+
##
|
40
|
+
# File Options
|
41
|
+
#
|
42
|
+
set_option :java_package, "com.google.protobuf.test"
|
43
|
+
set_option :optimize_for, ::Google::Protobuf::FileOptions::OptimizeMode::SPEED
|
44
|
+
set_option :cc_enable_arenas, true
|
45
|
+
|
46
|
+
|
47
|
+
##
|
48
|
+
# Message Fields
|
49
|
+
#
|
50
|
+
class ImportMessage
|
51
|
+
optional :int32, :d, 1
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
// Protocol Buffers - Google's data interchange format
|
2
2
|
// Copyright 2008 Google Inc. All rights reserved.
|
3
|
-
//
|
3
|
+
// https://developers.google.com/protocol-buffers/
|
4
4
|
//
|
5
5
|
// Redistribution and use in source and binary forms, with or without
|
6
6
|
// modification, are permitted provided that the following conditions are
|
@@ -34,23 +34,25 @@
|
|
34
34
|
//
|
35
35
|
// A proto file which is imported by unittest.proto to test importing.
|
36
36
|
|
37
|
+
syntax = "proto2";
|
37
38
|
|
38
39
|
// We don't put this in a package within proto2 because we need to make sure
|
39
40
|
// that the generated code doesn't depend on being in the proto2 namespace.
|
40
41
|
// In test_util.h we do
|
41
42
|
// "using namespace unittest_import = protobuf_unittest_import".
|
42
|
-
package
|
43
|
+
package protobuf_unittest_import;
|
43
44
|
|
44
|
-
|
45
|
-
|
46
|
-
// compiler
|
47
|
-
// import public "test/google_unittest_import_public.proto";
|
45
|
+
option optimize_for = SPEED;
|
46
|
+
option cc_enable_arenas = true;
|
48
47
|
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
// Exercise the java_package option.
|
49
|
+
option java_package = "com.google.protobuf.test";
|
50
|
+
|
51
|
+
// Do not set a java_outer_classname here to verify that Proto2 works without
|
52
|
+
// one.
|
52
53
|
|
53
|
-
|
54
|
+
// Test public import
|
55
|
+
import public "protos/google_unittest_import_public.proto";
|
54
56
|
|
55
57
|
message ImportMessage {
|
56
58
|
optional int32 d = 1;
|
@@ -62,3 +64,10 @@ enum ImportEnum {
|
|
62
64
|
IMPORT_BAZ = 9;
|
63
65
|
}
|
64
66
|
|
67
|
+
|
68
|
+
// To use an enum in a map, it must has the first value as 0.
|
69
|
+
enum ImportEnumForMap {
|
70
|
+
UNKNOWN = 0;
|
71
|
+
FOO = 1;
|
72
|
+
BAR = 2;
|
73
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
##
|
4
|
+
# This file is auto-generated. DO NOT EDIT!
|
5
|
+
#
|
6
|
+
require 'protobuf'
|
7
|
+
|
8
|
+
module Protobuf_unittest_import
|
9
|
+
::Protobuf::Optionable.inject(self) { ::Google::Protobuf::FileOptions }
|
10
|
+
|
11
|
+
##
|
12
|
+
# Message Classes
|
13
|
+
#
|
14
|
+
class PublicImportMessage < ::Protobuf::Message; end
|
15
|
+
|
16
|
+
|
17
|
+
##
|
18
|
+
# File Options
|
19
|
+
#
|
20
|
+
set_option :java_package, "com.google.protobuf.test"
|
21
|
+
|
22
|
+
|
23
|
+
##
|
24
|
+
# Message Fields
|
25
|
+
#
|
26
|
+
class PublicImportMessage
|
27
|
+
optional :int32, :e, 1
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
// Protocol Buffers - Google's data interchange format
|
2
2
|
// Copyright 2008 Google Inc. All rights reserved.
|
3
|
-
//
|
3
|
+
// https://developers.google.com/protocol-buffers/
|
4
4
|
//
|
5
5
|
// Redistribution and use in source and binary forms, with or without
|
6
6
|
// modification, are permitted provided that the following conditions are
|
@@ -30,9 +30,12 @@
|
|
30
30
|
|
31
31
|
// Author: liujisi@google.com (Pherl Liu)
|
32
32
|
|
33
|
+
syntax = "proto2";
|
33
34
|
|
34
|
-
package
|
35
|
+
package protobuf_unittest_import;
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
option java_package = "com.google.protobuf.test";
|
38
|
+
|
39
|
+
message PublicImportMessage {
|
40
|
+
optional int32 e = 1;
|
41
|
+
}
|
@@ -1,9 +1,12 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
##
|
2
4
|
# This file is auto-generated. DO NOT EDIT!
|
3
5
|
#
|
4
|
-
require 'protobuf
|
6
|
+
require 'protobuf'
|
5
7
|
|
6
8
|
module Test
|
9
|
+
::Protobuf::Optionable.inject(self) { ::Google::Protobuf::FileOptions }
|
7
10
|
|
8
11
|
##
|
9
12
|
# Message Classes
|
@@ -35,7 +38,7 @@ module Test
|
|
35
38
|
required ::Test::Header::Type, :type, 1
|
36
39
|
# Extension Fields
|
37
40
|
extensions 100...536870912
|
38
|
-
optional ::Test::PayloadA, :payload, 100, :extension => true
|
41
|
+
optional ::Test::PayloadA, :".test.PayloadA.payload", 100, :extension => true
|
39
42
|
end
|
40
43
|
|
41
44
|
class PayloadA
|
@@ -1,19 +1,32 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
##
|
2
4
|
# This file is auto-generated. DO NOT EDIT!
|
3
5
|
#
|
4
|
-
require 'protobuf
|
6
|
+
require 'protobuf'
|
5
7
|
require 'protobuf/rpc/service'
|
6
8
|
|
9
|
+
|
10
|
+
##
|
11
|
+
# Imports
|
12
|
+
#
|
13
|
+
require 'google/protobuf/descriptor.pb'
|
14
|
+
|
7
15
|
module Test
|
16
|
+
::Protobuf::Optionable.inject(self) { ::Google::Protobuf::FileOptions }
|
8
17
|
|
9
18
|
##
|
10
19
|
# Enum Classes
|
11
20
|
#
|
12
21
|
class StatusType < ::Protobuf::Enum
|
22
|
+
set_option :allow_alias, true
|
23
|
+
set_option :".test.enum_option", -789
|
24
|
+
|
13
25
|
define :PENDING, 0
|
14
26
|
define :ENABLED, 1
|
15
27
|
define :DISABLED, 2
|
16
28
|
define :DELETED, 3
|
29
|
+
define :ALIASED, 3
|
17
30
|
end
|
18
31
|
|
19
32
|
|
@@ -44,6 +57,13 @@ module Test
|
|
44
57
|
|
45
58
|
|
46
59
|
|
60
|
+
##
|
61
|
+
# File Options
|
62
|
+
#
|
63
|
+
set_option :cc_generic_services, true
|
64
|
+
set_option :".test.file_option", 9876543210
|
65
|
+
|
66
|
+
|
47
67
|
##
|
48
68
|
# Message Fields
|
49
69
|
#
|
@@ -59,17 +79,17 @@ module Test
|
|
59
79
|
end
|
60
80
|
|
61
81
|
class Resource
|
62
|
-
required :string, :name, 1
|
82
|
+
required :string, :name, 1, :ctype => ::Google::Protobuf::FieldOptions::CType::CORD, :".test.field_option" => 8765432109
|
63
83
|
optional :int64, :date_created, 2
|
64
84
|
optional ::Test::StatusType, :status, 3
|
65
85
|
repeated ::Test::StatusType, :repeated_enum, 4
|
66
86
|
# Extension Fields
|
67
87
|
extensions 100...536870912
|
68
|
-
optional :bool, :ext_is_searchable, 100, :extension => true
|
69
|
-
optional :bool, :ext_is_hidden, 101, :extension => true
|
70
|
-
optional ::Test::Searchable::SearchType, :ext_search_type, 102, :default => ::Test::Searchable::SearchType::FLAT, :extension => true
|
71
|
-
optional :bool, :ext_nested_in_level_one, 105, :extension => true
|
72
|
-
optional :bool, :ext_dup_field, 106, :extension => true
|
88
|
+
optional :bool, :".test.Searchable.ext_is_searchable", 100, :extension => true
|
89
|
+
optional :bool, :".test.Searchable.ext_is_hidden", 101, :extension => true
|
90
|
+
optional ::Test::Searchable::SearchType, :".test.Searchable.ext_search_type", 102, :default => ::Test::Searchable::SearchType::FLAT, :extension => true
|
91
|
+
optional :bool, :".test.Nested.NestedLevelOne.ext_nested_in_level_one", 105, :extension => true
|
92
|
+
optional :bool, :".test.Nested.NestedLevelOne.ext_dup_field", 106, :extension => true
|
73
93
|
end
|
74
94
|
|
75
95
|
class ResourceWithRequiredField
|
@@ -88,8 +108,8 @@ module Test
|
|
88
108
|
optional :bool, :level_one, 1, :default => true
|
89
109
|
# Extension Fields
|
90
110
|
extensions 100...102
|
91
|
-
optional :bool, :ext_nested_level_one_outer, 101, :extension => true
|
92
|
-
optional :bool, :ext_nested_level_one, 100, :extension => true
|
111
|
+
optional :bool, :".test.ext_nested_level_one_outer", 101, :extension => true
|
112
|
+
optional :bool, :".test.Nested.ext_nested_level_one", 100, :extension => true
|
93
113
|
end
|
94
114
|
|
95
115
|
optional :string, :name, 1
|
@@ -98,8 +118,24 @@ module Test
|
|
98
118
|
optional ::Test::StatusType, :status, 4
|
99
119
|
# Extension Fields
|
100
120
|
extensions 100...111
|
101
|
-
optional :string, :foo, 100, :extension => true
|
102
|
-
optional :int64, :bar, 101, :extension => true
|
121
|
+
optional :string, :".test.foo", 100, :extension => true
|
122
|
+
optional :int64, :".test.bar", 101, :extension => true
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
##
|
127
|
+
# Extended Message Fields
|
128
|
+
#
|
129
|
+
class ::Google::Protobuf::FileOptions < ::Protobuf::Message
|
130
|
+
optional :uint64, :".test.file_option", 9585869, :extension => true
|
131
|
+
end
|
132
|
+
|
133
|
+
class ::Google::Protobuf::FieldOptions < ::Protobuf::Message
|
134
|
+
optional :uint64, :".test.field_option", 858769, :extension => true
|
135
|
+
end
|
136
|
+
|
137
|
+
class ::Google::Protobuf::EnumOptions < ::Protobuf::Message
|
138
|
+
optional :int64, :".test.enum_option", 590284, :extension => true
|
103
139
|
end
|
104
140
|
|
105
141
|
|
@@ -1,10 +1,33 @@
|
|
1
|
+
syntax = "proto2";
|
2
|
+
|
3
|
+
import "google/protobuf/descriptor.proto";
|
4
|
+
|
1
5
|
package test;
|
2
6
|
|
7
|
+
option cc_generic_services = true;
|
8
|
+
option (file_option) = 9876543210;
|
9
|
+
|
10
|
+
extend google.protobuf.FileOptions {
|
11
|
+
optional uint64 file_option = 9585869;
|
12
|
+
}
|
13
|
+
|
14
|
+
extend google.protobuf.FieldOptions {
|
15
|
+
optional uint64 field_option = 858769;
|
16
|
+
}
|
17
|
+
|
18
|
+
extend google.protobuf.EnumOptions {
|
19
|
+
optional int64 enum_option = 590284;
|
20
|
+
}
|
21
|
+
|
3
22
|
enum StatusType {
|
23
|
+
option allow_alias = true;
|
24
|
+
option (enum_option) = -789;
|
25
|
+
|
4
26
|
PENDING = 0;
|
5
27
|
ENABLED = 1;
|
6
28
|
DISABLED = 2;
|
7
29
|
DELETED = 3;
|
30
|
+
ALIASED = 3;
|
8
31
|
}
|
9
32
|
|
10
33
|
message ResourceFindRequest {
|
@@ -21,7 +44,7 @@ message ResourceSleepRequest {
|
|
21
44
|
message Resource {
|
22
45
|
extensions 100 to max;
|
23
46
|
|
24
|
-
required string name = 1;
|
47
|
+
required string name = 1 [(field_option) = 8765432109, ctype = CORD];
|
25
48
|
optional int64 date_created = 2;
|
26
49
|
optional StatusType status = 3;
|
27
50
|
repeated StatusType repeated_enum = 4;
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require PROTOS_PATH.join('resource.pb')
|
2
|
+
|
3
|
+
Test::ResourceService.class_eval do
|
4
|
+
# request -> Test::ResourceFindRequest
|
5
|
+
# response -> Test::Resource
|
6
|
+
def find
|
7
|
+
response.name = request.name
|
8
|
+
response.status = request.active ? 1 : 0
|
9
|
+
end
|
10
|
+
|
11
|
+
# request -> Test::ResourceSleepRequest
|
12
|
+
# response -> Test::Resource
|
13
|
+
def find_with_sleep
|
14
|
+
sleep(request.sleep || 1)
|
15
|
+
response.name = 'Request should have timed out'
|
16
|
+
end
|
17
|
+
|
18
|
+
# request -> Test::ResourceFindRequest
|
19
|
+
# response -> Test::Resource
|
20
|
+
def find_with_rpc_failed
|
21
|
+
rpc_failed('Find failed')
|
22
|
+
end
|
23
|
+
end
|
data/spec/support/server.rb
CHANGED
@@ -1,91 +1,62 @@
|
|
1
1
|
require 'ostruct'
|
2
|
-
|
2
|
+
|
3
|
+
require 'active_support/core_ext/hash/reverse_merge'
|
4
|
+
|
5
|
+
require 'spec_helper'
|
6
|
+
require 'protobuf/logging'
|
3
7
|
require 'protobuf/rpc/server'
|
4
8
|
require 'protobuf/rpc/servers/socket/server'
|
5
9
|
require 'protobuf/rpc/servers/socket_runner'
|
6
10
|
require 'protobuf/rpc/servers/zmq/server'
|
7
11
|
require 'protobuf/rpc/servers/zmq_runner'
|
8
|
-
require '
|
12
|
+
require SUPPORT_PATH.join('resource_service')
|
9
13
|
|
10
14
|
# Want to abort if server dies?
|
11
15
|
Thread.abort_on_exception = true
|
12
16
|
|
13
|
-
|
14
|
-
|
15
|
-
new_server = Class.new(Protobuf::Rpc::Socket::Server) do
|
16
|
-
def self.sleep_interval
|
17
|
-
@sleep_interval
|
18
|
-
end
|
17
|
+
class StubServer
|
18
|
+
include Protobuf::Logging
|
19
19
|
|
20
|
-
|
21
|
-
@sleep_interval = si
|
22
|
-
end
|
20
|
+
private
|
23
21
|
|
24
|
-
|
25
|
-
sleep self.class.sleep_interval
|
26
|
-
super
|
27
|
-
end
|
28
|
-
end
|
22
|
+
attr_accessor :options, :runner, :runner_thread
|
29
23
|
|
30
|
-
|
31
|
-
return new_server
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
class StubServer
|
36
|
-
include Protobuf::Logger::LogMethods
|
37
|
-
|
38
|
-
attr_accessor :options
|
24
|
+
public
|
39
25
|
|
40
26
|
def initialize(options = {})
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
27
|
+
self.options = OpenStruct.new(
|
28
|
+
options.reverse_merge(
|
29
|
+
:host => '127.0.0.1',
|
30
|
+
:port => 9399,
|
31
|
+
:worker_port => 9400,
|
32
|
+
:delay => 0,
|
33
|
+
:server => Protobuf::Rpc::Socket::Server
|
34
|
+
)
|
35
|
+
)
|
47
36
|
|
48
37
|
start
|
49
38
|
yield self
|
50
39
|
ensure
|
51
|
-
stop
|
40
|
+
stop
|
52
41
|
end
|
53
42
|
|
54
43
|
def start
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
start_socket_server
|
60
|
-
end
|
61
|
-
log_debug { sign_message("Server started #{@options.host}:#{@options.port}") }
|
62
|
-
end
|
44
|
+
runner_class = {
|
45
|
+
::Protobuf::Rpc::Zmq::Server => ::Protobuf::Rpc::ZmqRunner,
|
46
|
+
::Protobuf::Rpc::Socket::Server => ::Protobuf::Rpc::SocketRunner,
|
47
|
+
}.fetch(options.server)
|
63
48
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
Thread.pass until @sock_runner.running?
|
69
|
-
end
|
49
|
+
self.runner = runner_class.new(options)
|
50
|
+
self.runner_thread = Thread.new(runner, &:run)
|
51
|
+
runner_thread.abort_on_exception = true # Set for testing purposes
|
52
|
+
Thread.pass until runner.running?
|
70
53
|
|
71
|
-
|
72
|
-
@zmq_runner = ::Protobuf::Rpc::ZmqRunner.new(options)
|
73
|
-
@zmq_thread = Thread.new(@zmq_runner) { |runner| runner.run }
|
74
|
-
@zmq_thread.abort_on_exception = true # Set for testing purposes
|
75
|
-
Thread.pass until @zmq_runner.running?
|
54
|
+
logger.debug { sign_message("Server started #{options.host}:#{options.port}") }
|
76
55
|
end
|
77
56
|
|
78
57
|
def stop
|
79
|
-
|
80
|
-
|
81
|
-
@zmq_runner.try :stop
|
82
|
-
@zmq_thread.join if @zmq_thread
|
83
|
-
else
|
84
|
-
@sock_runner.stop
|
85
|
-
@sock_thread.join if @sock_thread
|
86
|
-
end
|
87
|
-
|
88
|
-
@running = false
|
58
|
+
runner.stop
|
59
|
+
runner_thread.join
|
89
60
|
end
|
90
61
|
|
91
62
|
def log_signature
|