auser-poolparty 1.3.0 → 1.3.1
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/VERSION.yml +1 -1
- data/examples/monitored_cloud.rb +1 -1
- data/examples/thrift/thrift_example.rb +1 -1
- data/lib/proto/command_interface_handler.rb +1 -1
- data/vendor/gems/thrift/CHANGES +35 -0
- data/vendor/gems/thrift/CONTRIBUTORS +77 -0
- data/vendor/gems/thrift/DISCLAIMER +6 -0
- data/vendor/gems/thrift/LICENSE +202 -0
- data/vendor/gems/thrift/Makefile.am +28 -0
- data/vendor/gems/thrift/NEWS +79 -0
- data/vendor/gems/thrift/NOTICE +26 -0
- data/vendor/gems/thrift/README +137 -0
- data/vendor/gems/thrift/aclocal/ax_boost_base.m4 +198 -0
- data/vendor/gems/thrift/aclocal/ax_javac_and_java.m4 +107 -0
- data/vendor/gems/thrift/aclocal/ax_lib_event.m4 +194 -0
- data/vendor/gems/thrift/aclocal/ax_lib_zlib.m4 +173 -0
- data/vendor/gems/thrift/aclocal/ax_signed_right_shift.m4 +127 -0
- data/vendor/gems/thrift/aclocal/ax_thrift_internal.m4 +39 -0
- data/vendor/gems/thrift/bootstrap.sh +35 -0
- data/vendor/gems/thrift/cleanup.sh +58 -0
- data/vendor/gems/thrift/compiler/cpp/Makefile.am +136 -0
- data/vendor/gems/thrift/compiler/cpp/README +39 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_cocoa_generator.cc +2331 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_cpp_generator.cc +3003 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_csharp_generator.cc +1700 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_erl_generator.cc +932 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.cc +173 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.h +321 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_hs_generator.cc +1445 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_html_generator.cc +637 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_java_generator.cc +3069 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_ocaml_generator.cc +1673 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_oop_generator.h +77 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_perl_generator.cc +1812 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_php_generator.cc +2281 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_py_generator.cc +2310 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_rb_generator.cc +1114 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_st_generator.cc +1071 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_xsd_generator.cc +354 -0
- data/vendor/gems/thrift/compiler/cpp/src/globals.h +117 -0
- data/vendor/gems/thrift/compiler/cpp/src/main.cc +1207 -0
- data/vendor/gems/thrift/compiler/cpp/src/main.h +103 -0
- data/vendor/gems/thrift/compiler/cpp/src/md5.c +381 -0
- data/vendor/gems/thrift/compiler/cpp/src/md5.h +91 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_base_type.h +137 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_const.h +59 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_const_value.h +121 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_container.h +56 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_doc.h +51 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum.h +59 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum_value.h +64 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_field.h +150 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_function.h +93 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_list.h +56 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_map.h +64 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_program.h +223 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_scope.h +86 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_service.h +68 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_set.h +55 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_struct.h +127 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_type.h +176 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_typedef.h +70 -0
- data/vendor/gems/thrift/compiler/cpp/src/platform.h +36 -0
- data/vendor/gems/thrift/compiler/cpp/src/thriftl.ll +303 -0
- data/vendor/gems/thrift/compiler/cpp/src/thrifty.yy +1140 -0
- data/vendor/gems/thrift/configure.ac +255 -0
- data/vendor/gems/thrift/contrib/fb303/LICENSE +16 -0
- data/vendor/gems/thrift/contrib/fb303/Makefile.am +31 -0
- data/vendor/gems/thrift/contrib/fb303/README +37 -0
- data/vendor/gems/thrift/contrib/fb303/acinclude.m4 +258 -0
- data/vendor/gems/thrift/contrib/fb303/aclocal/ax_boost_base.m4 +198 -0
- data/vendor/gems/thrift/contrib/fb303/bootstrap.sh +26 -0
- data/vendor/gems/thrift/contrib/fb303/configure.ac +115 -0
- data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.cpp +124 -0
- data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.h +103 -0
- data/vendor/gems/thrift/contrib/fb303/cpp/Makefile.am +84 -0
- data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.cpp +481 -0
- data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.h +215 -0
- data/vendor/gems/thrift/contrib/fb303/global_footer.mk +21 -0
- data/vendor/gems/thrift/contrib/fb303/global_header.mk +38 -0
- data/vendor/gems/thrift/contrib/fb303/if/fb303.thrift +112 -0
- data/vendor/gems/thrift/contrib/fb303/java/FacebookBase.java +103 -0
- data/vendor/gems/thrift/contrib/fb303/java/build.xml +84 -0
- data/vendor/gems/thrift/contrib/fb303/php/FacebookBase.php +89 -0
- data/vendor/gems/thrift/contrib/fb303/py/Makefile.am +44 -0
- data/vendor/gems/thrift/contrib/fb303/py/fb303/FacebookBase.py +82 -0
- data/vendor/gems/thrift/contrib/fb303/py/fb303_scripts/__init__.py +20 -0
- data/vendor/gems/thrift/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py +195 -0
- data/vendor/gems/thrift/contrib/fb303/py/setup.py +27 -0
- data/vendor/gems/thrift/contrib/thrift.el +126 -0
- data/vendor/gems/thrift/contrib/thrift.spec +206 -0
- data/vendor/gems/thrift/contrib/thrift.vim +91 -0
- data/vendor/gems/thrift/contrib/thrift_dump.cpp +91 -0
- data/vendor/gems/thrift/doc/lgpl-2.1.txt +504 -0
- data/vendor/gems/thrift/doc/otp-base-license.txt +20 -0
- data/vendor/gems/thrift/doc/thrift.bnf +96 -0
- data/vendor/gems/thrift/doc/thrift.tex +1057 -0
- data/vendor/gems/thrift/lib/Makefile.am +55 -0
- data/vendor/gems/thrift/lib/cocoa/README +21 -0
- data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.h +44 -0
- data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.m +130 -0
- data/vendor/gems/thrift/lib/cocoa/src/TException.h +34 -0
- data/vendor/gems/thrift/lib/cocoa/src/TException.m +64 -0
- data/vendor/gems/thrift/lib/cocoa/src/TProcessor.h +29 -0
- data/vendor/gems/thrift/lib/cocoa/src/TProcessorFactory.h +27 -0
- data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.h +27 -0
- data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.m +51 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.h +51 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.m +477 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocol.h +148 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolException.h +25 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolException.m +23 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolFactory.h +29 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.h +29 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.m +104 -0
- data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.h +50 -0
- data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.m +153 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.h +42 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.m +159 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.h +35 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.m +91 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.h +38 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.m +89 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.h +32 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.m +58 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TTransport.h +36 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.h +30 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.m +43 -0
- data/vendor/gems/thrift/lib/cpp/Makefile.am +158 -0
- data/vendor/gems/thrift/lib/cpp/README +67 -0
- data/vendor/gems/thrift/lib/cpp/src/TLogging.h +163 -0
- data/vendor/gems/thrift/lib/cpp/src/TProcessor.h +53 -0
- data/vendor/gems/thrift/lib/cpp/src/TReflectionLocal.h +96 -0
- data/vendor/gems/thrift/lib/cpp/src/Thrift.cpp +148 -0
- data/vendor/gems/thrift/lib/cpp/src/Thrift.h +191 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Exception.h +60 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/FunctionRunner.h +77 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.cpp +137 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.h +84 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.cpp +160 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.h +114 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.cpp +314 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.h +130 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Thread.h +125 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.cpp +493 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.h +169 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.cpp +284 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.h +122 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.cpp +55 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.h +100 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/Tests.cpp +155 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadFactoryTests.h +354 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadManagerTests.h +379 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/TimerManagerTests.h +155 -0
- data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.cpp +122 -0
- data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.h +77 -0
- data/vendor/gems/thrift/lib/cpp/src/processor/StatsProcessor.h +264 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.cpp +79 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.h +42 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.cpp +394 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.h +254 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.cpp +736 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.h +279 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.cpp +346 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.h +225 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.cpp +762 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.h +253 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.cpp +998 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.h +340 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TOneWayProtocol.h +304 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocol.h +438 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolException.h +104 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolTap.h +187 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.cpp +750 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.h +435 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TServer.cpp +38 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TServer.h +213 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.cpp +118 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.h +70 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.cpp +217 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.h +79 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.cpp +243 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.h +74 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.cpp +370 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.h +667 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.cpp +77 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.h +73 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.cpp +953 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.h +442 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.cpp +348 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.h +111 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.cpp +368 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.h +76 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TServerTransport.h +92 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TShortReadTransport.h +96 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.cpp +54 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.h +41 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.cpp +591 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.h +242 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.cpp +235 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.h +191 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransport.h +224 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.cpp +31 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.h +117 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.cpp +178 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.h +287 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.cpp +299 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.h +219 -0
- data/vendor/gems/thrift/lib/cpp/thrift-nb.pc.in +30 -0
- data/vendor/gems/thrift/lib/cpp/thrift-z.pc.in +30 -0
- data/vendor/gems/thrift/lib/cpp/thrift.pc.in +29 -0
- data/vendor/gems/thrift/lib/csharp/Makefile.am +70 -0
- data/vendor/gems/thrift/lib/csharp/README +26 -0
- data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/Properties/AssemblyInfo.cs +55 -0
- data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftBuild.cs +242 -0
- data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftMSBuildTask.csproj +62 -0
- data/vendor/gems/thrift/lib/csharp/src/Collections/THashSet.cs +142 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TBase.cs +34 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TBinaryProtocol.cs +392 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TField.cs +58 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TList.cs +50 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TMap.cs +58 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TMessage.cs +58 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TMessageType.cs +31 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocol.cs +87 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolException.cs +61 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolFactory.cs +29 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolUtil.cs +94 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TSet.cs +50 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TStruct.cs +42 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TType.cs +40 -0
- data/vendor/gems/thrift/lib/csharp/src/Server/TServer.cs +135 -0
- data/vendor/gems/thrift/lib/csharp/src/Server/TSimpleServer.cs +148 -0
- data/vendor/gems/thrift/lib/csharp/src/Server/TThreadPoolServer.cs +186 -0
- data/vendor/gems/thrift/lib/csharp/src/Server/TThreadedServer.cs +234 -0
- data/vendor/gems/thrift/lib/csharp/src/TApplicationException.cs +131 -0
- data/vendor/gems/thrift/lib/csharp/src/TProcessor.cs +29 -0
- data/vendor/gems/thrift/lib/csharp/src/Thrift.csproj +73 -0
- data/vendor/gems/thrift/lib/csharp/src/Thrift.sln +35 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TBufferedTransport.cs +100 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TServerSocket.cs +157 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TServerTransport.cs +39 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TSocket.cs +144 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TStreamTransport.cs +103 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TTransport.cs +66 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportException.cs +64 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportFactory.cs +38 -0
- data/vendor/gems/thrift/lib/erl/Makefile +37 -0
- data/vendor/gems/thrift/lib/erl/README +56 -0
- data/vendor/gems/thrift/lib/erl/build/beamver +59 -0
- data/vendor/gems/thrift/lib/erl/build/buildtargets.mk +15 -0
- data/vendor/gems/thrift/lib/erl/build/colors.mk +24 -0
- data/vendor/gems/thrift/lib/erl/build/docs.mk +12 -0
- data/vendor/gems/thrift/lib/erl/build/mime.types +98 -0
- data/vendor/gems/thrift/lib/erl/build/otp.mk +146 -0
- data/vendor/gems/thrift/lib/erl/build/otp_subdir.mk +85 -0
- data/vendor/gems/thrift/lib/erl/build/raw_test.mk +29 -0
- data/vendor/gems/thrift/lib/erl/include/thrift_constants.hrl +54 -0
- data/vendor/gems/thrift/lib/erl/include/thrift_protocol.hrl +31 -0
- data/vendor/gems/thrift/lib/erl/src/Makefile +116 -0
- data/vendor/gems/thrift/lib/erl/src/test_handler.erl +26 -0
- data/vendor/gems/thrift/lib/erl/src/test_service.erl +29 -0
- data/vendor/gems/thrift/lib/erl/src/thrift.app.src +44 -0
- data/vendor/gems/thrift/lib/erl/src/thrift.appup.src +1 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_base64_transport.erl +64 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_binary_protocol.erl +325 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_buffered_transport.erl +180 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_client.erl +384 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_disk_log_transport.erl +118 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_file_transport.erl +87 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_framed_transport.erl +208 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_http_transport.erl +199 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_memory_buffer.erl +164 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_processor.erl +188 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_protocol.erl +356 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_server.erl +183 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_service.erl +25 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_socket_server.erl +249 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_socket_transport.erl +119 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_transport.erl +57 -0
- data/vendor/gems/thrift/lib/erl/vsn.mk +1 -0
- data/vendor/gems/thrift/lib/hs/README +82 -0
- data/vendor/gems/thrift/lib/hs/Setup.lhs +23 -0
- data/vendor/gems/thrift/lib/hs/TODO +2 -0
- data/vendor/gems/thrift/lib/hs/Thrift.cabal +20 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift.hs +111 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol.hs +191 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol/Binary.hs +147 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift/Server.hs +65 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift/Transport.hs +60 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift/Transport/Handle.hs +58 -0
- data/vendor/gems/thrift/lib/java/Makefile.am +38 -0
- data/vendor/gems/thrift/lib/java/README +43 -0
- data/vendor/gems/thrift/lib/java/build.xml +195 -0
- data/vendor/gems/thrift/lib/java/ivy.xml +8 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/IntRangeSet.java +171 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TApplicationException.java +123 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBase.java +66 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBaseHelper.java +102 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TByteArrayOutputStream.java +46 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TDeserializer.java +94 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TException.java +45 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TFieldRequirementType.java +30 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessor.java +32 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessorFactory.java +39 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TSerializer.java +110 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldMetaData.java +69 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldValueMetaData.java +42 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/ListMetaData.java +29 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/MapMetaData.java +31 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/SetMetaData.java +29 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/StructMetaData.java +31 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBase64Utils.java +128 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java +331 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java +741 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TField.java +48 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java +927 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TList.java +38 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMap.java +40 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessage.java +48 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessageType.java +31 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocol.java +146 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolException.java +81 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolFactory.java +30 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolUtil.java +158 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSet.java +42 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java +384 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TStruct.java +36 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TType.java +40 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/THsHaServer.java +304 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TNonblockingServer.java +772 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TServer.java +126 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TSimpleServer.java +145 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java +271 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TFramedTransport.java +126 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/THttpClient.java +157 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TIOStreamTransport.java +159 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TMemoryBuffer.java +98 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerSocket.java +160 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerTransport.java +31 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingSocket.java +213 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingTransport.java +31 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TServerSocket.java +145 -0
- metadata +348 -37
- data/vendor/gems/trollop/FAQ.txt +0 -35
- data/vendor/gems/trollop/History.txt +0 -84
- data/vendor/gems/trollop/Manifest.txt +0 -7
- data/vendor/gems/trollop/README.txt +0 -38
- data/vendor/gems/trollop/Rakefile +0 -36
- data/vendor/gems/trollop/lib/trollop.rb +0 -695
- data/vendor/gems/trollop/release-script.txt +0 -13
- data/vendor/gems/trollop/test/test_trollop.rb +0 -957
- data/vendor/gems/trollop/www/index.html +0 -167
|
@@ -0,0 +1,379 @@
|
|
|
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
|
+
#include <config.h>
|
|
21
|
+
#include <concurrency/ThreadManager.h>
|
|
22
|
+
#include <concurrency/PosixThreadFactory.h>
|
|
23
|
+
#include <concurrency/Monitor.h>
|
|
24
|
+
#include <concurrency/Util.h>
|
|
25
|
+
|
|
26
|
+
#include <assert.h>
|
|
27
|
+
#include <set>
|
|
28
|
+
#include <iostream>
|
|
29
|
+
#include <set>
|
|
30
|
+
#include <stdint.h>
|
|
31
|
+
|
|
32
|
+
namespace apache { namespace thrift { namespace concurrency { namespace test {
|
|
33
|
+
|
|
34
|
+
using namespace apache::thrift::concurrency;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* ThreadManagerTests class
|
|
38
|
+
*
|
|
39
|
+
* @version $Id:$
|
|
40
|
+
*/
|
|
41
|
+
class ThreadManagerTests {
|
|
42
|
+
|
|
43
|
+
public:
|
|
44
|
+
|
|
45
|
+
static const double ERROR;
|
|
46
|
+
|
|
47
|
+
class Task: public Runnable {
|
|
48
|
+
|
|
49
|
+
public:
|
|
50
|
+
|
|
51
|
+
Task(Monitor& monitor, size_t& count, int64_t timeout) :
|
|
52
|
+
_monitor(monitor),
|
|
53
|
+
_count(count),
|
|
54
|
+
_timeout(timeout),
|
|
55
|
+
_done(false) {}
|
|
56
|
+
|
|
57
|
+
void run() {
|
|
58
|
+
|
|
59
|
+
_startTime = Util::currentTime();
|
|
60
|
+
|
|
61
|
+
{
|
|
62
|
+
Synchronized s(_sleep);
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
_sleep.wait(_timeout);
|
|
66
|
+
} catch(TimedOutException& e) {
|
|
67
|
+
;
|
|
68
|
+
}catch(...) {
|
|
69
|
+
assert(0);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
_endTime = Util::currentTime();
|
|
74
|
+
|
|
75
|
+
_done = true;
|
|
76
|
+
|
|
77
|
+
{
|
|
78
|
+
Synchronized s(_monitor);
|
|
79
|
+
|
|
80
|
+
// std::cout << "Thread " << _count << " completed " << std::endl;
|
|
81
|
+
|
|
82
|
+
_count--;
|
|
83
|
+
|
|
84
|
+
if (_count == 0) {
|
|
85
|
+
|
|
86
|
+
_monitor.notify();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
Monitor& _monitor;
|
|
92
|
+
size_t& _count;
|
|
93
|
+
int64_t _timeout;
|
|
94
|
+
int64_t _startTime;
|
|
95
|
+
int64_t _endTime;
|
|
96
|
+
bool _done;
|
|
97
|
+
Monitor _sleep;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Dispatch count tasks, each of which blocks for timeout milliseconds then
|
|
102
|
+
* completes. Verify that all tasks completed and that thread manager cleans
|
|
103
|
+
* up properly on delete.
|
|
104
|
+
*/
|
|
105
|
+
bool loadTest(size_t count=100, int64_t timeout=100LL, size_t workerCount=4) {
|
|
106
|
+
|
|
107
|
+
Monitor monitor;
|
|
108
|
+
|
|
109
|
+
size_t activeCount = count;
|
|
110
|
+
|
|
111
|
+
shared_ptr<ThreadManager> threadManager = ThreadManager::newSimpleThreadManager(workerCount);
|
|
112
|
+
|
|
113
|
+
shared_ptr<PosixThreadFactory> threadFactory = shared_ptr<PosixThreadFactory>(new PosixThreadFactory());
|
|
114
|
+
|
|
115
|
+
threadFactory->setPriority(PosixThreadFactory::HIGHEST);
|
|
116
|
+
|
|
117
|
+
threadManager->threadFactory(threadFactory);
|
|
118
|
+
|
|
119
|
+
threadManager->start();
|
|
120
|
+
|
|
121
|
+
std::set<shared_ptr<ThreadManagerTests::Task> > tasks;
|
|
122
|
+
|
|
123
|
+
for (size_t ix = 0; ix < count; ix++) {
|
|
124
|
+
|
|
125
|
+
tasks.insert(shared_ptr<ThreadManagerTests::Task>(new ThreadManagerTests::Task(monitor, activeCount, timeout)));
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
int64_t time00 = Util::currentTime();
|
|
129
|
+
|
|
130
|
+
for (std::set<shared_ptr<ThreadManagerTests::Task> >::iterator ix = tasks.begin(); ix != tasks.end(); ix++) {
|
|
131
|
+
|
|
132
|
+
threadManager->add(*ix);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
{
|
|
136
|
+
Synchronized s(monitor);
|
|
137
|
+
|
|
138
|
+
while(activeCount > 0) {
|
|
139
|
+
|
|
140
|
+
monitor.wait();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
int64_t time01 = Util::currentTime();
|
|
145
|
+
|
|
146
|
+
int64_t firstTime = 9223372036854775807LL;
|
|
147
|
+
int64_t lastTime = 0;
|
|
148
|
+
|
|
149
|
+
double averageTime = 0;
|
|
150
|
+
int64_t minTime = 9223372036854775807LL;
|
|
151
|
+
int64_t maxTime = 0;
|
|
152
|
+
|
|
153
|
+
for (std::set<shared_ptr<ThreadManagerTests::Task> >::iterator ix = tasks.begin(); ix != tasks.end(); ix++) {
|
|
154
|
+
|
|
155
|
+
shared_ptr<ThreadManagerTests::Task> task = *ix;
|
|
156
|
+
|
|
157
|
+
int64_t delta = task->_endTime - task->_startTime;
|
|
158
|
+
|
|
159
|
+
assert(delta > 0);
|
|
160
|
+
|
|
161
|
+
if (task->_startTime < firstTime) {
|
|
162
|
+
firstTime = task->_startTime;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (task->_endTime > lastTime) {
|
|
166
|
+
lastTime = task->_endTime;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (delta < minTime) {
|
|
170
|
+
minTime = delta;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (delta > maxTime) {
|
|
174
|
+
maxTime = delta;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
averageTime+= delta;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
averageTime /= count;
|
|
181
|
+
|
|
182
|
+
std::cout << "\t\t\tfirst start: " << firstTime << "ms Last end: " << lastTime << "ms min: " << minTime << "ms max: " << maxTime << "ms average: " << averageTime << "ms" << std::endl;
|
|
183
|
+
|
|
184
|
+
double expectedTime = ((count + (workerCount - 1)) / workerCount) * timeout;
|
|
185
|
+
|
|
186
|
+
double error = ((time01 - time00) - expectedTime) / expectedTime;
|
|
187
|
+
|
|
188
|
+
if (error < 0) {
|
|
189
|
+
error*= -1.0;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
bool success = error < ERROR;
|
|
193
|
+
|
|
194
|
+
std::cout << "\t\t\t" << (success ? "Success" : "Failure") << "! expected time: " << expectedTime << "ms elapsed time: "<< time01 - time00 << "ms error%: " << error * 100.0 << std::endl;
|
|
195
|
+
|
|
196
|
+
return success;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
class BlockTask: public Runnable {
|
|
200
|
+
|
|
201
|
+
public:
|
|
202
|
+
|
|
203
|
+
BlockTask(Monitor& monitor, Monitor& bmonitor, size_t& count) :
|
|
204
|
+
_monitor(monitor),
|
|
205
|
+
_bmonitor(bmonitor),
|
|
206
|
+
_count(count) {}
|
|
207
|
+
|
|
208
|
+
void run() {
|
|
209
|
+
{
|
|
210
|
+
Synchronized s(_bmonitor);
|
|
211
|
+
|
|
212
|
+
_bmonitor.wait();
|
|
213
|
+
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
{
|
|
217
|
+
Synchronized s(_monitor);
|
|
218
|
+
|
|
219
|
+
_count--;
|
|
220
|
+
|
|
221
|
+
if (_count == 0) {
|
|
222
|
+
|
|
223
|
+
_monitor.notify();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
Monitor& _monitor;
|
|
229
|
+
Monitor& _bmonitor;
|
|
230
|
+
size_t& _count;
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Block test. Create pendingTaskCountMax tasks. Verify that we block adding the
|
|
235
|
+
* pendingTaskCountMax + 1th task. Verify that we unblock when a task completes */
|
|
236
|
+
|
|
237
|
+
bool blockTest(int64_t timeout=100LL, size_t workerCount=2) {
|
|
238
|
+
|
|
239
|
+
bool success = false;
|
|
240
|
+
|
|
241
|
+
try {
|
|
242
|
+
|
|
243
|
+
Monitor bmonitor;
|
|
244
|
+
Monitor monitor;
|
|
245
|
+
|
|
246
|
+
size_t pendingTaskMaxCount = workerCount;
|
|
247
|
+
|
|
248
|
+
size_t activeCounts[] = {workerCount, pendingTaskMaxCount, 1};
|
|
249
|
+
|
|
250
|
+
shared_ptr<ThreadManager> threadManager = ThreadManager::newSimpleThreadManager(workerCount, pendingTaskMaxCount);
|
|
251
|
+
|
|
252
|
+
shared_ptr<PosixThreadFactory> threadFactory = shared_ptr<PosixThreadFactory>(new PosixThreadFactory());
|
|
253
|
+
|
|
254
|
+
threadFactory->setPriority(PosixThreadFactory::HIGHEST);
|
|
255
|
+
|
|
256
|
+
threadManager->threadFactory(threadFactory);
|
|
257
|
+
|
|
258
|
+
threadManager->start();
|
|
259
|
+
|
|
260
|
+
std::set<shared_ptr<ThreadManagerTests::BlockTask> > tasks;
|
|
261
|
+
|
|
262
|
+
for (size_t ix = 0; ix < workerCount; ix++) {
|
|
263
|
+
|
|
264
|
+
tasks.insert(shared_ptr<ThreadManagerTests::BlockTask>(new ThreadManagerTests::BlockTask(monitor, bmonitor,activeCounts[0])));
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
for (size_t ix = 0; ix < pendingTaskMaxCount; ix++) {
|
|
268
|
+
|
|
269
|
+
tasks.insert(shared_ptr<ThreadManagerTests::BlockTask>(new ThreadManagerTests::BlockTask(monitor, bmonitor,activeCounts[1])));
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
for (std::set<shared_ptr<ThreadManagerTests::BlockTask> >::iterator ix = tasks.begin(); ix != tasks.end(); ix++) {
|
|
273
|
+
threadManager->add(*ix);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
if(!(success = (threadManager->totalTaskCount() == pendingTaskMaxCount + workerCount))) {
|
|
277
|
+
throw TException("Unexpected pending task count");
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
shared_ptr<ThreadManagerTests::BlockTask> extraTask(new ThreadManagerTests::BlockTask(monitor, bmonitor, activeCounts[2]));
|
|
281
|
+
|
|
282
|
+
try {
|
|
283
|
+
threadManager->add(extraTask, 1);
|
|
284
|
+
throw TException("Unexpected success adding task in excess of pending task count");
|
|
285
|
+
} catch(TooManyPendingTasksException& e) {
|
|
286
|
+
throw TException("Should have timed out adding task in excess of pending task count");
|
|
287
|
+
} catch(TimedOutException& e) {
|
|
288
|
+
// Expected result
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
try {
|
|
292
|
+
threadManager->add(extraTask, -1);
|
|
293
|
+
throw TException("Unexpected success adding task in excess of pending task count");
|
|
294
|
+
} catch(TimedOutException& e) {
|
|
295
|
+
throw TException("Unexpected timeout adding task in excess of pending task count");
|
|
296
|
+
} catch(TooManyPendingTasksException& e) {
|
|
297
|
+
// Expected result
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
std::cout << "\t\t\t" << "Pending tasks " << threadManager->pendingTaskCount() << std::endl;
|
|
301
|
+
|
|
302
|
+
{
|
|
303
|
+
Synchronized s(bmonitor);
|
|
304
|
+
|
|
305
|
+
bmonitor.notifyAll();
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
{
|
|
309
|
+
Synchronized s(monitor);
|
|
310
|
+
|
|
311
|
+
while(activeCounts[0] != 0) {
|
|
312
|
+
monitor.wait();
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
std::cout << "\t\t\t" << "Pending tasks " << threadManager->pendingTaskCount() << std::endl;
|
|
317
|
+
|
|
318
|
+
try {
|
|
319
|
+
threadManager->add(extraTask, 1);
|
|
320
|
+
} catch(TimedOutException& e) {
|
|
321
|
+
std::cout << "\t\t\t" << "add timed out unexpectedly" << std::endl;
|
|
322
|
+
throw TException("Unexpected timeout adding task");
|
|
323
|
+
|
|
324
|
+
} catch(TooManyPendingTasksException& e) {
|
|
325
|
+
std::cout << "\t\t\t" << "add encountered too many pending exepctions" << std::endl;
|
|
326
|
+
throw TException("Unexpected timeout adding task");
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// Wake up tasks that were pending before and wait for them to complete
|
|
330
|
+
|
|
331
|
+
{
|
|
332
|
+
Synchronized s(bmonitor);
|
|
333
|
+
|
|
334
|
+
bmonitor.notifyAll();
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
{
|
|
338
|
+
Synchronized s(monitor);
|
|
339
|
+
|
|
340
|
+
while(activeCounts[1] != 0) {
|
|
341
|
+
monitor.wait();
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// Wake up the extra task and wait for it to complete
|
|
346
|
+
|
|
347
|
+
{
|
|
348
|
+
Synchronized s(bmonitor);
|
|
349
|
+
|
|
350
|
+
bmonitor.notifyAll();
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
{
|
|
354
|
+
Synchronized s(monitor);
|
|
355
|
+
|
|
356
|
+
while(activeCounts[2] != 0) {
|
|
357
|
+
monitor.wait();
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
if(!(success = (threadManager->totalTaskCount() == 0))) {
|
|
362
|
+
throw TException("Unexpected pending task count");
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
} catch(TException& e) {
|
|
366
|
+
std::cout << "ERROR: " << e.what() << std::endl;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
std::cout << "\t\t\t" << (success ? "Success" : "Failure") << std::endl;
|
|
370
|
+
return success;
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
const double ThreadManagerTests::ERROR = .20;
|
|
375
|
+
|
|
376
|
+
}}}} // apache::thrift::concurrency
|
|
377
|
+
|
|
378
|
+
using namespace apache::thrift::concurrency::test;
|
|
379
|
+
|
|
@@ -0,0 +1,155 @@
|
|
|
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
|
+
#include <concurrency/TimerManager.h>
|
|
21
|
+
#include <concurrency/PosixThreadFactory.h>
|
|
22
|
+
#include <concurrency/Monitor.h>
|
|
23
|
+
#include <concurrency/Util.h>
|
|
24
|
+
|
|
25
|
+
#include <assert.h>
|
|
26
|
+
#include <iostream>
|
|
27
|
+
|
|
28
|
+
namespace apache { namespace thrift { namespace concurrency { namespace test {
|
|
29
|
+
|
|
30
|
+
using namespace apache::thrift::concurrency;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* ThreadManagerTests class
|
|
34
|
+
*
|
|
35
|
+
* @version $Id:$
|
|
36
|
+
*/
|
|
37
|
+
class TimerManagerTests {
|
|
38
|
+
|
|
39
|
+
public:
|
|
40
|
+
|
|
41
|
+
static const double ERROR;
|
|
42
|
+
|
|
43
|
+
class Task: public Runnable {
|
|
44
|
+
public:
|
|
45
|
+
|
|
46
|
+
Task(Monitor& monitor, int64_t timeout) :
|
|
47
|
+
_timeout(timeout),
|
|
48
|
+
_startTime(Util::currentTime()),
|
|
49
|
+
_monitor(monitor),
|
|
50
|
+
_success(false),
|
|
51
|
+
_done(false) {}
|
|
52
|
+
|
|
53
|
+
~Task() { std::cerr << this << std::endl; }
|
|
54
|
+
|
|
55
|
+
void run() {
|
|
56
|
+
|
|
57
|
+
_endTime = Util::currentTime();
|
|
58
|
+
|
|
59
|
+
// Figure out error percentage
|
|
60
|
+
|
|
61
|
+
int64_t delta = _endTime - _startTime;
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
delta = delta > _timeout ? delta - _timeout : _timeout - delta;
|
|
65
|
+
|
|
66
|
+
float error = delta / _timeout;
|
|
67
|
+
|
|
68
|
+
if(error < ERROR) {
|
|
69
|
+
_success = true;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
_done = true;
|
|
73
|
+
|
|
74
|
+
std::cout << "\t\t\tTimerManagerTests::Task[" << this << "] done" << std::endl; //debug
|
|
75
|
+
|
|
76
|
+
{Synchronized s(_monitor);
|
|
77
|
+
_monitor.notifyAll();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
int64_t _timeout;
|
|
82
|
+
int64_t _startTime;
|
|
83
|
+
int64_t _endTime;
|
|
84
|
+
Monitor& _monitor;
|
|
85
|
+
bool _success;
|
|
86
|
+
bool _done;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* This test creates two tasks and waits for the first to expire within 10%
|
|
91
|
+
* of the expected expiration time. It then verifies that the timer manager
|
|
92
|
+
* properly clean up itself and the remaining orphaned timeout task when the
|
|
93
|
+
* manager goes out of scope and its destructor is called.
|
|
94
|
+
*/
|
|
95
|
+
bool test00(int64_t timeout=1000LL) {
|
|
96
|
+
|
|
97
|
+
shared_ptr<TimerManagerTests::Task> orphanTask = shared_ptr<TimerManagerTests::Task>(new TimerManagerTests::Task(_monitor, 10 * timeout));
|
|
98
|
+
|
|
99
|
+
{
|
|
100
|
+
|
|
101
|
+
TimerManager timerManager;
|
|
102
|
+
|
|
103
|
+
timerManager.threadFactory(shared_ptr<PosixThreadFactory>(new PosixThreadFactory()));
|
|
104
|
+
|
|
105
|
+
timerManager.start();
|
|
106
|
+
|
|
107
|
+
assert(timerManager.state() == TimerManager::STARTED);
|
|
108
|
+
|
|
109
|
+
// Don't create task yet, because its constructor sets the expected completion time, and we
|
|
110
|
+
// need to delay between inserting the two tasks into the run queue.
|
|
111
|
+
shared_ptr<TimerManagerTests::Task> task;
|
|
112
|
+
|
|
113
|
+
{
|
|
114
|
+
Synchronized s(_monitor);
|
|
115
|
+
|
|
116
|
+
timerManager.add(orphanTask, 10 * timeout);
|
|
117
|
+
|
|
118
|
+
try {
|
|
119
|
+
// Wait for 1 second in order to give timerManager a chance to start sleeping in response
|
|
120
|
+
// to adding orphanTask. We need to do this so we can verify that adding the second task
|
|
121
|
+
// kicks the dispatcher out of the current wait and starts the new 1 second wait.
|
|
122
|
+
_monitor.wait (1000);
|
|
123
|
+
assert (0 == "ERROR: This wait should time out. TimerManager dispatcher may have a problem.");
|
|
124
|
+
} catch (TimedOutException &ex) {
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
task.reset (new TimerManagerTests::Task(_monitor, timeout));
|
|
128
|
+
|
|
129
|
+
timerManager.add(task, timeout);
|
|
130
|
+
|
|
131
|
+
_monitor.wait();
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
assert(task->_done);
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
std::cout << "\t\t\t" << (task->_success ? "Success" : "Failure") << "!" << std::endl;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// timerManager.stop(); This is where it happens via destructor
|
|
141
|
+
|
|
142
|
+
assert(!orphanTask->_done);
|
|
143
|
+
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
friend class TestTask;
|
|
148
|
+
|
|
149
|
+
Monitor _monitor;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const double TimerManagerTests::ERROR = .20;
|
|
153
|
+
|
|
154
|
+
}}}} // apache::thrift::concurrency
|
|
155
|
+
|