thrift 0.24.0 → 0.25.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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +107 -4
  3. data/ext/binary_protocol_accelerated.c +52 -17
  4. data/ext/compact_protocol.c +135 -70
  5. data/ext/constants.h +3 -0
  6. data/ext/extconf.rb +4 -4
  7. data/ext/macros.h +11 -0
  8. data/ext/memory_buffer.c +35 -17
  9. data/ext/struct.c +185 -64
  10. data/ext/thrift_native.c +6 -0
  11. data/lib/thrift/bytes.rb +2 -2
  12. data/lib/thrift/client.rb +31 -22
  13. data/lib/thrift/exceptions.rb +10 -8
  14. data/lib/thrift/multiplexed_processor.rb +5 -6
  15. data/lib/thrift/processor.rb +24 -3
  16. data/lib/thrift/protocol/base_protocol.rb +53 -27
  17. data/lib/thrift/protocol/binary_protocol.rb +54 -40
  18. data/lib/thrift/protocol/binary_protocol_accelerated.rb +6 -2
  19. data/lib/thrift/protocol/compact_protocol.rb +193 -88
  20. data/lib/thrift/protocol/header_protocol.rb +14 -3
  21. data/lib/thrift/protocol/json_protocol.rb +146 -104
  22. data/lib/thrift/protocol/multiplexed_protocol.rb +2 -3
  23. data/lib/thrift/protocol/protocol_decorator.rb +5 -2
  24. data/lib/thrift/serializer/serializer.rb +6 -0
  25. data/lib/thrift/server/base_server.rb +10 -2
  26. data/lib/thrift/server/nonblocking_server.rb +49 -26
  27. data/lib/thrift/server/rack_application.rb +69 -0
  28. data/lib/thrift/server/simple_server.rb +27 -23
  29. data/lib/thrift/server/thin_http_server.rb +20 -44
  30. data/lib/thrift/server/thread_pool_server.rb +20 -17
  31. data/lib/thrift/server/threaded_server.rb +22 -26
  32. data/lib/thrift/struct.rb +33 -18
  33. data/lib/thrift/struct_union.rb +36 -30
  34. data/lib/thrift/transport/base_transport.rb +23 -5
  35. data/lib/thrift/transport/buffered_transport.rb +4 -4
  36. data/lib/thrift/transport/framed_transport.rb +32 -7
  37. data/lib/thrift/transport/header_transport.rb +130 -50
  38. data/lib/thrift/transport/http_client_transport.rb +27 -14
  39. data/lib/thrift/transport/io_stream_transport.rb +2 -1
  40. data/lib/thrift/transport/memory_buffer_transport.rb +8 -10
  41. data/lib/thrift/transport/server_socket.rb +4 -5
  42. data/lib/thrift/transport/socket.rb +20 -22
  43. data/lib/thrift/transport/ssl_server_socket.rb +64 -4
  44. data/lib/thrift/transport/ssl_socket.rb +32 -5
  45. data/lib/thrift/transport/unix_server_socket.rb +1 -1
  46. data/lib/thrift/transport/unix_socket.rb +4 -6
  47. data/lib/thrift/types.rb +22 -22
  48. data/lib/thrift/union.rb +20 -11
  49. data/lib/thrift/uuid.rb +8 -8
  50. data/lib/thrift.rb +39 -39
  51. metadata +5 -230
  52. data/benchmark/Benchmark.thrift +0 -24
  53. data/benchmark/benchmark.rb +0 -286
  54. data/benchmark/client.rb +0 -118
  55. data/benchmark/server.rb +0 -121
  56. data/benchmark/thin_server.rb +0 -46
  57. data/lib/thrift/server/mongrel_http_server.rb +0 -61
  58. data/spec/BaseService.thrift +0 -27
  59. data/spec/ExtendedService.thrift +0 -25
  60. data/spec/Referenced.thrift +0 -44
  61. data/spec/ThriftNamespacedSpec.thrift +0 -53
  62. data/spec/ThriftSpec.thrift +0 -203
  63. data/spec/base_protocol_spec.rb +0 -244
  64. data/spec/base_transport_spec.rb +0 -428
  65. data/spec/binary_protocol_accelerated_spec.rb +0 -47
  66. data/spec/binary_protocol_spec.rb +0 -73
  67. data/spec/binary_protocol_spec_shared.rb +0 -509
  68. data/spec/bytes_spec.rb +0 -117
  69. data/spec/client_spec.rb +0 -167
  70. data/spec/compact_protocol_spec.rb +0 -295
  71. data/spec/constants_demo_spec.rb +0 -102
  72. data/spec/exception_spec.rb +0 -141
  73. data/spec/flat_spec.rb +0 -63
  74. data/spec/header_protocol_spec.rb +0 -476
  75. data/spec/header_transport_spec.rb +0 -431
  76. data/spec/http_client_spec.rb +0 -160
  77. data/spec/json_protocol_spec.rb +0 -574
  78. data/spec/multiplexed_processor_spec.rb +0 -75
  79. data/spec/namespaced_spec.rb +0 -67
  80. data/spec/nonblocking_server_spec.rb +0 -429
  81. data/spec/processor_spec.rb +0 -80
  82. data/spec/recursion_depth_spec.rb +0 -223
  83. data/spec/serializer_spec.rb +0 -67
  84. data/spec/server_socket_spec.rb +0 -121
  85. data/spec/server_spec.rb +0 -238
  86. data/spec/socket_spec.rb +0 -174
  87. data/spec/socket_spec_shared.rb +0 -168
  88. data/spec/spec_helper.rb +0 -70
  89. data/spec/ssl_server_socket_spec.rb +0 -85
  90. data/spec/ssl_socket_spec.rb +0 -248
  91. data/spec/struct_nested_containers_spec.rb +0 -191
  92. data/spec/struct_spec.rb +0 -398
  93. data/spec/support/header_protocol_helper.rb +0 -55
  94. data/spec/thin_http_server_spec.rb +0 -127
  95. data/spec/types_spec.rb +0 -118
  96. data/spec/union_spec.rb +0 -273
  97. data/spec/unix_socket_spec.rb +0 -131
  98. data/spec/uuid_validation_spec.rb +0 -239
  99. data/test/fuzz/Makefile +0 -779
  100. data/test/fuzz/Makefile.am +0 -173
  101. data/test/fuzz/Makefile.in +0 -775
  102. data/test/fuzz/README.md +0 -149
  103. data/test/fuzz/fuzz_common.rb +0 -96
  104. data/test/fuzz/fuzz_parse_binary_protocol.rb +0 -23
  105. data/test/fuzz/fuzz_parse_binary_protocol_accelerated.rb +0 -23
  106. data/test/fuzz/fuzz_parse_binary_protocol_accelerated_harness.rb +0 -23
  107. data/test/fuzz/fuzz_parse_binary_protocol_harness.rb +0 -23
  108. data/test/fuzz/fuzz_parse_compact_protocol.rb +0 -23
  109. data/test/fuzz/fuzz_parse_compact_protocol_harness.rb +0 -23
  110. data/test/fuzz/fuzz_parse_json_protocol.rb +0 -23
  111. data/test/fuzz/fuzz_parse_json_protocol_harness.rb +0 -23
  112. data/test/fuzz/fuzz_roundtrip_binary_protocol.rb +0 -23
  113. data/test/fuzz/fuzz_roundtrip_binary_protocol_accelerated.rb +0 -23
  114. data/test/fuzz/fuzz_roundtrip_binary_protocol_accelerated_harness.rb +0 -23
  115. data/test/fuzz/fuzz_roundtrip_binary_protocol_harness.rb +0 -23
  116. data/test/fuzz/fuzz_roundtrip_compact_protocol.rb +0 -23
  117. data/test/fuzz/fuzz_roundtrip_compact_protocol_harness.rb +0 -23
  118. data/test/fuzz/fuzz_roundtrip_json_protocol.rb +0 -23
  119. data/test/fuzz/fuzz_roundtrip_json_protocol_harness.rb +0 -23
  120. data/test/fuzz/fuzz_tracer.rb +0 -29
@@ -1,173 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one
3
- # or more contributor license agreements. See the NOTICE file
4
- # distributed with this work for additional information
5
- # regarding copyright ownership. The ASF licenses this file
6
- # to you under the Apache License, Version 2.0 (the
7
- # "License"); you may not use this file except in compliance
8
- # with the License. You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing,
13
- # software distributed under the License is distributed on an
14
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- # KIND, either express or implied. See the License for the
16
- # specific language governing permissions and limitations
17
- # under the License.
18
- #
19
-
20
- THRIFT = $(top_builddir)/compiler/cpp/thrift
21
- FUZZ_RB_ROOT = $(top_srcdir)/lib/rb
22
- FUZZ_GEN_DIR = $(FUZZ_RB_ROOT)/test/fuzz
23
- FUZZ_STUBS = \
24
- $(FUZZ_GEN_DIR)/gen-rb/fuzz_test_constants.rb \
25
- $(FUZZ_GEN_DIR)/gen-rb/fuzz_test_types.rb
26
-
27
- FUZZ_RUBY_FILES = \
28
- $(srcdir)/fuzz_tracer.rb \
29
- $(srcdir)/fuzz_common.rb \
30
- $(srcdir)/fuzz_parse_binary_protocol.rb \
31
- $(srcdir)/fuzz_parse_binary_protocol_harness.rb \
32
- $(srcdir)/fuzz_parse_binary_protocol_accelerated.rb \
33
- $(srcdir)/fuzz_parse_binary_protocol_accelerated_harness.rb \
34
- $(srcdir)/fuzz_parse_compact_protocol.rb \
35
- $(srcdir)/fuzz_parse_compact_protocol_harness.rb \
36
- $(srcdir)/fuzz_parse_json_protocol.rb \
37
- $(srcdir)/fuzz_parse_json_protocol_harness.rb \
38
- $(srcdir)/fuzz_roundtrip_binary_protocol.rb \
39
- $(srcdir)/fuzz_roundtrip_binary_protocol_harness.rb \
40
- $(srcdir)/fuzz_roundtrip_binary_protocol_accelerated.rb \
41
- $(srcdir)/fuzz_roundtrip_binary_protocol_accelerated_harness.rb \
42
- $(srcdir)/fuzz_roundtrip_compact_protocol.rb \
43
- $(srcdir)/fuzz_roundtrip_compact_protocol_harness.rb \
44
- $(srcdir)/fuzz_roundtrip_json_protocol.rb \
45
- $(srcdir)/fuzz_roundtrip_json_protocol_harness.rb
46
-
47
- FUZZ_ASAN_OPTIONS ?= allocator_may_return_null=1:detect_leaks=0:use_sigaltstack=0
48
- FUZZ_CC ?= clang
49
- FUZZ_CXX ?= clang++
50
- FUZZ_LDSHARED ?= $(FUZZ_CC) -shared
51
- FUZZ_LDSHAREDXX ?= $(FUZZ_CXX) -shared
52
- FUZZ_CFLAGS ?= -fsanitize=address,fuzzer-no-link -fno-omit-frame-pointer -fno-common -fPIC -g
53
- FUZZ_CXXFLAGS ?= -fsanitize=address,fuzzer-no-link -fno-omit-frame-pointer -fno-common -fPIC -g
54
- FUZZ_MAKE ?= make
55
- FUZZ_MAKEFLAGS ?= --environment-overrides V=1
56
-
57
- check: fuzz-prepare
58
-
59
- fuzz-prepare: $(FUZZ_STUBS)
60
- @for script in $(FUZZ_RUBY_FILES); do \
61
- $(RUBY) -c $$script; \
62
- done
63
- cd $(FUZZ_RB_ROOT) && \
64
- RUBYLIB="lib:test/fuzz/gen-rb" $(RUBY) -e 'require "thrift"; require "fuzz_test_types"; abort("Fuzz::FuzzTest is missing") unless defined?(Fuzz::FuzzTest)'
65
-
66
- $(THRIFT):
67
- $(MAKE) -C $(top_builddir)/compiler/cpp all
68
-
69
- $(FUZZ_STUBS): $(top_srcdir)/test/FuzzTest.thrift $(THRIFT)
70
- $(MKDIR_P) $(FUZZ_GEN_DIR)
71
- $(THRIFT) --gen rb -o $(FUZZ_GEN_DIR) $(top_srcdir)/test/FuzzTest.thrift
72
-
73
- fuzz-build-ext:
74
- cd $(FUZZ_RB_ROOT)/ext && \
75
- env MAKE="$(FUZZ_MAKE) $(FUZZ_MAKEFLAGS)" \
76
- CC="$(FUZZ_CC)" \
77
- CXX="$(FUZZ_CXX)" \
78
- LDSHARED="$(FUZZ_LDSHARED)" \
79
- LDSHAREDXX="$(FUZZ_LDSHAREDXX)" \
80
- CFLAGS="$(FUZZ_CFLAGS)" \
81
- CXXFLAGS="$(FUZZ_CXXFLAGS)" \
82
- $(RUBY) extconf.rb && \
83
- env MAKE="$(FUZZ_MAKE) $(FUZZ_MAKEFLAGS)" \
84
- CC="$(FUZZ_CC)" \
85
- CXX="$(FUZZ_CXX)" \
86
- LDSHARED="$(FUZZ_LDSHARED)" \
87
- LDSHAREDXX="$(FUZZ_LDSHAREDXX)" \
88
- CFLAGS="$(FUZZ_CFLAGS)" \
89
- CXXFLAGS="$(FUZZ_CXXFLAGS)" \
90
- $(FUZZ_MAKE) $(FUZZ_MAKEFLAGS) clean all
91
-
92
- fuzz-run: fuzz-prepare
93
- @test -n "$(TARGET)" || { echo 'Set TARGET=<fuzz script name>'; exit 1; }
94
- cd $(FUZZ_RB_ROOT) && \
95
- ASAN_OPTIONS="$(FUZZ_ASAN_OPTIONS)" \
96
- LD_PRELOAD=$$($(RUBY) -e 'require "ruzzy"; print Ruzzy::ASAN_PATH') \
97
- $(RUBY) test/fuzz/$(TARGET) $(CORPUS) $(FUZZ_ARGS)
98
-
99
- fuzz-parse-binary:
100
- $(MAKE) $(AM_MAKEFLAGS) fuzz-run TARGET=fuzz_parse_binary_protocol.rb CORPUS="$(CORPUS)" FUZZ_ARGS="$(FUZZ_ARGS)"
101
-
102
- fuzz-parse-binary-accelerated: fuzz-build-ext
103
- $(MAKE) $(AM_MAKEFLAGS) fuzz-run TARGET=fuzz_parse_binary_protocol_accelerated.rb CORPUS="$(CORPUS)" FUZZ_ARGS="$(FUZZ_ARGS)"
104
-
105
- fuzz-parse-compact:
106
- $(MAKE) $(AM_MAKEFLAGS) fuzz-run TARGET=fuzz_parse_compact_protocol.rb CORPUS="$(CORPUS)" FUZZ_ARGS="$(FUZZ_ARGS)"
107
-
108
- fuzz-parse-json:
109
- $(MAKE) $(AM_MAKEFLAGS) fuzz-run TARGET=fuzz_parse_json_protocol.rb CORPUS="$(CORPUS)" FUZZ_ARGS="$(FUZZ_ARGS)"
110
-
111
- fuzz-roundtrip-binary:
112
- $(MAKE) $(AM_MAKEFLAGS) fuzz-run TARGET=fuzz_roundtrip_binary_protocol.rb CORPUS="$(CORPUS)" FUZZ_ARGS="$(FUZZ_ARGS)"
113
-
114
- fuzz-roundtrip-binary-accelerated: fuzz-build-ext
115
- $(MAKE) $(AM_MAKEFLAGS) fuzz-run TARGET=fuzz_roundtrip_binary_protocol_accelerated.rb CORPUS="$(CORPUS)" FUZZ_ARGS="$(FUZZ_ARGS)"
116
-
117
- fuzz-roundtrip-compact:
118
- $(MAKE) $(AM_MAKEFLAGS) fuzz-run TARGET=fuzz_roundtrip_compact_protocol.rb CORPUS="$(CORPUS)" FUZZ_ARGS="$(FUZZ_ARGS)"
119
-
120
- fuzz-roundtrip-json:
121
- $(MAKE) $(AM_MAKEFLAGS) fuzz-run TARGET=fuzz_roundtrip_json_protocol.rb CORPUS="$(CORPUS)" FUZZ_ARGS="$(FUZZ_ARGS)"
122
-
123
- fuzz-smoke-parse-binary:
124
- $(MAKE) $(AM_MAKEFLAGS) fuzz-parse-binary CORPUS="$(CORPUS)" FUZZ_ARGS="-runs=100 $(FUZZ_ARGS)"
125
-
126
- fuzz-smoke-parse-binary-accelerated:
127
- $(MAKE) $(AM_MAKEFLAGS) fuzz-parse-binary-accelerated CORPUS="$(CORPUS)" FUZZ_ARGS="-runs=100 $(FUZZ_ARGS)"
128
-
129
- fuzz-smoke-parse-compact:
130
- $(MAKE) $(AM_MAKEFLAGS) fuzz-parse-compact CORPUS="$(CORPUS)" FUZZ_ARGS="-runs=100 $(FUZZ_ARGS)"
131
-
132
- fuzz-smoke-parse-json:
133
- $(MAKE) $(AM_MAKEFLAGS) fuzz-parse-json CORPUS="$(CORPUS)" FUZZ_ARGS="-runs=100 $(FUZZ_ARGS)"
134
-
135
- fuzz-smoke-roundtrip-binary:
136
- $(MAKE) $(AM_MAKEFLAGS) fuzz-roundtrip-binary CORPUS="$(CORPUS)" FUZZ_ARGS="-runs=100 $(FUZZ_ARGS)"
137
-
138
- fuzz-smoke-roundtrip-binary-accelerated:
139
- $(MAKE) $(AM_MAKEFLAGS) fuzz-roundtrip-binary-accelerated CORPUS="$(CORPUS)" FUZZ_ARGS="-runs=100 $(FUZZ_ARGS)"
140
-
141
- fuzz-smoke-roundtrip-compact:
142
- $(MAKE) $(AM_MAKEFLAGS) fuzz-roundtrip-compact CORPUS="$(CORPUS)" FUZZ_ARGS="-runs=100 $(FUZZ_ARGS)"
143
-
144
- fuzz-smoke-roundtrip-json:
145
- $(MAKE) $(AM_MAKEFLAGS) fuzz-roundtrip-json CORPUS="$(CORPUS)" FUZZ_ARGS="-runs=100 $(FUZZ_ARGS)"
146
-
147
- clean-local:
148
- -$(RM) -r $(FUZZ_GEN_DIR)/gen-rb
149
-
150
- distdir:
151
- $(MAKE) $(AM_MAKEFLAGS) distdir-am
152
-
153
- EXTRA_DIST = \
154
- .gitignore \
155
- README.md \
156
- fuzz_common.rb \
157
- fuzz_tracer.rb \
158
- fuzz_parse_binary_protocol.rb \
159
- fuzz_parse_binary_protocol_harness.rb \
160
- fuzz_parse_binary_protocol_accelerated.rb \
161
- fuzz_parse_binary_protocol_accelerated_harness.rb \
162
- fuzz_parse_compact_protocol.rb \
163
- fuzz_parse_compact_protocol_harness.rb \
164
- fuzz_parse_json_protocol.rb \
165
- fuzz_parse_json_protocol_harness.rb \
166
- fuzz_roundtrip_binary_protocol.rb \
167
- fuzz_roundtrip_binary_protocol_harness.rb \
168
- fuzz_roundtrip_binary_protocol_accelerated.rb \
169
- fuzz_roundtrip_binary_protocol_accelerated_harness.rb \
170
- fuzz_roundtrip_compact_protocol.rb \
171
- fuzz_roundtrip_compact_protocol_harness.rb \
172
- fuzz_roundtrip_json_protocol.rb \
173
- fuzz_roundtrip_json_protocol_harness.rb