mt-libcouchbase 1.4.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 +7 -0
- data/.gitignore +22 -0
- data/.gitmodules +3 -0
- data/.rspec +1 -0
- data/.travis.yml +38 -0
- data/Gemfile +4 -0
- data/LICENSE +24 -0
- data/README.md +445 -0
- data/Rakefile +76 -0
- data/ext/README.md +6 -0
- data/ext/Rakefile +19 -0
- data/ext/libcouchbase/.gitignore +132 -0
- data/ext/libcouchbase/CMakeLists.txt +455 -0
- data/ext/libcouchbase/CONTRIBUTING.md +105 -0
- data/ext/libcouchbase/LICENSE +202 -0
- data/ext/libcouchbase/README.markdown +195 -0
- data/ext/libcouchbase/RELEASE_NOTES.markdown +3523 -0
- data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +52 -0
- data/ext/libcouchbase/cmake/Modules/CopyPDB.cmake +42 -0
- data/ext/libcouchbase/cmake/Modules/DistScript.cmake +17 -0
- data/ext/libcouchbase/cmake/Modules/DownloadLcbDep.cmake +18 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseHdrHistogram.cmake +15 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibev.cmake +73 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +54 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +57 -0
- data/ext/libcouchbase/cmake/Modules/FindProfiler.cmake +16 -0
- data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +49 -0
- data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +142 -0
- data/ext/libcouchbase/cmake/Modules/GetPlatformCCInfo.cmake +45 -0
- data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +70 -0
- data/ext/libcouchbase/cmake/config-cmake.h.in +80 -0
- data/ext/libcouchbase/cmake/configure +355 -0
- data/ext/libcouchbase/cmake/defs.mk.in +6 -0
- data/ext/libcouchbase/cmake/dtrace-instr-link.pl +51 -0
- data/ext/libcouchbase/cmake/libcouchbase.stp.in +829 -0
- data/ext/libcouchbase/cmake/source_files.cmake +104 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.c +1022 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.h +158 -0
- data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +25 -0
- data/ext/libcouchbase/contrib/cbsasl/COPYING +202 -0
- data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +259 -0
- data/ext/libcouchbase/contrib/cbsasl/src/client.c +419 -0
- data/ext/libcouchbase/contrib/cbsasl/src/common.c +50 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.c +67 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.h +33 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.c +296 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.h +45 -0
- data/ext/libcouchbase/contrib/cbsasl/src/hash.c +573 -0
- data/ext/libcouchbase/contrib/cbsasl/src/hash.h +15 -0
- data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.c +500 -0
- data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.h +99 -0
- data/ext/libcouchbase/contrib/cbsasl/src/util.h +31 -0
- data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +2 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.c +938 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.h +610 -0
- data/ext/libcouchbase/contrib/genhash/genhash.c +371 -0
- data/ext/libcouchbase/contrib/genhash/genhash.h +241 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CHANGES +157 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CMakeLists.txt +252 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CONTRIBUTORS +37 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/LICENSE +28 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/MINIFY.sh +15 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/README +435 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/cmake/internal_utils.cmake +227 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-death-test.h +294 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-message.h +250 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h +1421 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h.pump +487 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-printers.h +855 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-spi.h +232 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-test-part.h +179 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-typed-test.h +259 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest.h +2291 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_pred_impl.h +358 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_prod.h +58 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h +319 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h +206 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-internal.h +1158 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h +233 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h +5143 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h.pump +301 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h +619 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-port.h +1947 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-string.h +167 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h +1012 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h.pump +339 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h +3331 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h.pump +297 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-all.cc +48 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-death-test.cc +1344 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-filepath.cc +382 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-internal-inl.h +1218 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-port.cc +805 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-printers.cc +363 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-test-part.cc +110 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-typed-test.cc +110 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest.cc +5015 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest_main.cc +38 -0
- data/ext/libcouchbase/contrib/http_parser/LICENSE-MIT +23 -0
- data/ext/libcouchbase/contrib/http_parser/README.md +178 -0
- data/ext/libcouchbase/contrib/http_parser/http_parser.c +2060 -0
- data/ext/libcouchbase/contrib/http_parser/http_parser.h +321 -0
- data/ext/libcouchbase/contrib/jsonsl/LICENSE +20 -0
- data/ext/libcouchbase/contrib/jsonsl/jsonsl.c +1452 -0
- data/ext/libcouchbase/contrib/jsonsl/jsonsl.h +971 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/CMakeLists.txt +6 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/LICENSE +55 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp-forwards.h +255 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4893 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.h +1961 -0
- data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +7 -0
- data/ext/libcouchbase/contrib/snappy/COPYING +28 -0
- data/ext/libcouchbase/contrib/snappy/snappy-c.cc +90 -0
- data/ext/libcouchbase/contrib/snappy/snappy-c.h +138 -0
- data/ext/libcouchbase/contrib/snappy/snappy-internal.h +150 -0
- data/ext/libcouchbase/contrib/snappy/snappy-lcb-msvc.h +5 -0
- data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +75 -0
- data/ext/libcouchbase/contrib/snappy/snappy-sinksource.h +137 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.cc +42 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.h +491 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +100 -0
- data/ext/libcouchbase/contrib/snappy/snappy.cc +1312 -0
- data/ext/libcouchbase/contrib/snappy/snappy.h +184 -0
- data/ext/libcouchbase/contrib/win32-defs/iocpdefs.h +133 -0
- data/ext/libcouchbase/contrib/win32-defs/mingwdefs.h +4396 -0
- data/ext/libcouchbase/contrib/win32-defs/win_stdint.h +258 -0
- data/ext/libcouchbase/doc/Doxyfile +2495 -0
- data/ext/libcouchbase/doc/DoxygenLayout.xml +109 -0
- data/ext/libcouchbase/doc/Makefile +44 -0
- data/ext/libcouchbase/doc/apiattr.h +117 -0
- data/ext/libcouchbase/doc/cbc-n1qlback.markdown +88 -0
- data/ext/libcouchbase/doc/cbc-pillowfight.markdown +296 -0
- data/ext/libcouchbase/doc/cbc-subdoc.markdown +299 -0
- data/ext/libcouchbase/doc/cbc.markdown +763 -0
- data/ext/libcouchbase/doc/cbcrc.markdown +52 -0
- data/ext/libcouchbase/doc/common-additional-options.markdown +82 -0
- data/ext/libcouchbase/doc/common-options.markdown +71 -0
- data/ext/libcouchbase/doc/environment.h +93 -0
- data/ext/libcouchbase/doc/example/threads.c +77 -0
- data/ext/libcouchbase/doc/footer.html +22 -0
- data/ext/libcouchbase/doc/genman.sh +25 -0
- data/ext/libcouchbase/doc/header.html +52 -0
- data/ext/libcouchbase/doc/intro.h +130 -0
- data/ext/libcouchbase/doc/mainpage.h +136 -0
- data/ext/libcouchbase/doc/man/cbc-admin.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-bucket-create.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-bucket-delete.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-cat.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-connstr.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-cp.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-create.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-decr.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-flush.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-hash.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-incr.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-lock.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-mcflush.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-mcversion.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-n1ql.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-n1qlback.1 +198 -0
- data/ext/libcouchbase/doc/man/cbc-observe.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-pillowfight.1 +499 -0
- data/ext/libcouchbase/doc/man/cbc-ping.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-rm.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-role-list.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-stats.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-subdoc.1 +494 -0
- data/ext/libcouchbase/doc/man/cbc-unlock.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-user-delete.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-user-list.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-user-upsert.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-verbosity.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-version.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-view.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-watch.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc.1 +1035 -0
- data/ext/libcouchbase/doc/man/cbcrc.4 +71 -0
- data/ext/libcouchbase/doc/style.css +1162 -0
- data/ext/libcouchbase/example/CMakeLists.txt +52 -0
- data/ext/libcouchbase/example/README.markdown +47 -0
- data/ext/libcouchbase/example/analytics/.gitignore +1 -0
- data/ext/libcouchbase/example/analytics/analytics.c +158 -0
- data/ext/libcouchbase/example/analytics/build-queries.rb +34 -0
- data/ext/libcouchbase/example/analytics/cJSON.c +1 -0
- data/ext/libcouchbase/example/analytics/cJSON.h +1 -0
- data/ext/libcouchbase/example/analytics/queries/00-show-dataverse.json +5 -0
- data/ext/libcouchbase/example/analytics/queries/01-setup-dataset-breweries.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/02-setup-dataset-beers.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/03-initiate-shadow.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/04-list-datasets.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/05-count-breweries.json +5 -0
- data/ext/libcouchbase/example/analytics/queries/06-first-brewery.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/07-key-based-lookup.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/08-exact-match-lookup.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/09-exact-match-lookup-different-shape.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/10-other-query-filters.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/11-equijoin.json +9 -0
- data/ext/libcouchbase/example/analytics/queries/12-equijoin-select-star.json +10 -0
- data/ext/libcouchbase/example/analytics/queries/13-ansi-join.json +8 -0
- data/ext/libcouchbase/example/analytics/queries/14-join-select-values.json +8 -0
- data/ext/libcouchbase/example/analytics/queries/15-nested-outer-join.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/16-theta-join.json +8 -0
- data/ext/libcouchbase/example/analytics/queries/17-existential-quantification.json +9 -0
- data/ext/libcouchbase/example/analytics/queries/18-universal-quantification.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/19-simple-aggregation.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/20-simple-aggregation-unwrapped-value.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/21-simple-aggregation-explicit.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/22-grouping-and-aggregation.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/23-grouping-and-aggregation-with-hint.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/24-grouping-and-limits.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/25-named-parameters.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/26-positional-parameters.json +7 -0
- data/ext/libcouchbase/example/analytics/queries.h +113 -0
- data/ext/libcouchbase/example/crypto/.gitignore +2 -0
- data/ext/libcouchbase/example/crypto/Makefile +13 -0
- data/ext/libcouchbase/example/crypto/common_provider.c +26 -0
- data/ext/libcouchbase/example/crypto/common_provider.h +33 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_decrypt.c +144 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_encrypt.c +146 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.c +271 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.h +29 -0
- data/ext/libcouchbase/example/db/db.c +171 -0
- data/ext/libcouchbase/example/db/vb.c +227 -0
- data/ext/libcouchbase/example/fts/.gitignore +1 -0
- data/ext/libcouchbase/example/fts/build-queries.rb +33 -0
- data/ext/libcouchbase/example/fts/fts.c +142 -0
- data/ext/libcouchbase/example/fts/queries/00-simple-text-query.json +12 -0
- data/ext/libcouchbase/example/fts/queries/01-simple-text-query-on-non-default-index.json +9 -0
- data/ext/libcouchbase/example/fts/queries/02-simple-text-query-on-stored-field.json +13 -0
- data/ext/libcouchbase/example/fts/queries/03-match-query-with-facet.json +19 -0
- data/ext/libcouchbase/example/fts/queries/04-docid-query.json +11 -0
- data/ext/libcouchbase/example/fts/queries/05-unanalyzed-term-query-with-fuzziness-level-of-0.json +13 -0
- data/ext/libcouchbase/example/fts/queries/06-unanalyzed-term-query-with-fuzziness-level-of-2.json +14 -0
- data/ext/libcouchbase/example/fts/queries/07-match-phrase-query.json +13 -0
- data/ext/libcouchbase/example/fts/queries/08-phrase-query.json +16 -0
- data/ext/libcouchbase/example/fts/queries/09-query-string-query.json +9 -0
- data/ext/libcouchbase/example/fts/queries/10-conjunction-query.json +21 -0
- data/ext/libcouchbase/example/fts/queries/11-wild-card-query.json +13 -0
- data/ext/libcouchbase/example/fts/queries/12-numeric-range-query.json +11 -0
- data/ext/libcouchbase/example/fts/queries/13-regexp-query.json +13 -0
- data/ext/libcouchbase/example/fts/queries.h +61 -0
- data/ext/libcouchbase/example/instancepool/main.cc +112 -0
- data/ext/libcouchbase/example/instancepool/pool.cc +102 -0
- data/ext/libcouchbase/example/instancepool/pool.h +69 -0
- data/ext/libcouchbase/example/libeventdirect/main.c +222 -0
- data/ext/libcouchbase/example/mcc/mcc.cc +246 -0
- data/ext/libcouchbase/example/minimal/.gitignore +1 -0
- data/ext/libcouchbase/example/minimal/minimal.c +132 -0
- data/ext/libcouchbase/example/minimal/query.c +185 -0
- data/ext/libcouchbase/example/observe/durability.c +102 -0
- data/ext/libcouchbase/example/observe/observe.c +159 -0
- data/ext/libcouchbase/example/subdoc/subdoc-multi.cc +143 -0
- data/ext/libcouchbase/example/subdoc/subdoc-simple.cc +201 -0
- data/ext/libcouchbase/example/subdoc/subdoc-xattrs.c +286 -0
- data/ext/libcouchbase/example/tick/tick.c +119 -0
- data/ext/libcouchbase/example/tracing/.gitignore +2 -0
- data/ext/libcouchbase/example/tracing/Makefile +8 -0
- data/ext/libcouchbase/example/tracing/cJSON.c +1 -0
- data/ext/libcouchbase/example/tracing/cJSON.h +1 -0
- data/ext/libcouchbase/example/tracing/tracing.c +439 -0
- data/ext/libcouchbase/example/tracing/views.c +444 -0
- data/ext/libcouchbase/example/users/README +48 -0
- data/ext/libcouchbase/example/users/users.c +147 -0
- data/ext/libcouchbase/example/views/views-example.cc +83 -0
- data/ext/libcouchbase/include/libcouchbase/_cxxwrap.h +150 -0
- data/ext/libcouchbase/include/libcouchbase/api-legacy.h +1689 -0
- data/ext/libcouchbase/include/libcouchbase/api3.h +2 -0
- data/ext/libcouchbase/include/libcouchbase/assert.h +44 -0
- data/ext/libcouchbase/include/libcouchbase/auth.h +297 -0
- data/ext/libcouchbase/include/libcouchbase/cbft.h +151 -0
- data/ext/libcouchbase/include/libcouchbase/cntl-private.h +319 -0
- data/ext/libcouchbase/include/libcouchbase/cntl.h +1418 -0
- data/ext/libcouchbase/include/libcouchbase/configuration.h.in +29 -0
- data/ext/libcouchbase/include/libcouchbase/couchbase.h +4089 -0
- data/ext/libcouchbase/include/libcouchbase/crypto.h +306 -0
- data/ext/libcouchbase/include/libcouchbase/deprecated.h +312 -0
- data/ext/libcouchbase/include/libcouchbase/error.h +680 -0
- data/ext/libcouchbase/include/libcouchbase/http.h +1 -0
- data/ext/libcouchbase/include/libcouchbase/iops.h +1053 -0
- data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +263 -0
- data/ext/libcouchbase/include/libcouchbase/kvbuf.h +137 -0
- data/ext/libcouchbase/include/libcouchbase/metrics.h +79 -0
- data/ext/libcouchbase/include/libcouchbase/n1ql.h +539 -0
- data/ext/libcouchbase/include/libcouchbase/pktfwd.h +270 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +370 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr-inl.c +76 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr.h +199 -0
- data/ext/libcouchbase/include/libcouchbase/subdoc.h +347 -0
- data/ext/libcouchbase/include/libcouchbase/sysdefs.h +98 -0
- data/ext/libcouchbase/include/libcouchbase/tracing.h +437 -0
- data/ext/libcouchbase/include/libcouchbase/vbucket.h +680 -0
- data/ext/libcouchbase/include/libcouchbase/views.h +357 -0
- data/ext/libcouchbase/include/libcouchbase/visibility.h +66 -0
- data/ext/libcouchbase/include/memcached/COPYING +30 -0
- data/ext/libcouchbase/include/memcached/README +10 -0
- data/ext/libcouchbase/include/memcached/protocol_binary.h +885 -0
- data/ext/libcouchbase/packaging/README +7 -0
- data/ext/libcouchbase/packaging/abicheck/.gitignore +4 -0
- data/ext/libcouchbase/packaging/abicheck/Makefile +17 -0
- data/ext/libcouchbase/packaging/abicheck/README.md +27 -0
- data/ext/libcouchbase/packaging/abicheck/template.xml +3 -0
- data/ext/libcouchbase/packaging/deb/compat +1 -0
- data/ext/libcouchbase/packaging/deb/control +72 -0
- data/ext/libcouchbase/packaging/deb/copyright +10 -0
- data/ext/libcouchbase/packaging/deb/libcouchbase-dev.docs +3 -0
- data/ext/libcouchbase/packaging/deb/package.mk +31 -0
- data/ext/libcouchbase/packaging/deb/rules +46 -0
- data/ext/libcouchbase/packaging/deb/source/format +1 -0
- data/ext/libcouchbase/packaging/distinfo/README +1 -0
- data/ext/libcouchbase/packaging/distinfo/distinfo.cmake.in +4 -0
- data/ext/libcouchbase/packaging/dllversion.rc.in +39 -0
- data/ext/libcouchbase/packaging/libcouchbase.pc.in +10 -0
- data/ext/libcouchbase/packaging/nuget/libcouchbase.autopkg +76 -0
- data/ext/libcouchbase/packaging/parse-git-describe.pl +166 -0
- data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +101 -0
- data/ext/libcouchbase/packaging/rpm/package.mk +40 -0
- data/ext/libcouchbase/plugins/io/iocp/CMakeLists.txt +9 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_iops.c +467 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_iops.h +217 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_loop.c +295 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_timer.c +79 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_util.c +229 -0
- data/ext/libcouchbase/plugins/io/libev/CMakeLists.txt +31 -0
- data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +66 -0
- data/ext/libcouchbase/plugins/io/libev/plugin-libev.c +289 -0
- data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +31 -0
- data/ext/libcouchbase/plugins/io/libevent/libevent_io_opts.h +67 -0
- data/ext/libcouchbase/plugins/io/libevent/plugin-libevent.c +292 -0
- data/ext/libcouchbase/plugins/io/libuv/CMakeLists.txt +44 -0
- data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +218 -0
- data/ext/libcouchbase/plugins/io/libuv/libuv_io_opts.h +118 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +155 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +709 -0
- data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +13 -0
- data/ext/libcouchbase/plugins/io/select/plugin-select.c +451 -0
- data/ext/libcouchbase/plugins/io/select/select_io_opts.h +39 -0
- data/ext/libcouchbase/src/README.md +101 -0
- data/ext/libcouchbase/src/aspend.h +105 -0
- data/ext/libcouchbase/src/auth-priv.h +85 -0
- data/ext/libcouchbase/src/auth.cc +146 -0
- data/ext/libcouchbase/src/bootstrap.cc +263 -0
- data/ext/libcouchbase/src/bootstrap.h +149 -0
- data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +450 -0
- data/ext/libcouchbase/src/bucketconfig/bc_file.cc +281 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.cc +527 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.h +107 -0
- data/ext/libcouchbase/src/bucketconfig/bc_static.cc +150 -0
- data/ext/libcouchbase/src/bucketconfig/clconfig.h +700 -0
- data/ext/libcouchbase/src/bucketconfig/confmon.cc +403 -0
- data/ext/libcouchbase/src/callbacks.c +380 -0
- data/ext/libcouchbase/src/cbft.cc +253 -0
- data/ext/libcouchbase/src/cntl.cc +1057 -0
- data/ext/libcouchbase/src/config_static.h +176 -0
- data/ext/libcouchbase/src/connspec.cc +555 -0
- data/ext/libcouchbase/src/connspec.h +155 -0
- data/ext/libcouchbase/src/crypto.cc +399 -0
- data/ext/libcouchbase/src/ctx-log-inl.h +44 -0
- data/ext/libcouchbase/src/dns-srv.cc +146 -0
- data/ext/libcouchbase/src/dump.cc +103 -0
- data/ext/libcouchbase/src/errmap.cc +173 -0
- data/ext/libcouchbase/src/errmap.h +271 -0
- data/ext/libcouchbase/src/getconfig.cc +72 -0
- data/ext/libcouchbase/src/gethrtime.c +109 -0
- data/ext/libcouchbase/src/handler.cc +1101 -0
- data/ext/libcouchbase/src/hashtable.c +75 -0
- data/ext/libcouchbase/src/hdr_timings.c +92 -0
- data/ext/libcouchbase/src/hostlist.cc +293 -0
- data/ext/libcouchbase/src/hostlist.h +160 -0
- data/ext/libcouchbase/src/http/http-priv.h +326 -0
- data/ext/libcouchbase/src/http/http.cc +672 -0
- data/ext/libcouchbase/src/http/http.h +1 -0
- data/ext/libcouchbase/src/http/http_io.cc +316 -0
- data/ext/libcouchbase/src/instance.cc +917 -0
- data/ext/libcouchbase/src/internal.h +285 -0
- data/ext/libcouchbase/src/iofactory.c +575 -0
- data/ext/libcouchbase/src/jsparse/parser.cc +445 -0
- data/ext/libcouchbase/src/jsparse/parser.h +159 -0
- data/ext/libcouchbase/src/lcbht/lcbht.cc +177 -0
- data/ext/libcouchbase/src/lcbht/lcbht.h +210 -0
- data/ext/libcouchbase/src/lcbio/connect.cc +603 -0
- data/ext/libcouchbase/src/lcbio/connect.h +400 -0
- data/ext/libcouchbase/src/lcbio/ctx.c +658 -0
- data/ext/libcouchbase/src/lcbio/ctx.h +405 -0
- data/ext/libcouchbase/src/lcbio/iotable.c +290 -0
- data/ext/libcouchbase/src/lcbio/iotable.h +169 -0
- data/ext/libcouchbase/src/lcbio/ioutils.cc +356 -0
- data/ext/libcouchbase/src/lcbio/ioutils.h +144 -0
- data/ext/libcouchbase/src/lcbio/lcbio.h +51 -0
- data/ext/libcouchbase/src/lcbio/manager.cc +579 -0
- data/ext/libcouchbase/src/lcbio/manager.h +195 -0
- data/ext/libcouchbase/src/lcbio/protoctx.c +84 -0
- data/ext/libcouchbase/src/lcbio/rw-inl.h +137 -0
- data/ext/libcouchbase/src/lcbio/ssl.h +159 -0
- data/ext/libcouchbase/src/lcbio/timer-cxx.h +87 -0
- data/ext/libcouchbase/src/lcbio/timer-ng.h +179 -0
- data/ext/libcouchbase/src/lcbio/timer.c +132 -0
- data/ext/libcouchbase/src/legacy.c +431 -0
- data/ext/libcouchbase/src/list.c +144 -0
- data/ext/libcouchbase/src/list.h +127 -0
- data/ext/libcouchbase/src/logging.c +244 -0
- data/ext/libcouchbase/src/logging.h +88 -0
- data/ext/libcouchbase/src/mc/compress.cc +171 -0
- data/ext/libcouchbase/src/mc/compress.h +56 -0
- data/ext/libcouchbase/src/mc/forward.c +186 -0
- data/ext/libcouchbase/src/mc/forward.h +90 -0
- data/ext/libcouchbase/src/mc/iovcursor-inl.h +279 -0
- data/ext/libcouchbase/src/mc/iovcursor.h +66 -0
- data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +115 -0
- data/ext/libcouchbase/src/mc/mcreq.c +983 -0
- data/ext/libcouchbase/src/mc/mcreq.h +1015 -0
- data/ext/libcouchbase/src/mcserver/mcserver.cc +1055 -0
- data/ext/libcouchbase/src/mcserver/mcserver.h +221 -0
- data/ext/libcouchbase/src/mcserver/negotiate.cc +757 -0
- data/ext/libcouchbase/src/mcserver/negotiate.h +128 -0
- data/ext/libcouchbase/src/mctx-helper.h +62 -0
- data/ext/libcouchbase/src/metrics.cc +132 -0
- data/ext/libcouchbase/src/n1ql/ixmgmt.cc +857 -0
- data/ext/libcouchbase/src/n1ql/n1ql-internal.h +22 -0
- data/ext/libcouchbase/src/n1ql/n1ql.cc +830 -0
- data/ext/libcouchbase/src/n1ql/params.cc +260 -0
- data/ext/libcouchbase/src/netbuf/netbuf-defs.h +89 -0
- data/ext/libcouchbase/src/netbuf/netbuf-mblock.h +235 -0
- data/ext/libcouchbase/src/netbuf/netbuf.c +929 -0
- data/ext/libcouchbase/src/netbuf/netbuf.h +452 -0
- data/ext/libcouchbase/src/newconfig.cc +365 -0
- data/ext/libcouchbase/src/nodeinfo.cc +184 -0
- data/ext/libcouchbase/src/operations/cbflush.cc +63 -0
- data/ext/libcouchbase/src/operations/counter.cc +117 -0
- data/ext/libcouchbase/src/operations/durability-cas.cc +251 -0
- data/ext/libcouchbase/src/operations/durability-seqno.cc +170 -0
- data/ext/libcouchbase/src/operations/durability.cc +668 -0
- data/ext/libcouchbase/src/operations/durability_internal.h +306 -0
- data/ext/libcouchbase/src/operations/get.cc +409 -0
- data/ext/libcouchbase/src/operations/observe-seqno.cc +94 -0
- data/ext/libcouchbase/src/operations/observe.cc +367 -0
- data/ext/libcouchbase/src/operations/ping.cc +496 -0
- data/ext/libcouchbase/src/operations/pktfwd.cc +86 -0
- data/ext/libcouchbase/src/operations/remove.cc +84 -0
- data/ext/libcouchbase/src/operations/stats.cc +459 -0
- data/ext/libcouchbase/src/operations/store.cc +358 -0
- data/ext/libcouchbase/src/operations/subdoc.cc +614 -0
- data/ext/libcouchbase/src/operations/touch.cc +84 -0
- data/ext/libcouchbase/src/packetutils.h +388 -0
- data/ext/libcouchbase/src/probes.d +182 -0
- data/ext/libcouchbase/src/rdb/bigalloc.c +225 -0
- data/ext/libcouchbase/src/rdb/bigalloc.h +73 -0
- data/ext/libcouchbase/src/rdb/chunkalloc.c +174 -0
- data/ext/libcouchbase/src/rdb/libcalloc.c +94 -0
- data/ext/libcouchbase/src/rdb/rope.c +419 -0
- data/ext/libcouchbase/src/rdb/rope.h +488 -0
- data/ext/libcouchbase/src/retrychk.cc +113 -0
- data/ext/libcouchbase/src/retryq.cc +458 -0
- data/ext/libcouchbase/src/retryq.h +170 -0
- data/ext/libcouchbase/src/ringbuffer.c +442 -0
- data/ext/libcouchbase/src/ringbuffer.h +100 -0
- data/ext/libcouchbase/src/rnd.cc +61 -0
- data/ext/libcouchbase/src/rnd.h +39 -0
- data/ext/libcouchbase/src/settings.c +125 -0
- data/ext/libcouchbase/src/settings.h +273 -0
- data/ext/libcouchbase/src/sllist-inl.h +197 -0
- data/ext/libcouchbase/src/sllist.h +76 -0
- data/ext/libcouchbase/src/ssl/CMakeLists.txt +11 -0
- data/ext/libcouchbase/src/ssl/ssl_c.c +442 -0
- data/ext/libcouchbase/src/ssl/ssl_common.c +478 -0
- data/ext/libcouchbase/src/ssl/ssl_e.c +421 -0
- data/ext/libcouchbase/src/ssl/ssl_iot_common.h +182 -0
- data/ext/libcouchbase/src/strcodecs/base64.c +307 -0
- data/ext/libcouchbase/src/strcodecs/strcodecs.h +302 -0
- data/ext/libcouchbase/src/timings.c +207 -0
- data/ext/libcouchbase/src/trace.h +117 -0
- data/ext/libcouchbase/src/tracing/span.cc +421 -0
- data/ext/libcouchbase/src/tracing/threshold_logging_tracer.cc +213 -0
- data/ext/libcouchbase/src/tracing/tracer.cc +53 -0
- data/ext/libcouchbase/src/tracing/tracing-internal.h +198 -0
- data/ext/libcouchbase/src/utilities.c +176 -0
- data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -0
- data/ext/libcouchbase/src/vbucket/aliases.h +35 -0
- data/ext/libcouchbase/src/vbucket/crc32.h +83 -0
- data/ext/libcouchbase/src/vbucket/hash.h +30 -0
- data/ext/libcouchbase/src/vbucket/json-inl.h +112 -0
- data/ext/libcouchbase/src/vbucket/ketama.c +66 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/global.h +32 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/md5.h +35 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/md5c-inl.h +335 -0
- data/ext/libcouchbase/src/vbucket/vbucket.c +1735 -0
- data/ext/libcouchbase/src/views/docreq.cc +213 -0
- data/ext/libcouchbase/src/views/docreq.h +94 -0
- data/ext/libcouchbase/src/views/viewreq.cc +381 -0
- data/ext/libcouchbase/src/views/viewreq.h +87 -0
- data/ext/libcouchbase/src/wait.cc +156 -0
- data/ext/libcouchbase/tests/CMakeLists.txt +149 -0
- data/ext/libcouchbase/tests/basic/t_base64.cc +109 -0
- data/ext/libcouchbase/tests/basic/t_ccbc103.cc +95 -0
- data/ext/libcouchbase/tests/basic/t_connstr.cc +456 -0
- data/ext/libcouchbase/tests/basic/t_creds.cc +96 -0
- data/ext/libcouchbase/tests/basic/t_ctlcodes.cc +92 -0
- data/ext/libcouchbase/tests/basic/t_host.cc +210 -0
- data/ext/libcouchbase/tests/basic/t_jsparse.cc +82 -0
- data/ext/libcouchbase/tests/basic/t_jsparse.h +589 -0
- data/ext/libcouchbase/tests/basic/t_list.cc +155 -0
- data/ext/libcouchbase/tests/basic/t_logger.cc +65 -0
- data/ext/libcouchbase/tests/basic/t_misc.cc +24 -0
- data/ext/libcouchbase/tests/basic/t_n1qlstrings.cc +17 -0
- data/ext/libcouchbase/tests/basic/t_netbuf.cc +446 -0
- data/ext/libcouchbase/tests/basic/t_packet.cc +215 -0
- data/ext/libcouchbase/tests/basic/t_ringbuffer.cc +278 -0
- data/ext/libcouchbase/tests/basic/t_scram.cc +514 -0
- data/ext/libcouchbase/tests/basic/t_slist.cc +429 -0
- data/ext/libcouchbase/tests/basic/t_strerror.cc +64 -0
- data/ext/libcouchbase/tests/basic/t_urlencode.cc +132 -0
- data/ext/libcouchbase/tests/check-all.cc +612 -0
- data/ext/libcouchbase/tests/htparse/t_basic.cc +173 -0
- data/ext/libcouchbase/tests/ioserver/connection.cc +166 -0
- data/ext/libcouchbase/tests/ioserver/future.cc +50 -0
- data/ext/libcouchbase/tests/ioserver/ioserver.cc +117 -0
- data/ext/libcouchbase/tests/ioserver/ioserver.h +478 -0
- data/ext/libcouchbase/tests/ioserver/socket.cc +88 -0
- data/ext/libcouchbase/tests/ioserver/ssl_connection.cc +145 -0
- data/ext/libcouchbase/tests/ioserver/threads-pthreads.cc +119 -0
- data/ext/libcouchbase/tests/ioserver/threads-win32.cc +117 -0
- data/ext/libcouchbase/tests/ioserver/threads.h +66 -0
- data/ext/libcouchbase/tests/iotests/iotests.h +15 -0
- data/ext/libcouchbase/tests/iotests/mock-environment.cc +632 -0
- data/ext/libcouchbase/tests/iotests/mock-environment.h +480 -0
- data/ext/libcouchbase/tests/iotests/mock-unit-test.cc +67 -0
- data/ext/libcouchbase/tests/iotests/mock-unit-test.h +61 -0
- data/ext/libcouchbase/tests/iotests/serverparams.h +76 -0
- data/ext/libcouchbase/tests/iotests/t_arithmetic.cc +143 -0
- data/ext/libcouchbase/tests/iotests/t_behavior.cc +220 -0
- data/ext/libcouchbase/tests/iotests/t_configcache.cc +117 -0
- data/ext/libcouchbase/tests/iotests/t_confmon.cc +223 -0
- data/ext/libcouchbase/tests/iotests/t_durability.cc +1108 -0
- data/ext/libcouchbase/tests/iotests/t_eerrs.cc +121 -0
- data/ext/libcouchbase/tests/iotests/t_errmap.cc +181 -0
- data/ext/libcouchbase/tests/iotests/t_forward.cc +118 -0
- data/ext/libcouchbase/tests/iotests/t_get.cc +512 -0
- data/ext/libcouchbase/tests/iotests/t_http.cc +438 -0
- data/ext/libcouchbase/tests/iotests/t_iops.cc +175 -0
- data/ext/libcouchbase/tests/iotests/t_lock.cc +274 -0
- data/ext/libcouchbase/tests/iotests/t_misc.cc +777 -0
- data/ext/libcouchbase/tests/iotests/t_mutate.cc +609 -0
- data/ext/libcouchbase/tests/iotests/t_n1ql.cc +270 -0
- data/ext/libcouchbase/tests/iotests/t_netfail.cc +778 -0
- data/ext/libcouchbase/tests/iotests/t_obseqno.cc +156 -0
- data/ext/libcouchbase/tests/iotests/t_regression.cc +321 -0
- data/ext/libcouchbase/tests/iotests/t_sched.cc +87 -0
- data/ext/libcouchbase/tests/iotests/t_serverops.cc +231 -0
- data/ext/libcouchbase/tests/iotests/t_smoke.cc +528 -0
- data/ext/libcouchbase/tests/iotests/t_snappy.cc +316 -0
- data/ext/libcouchbase/tests/iotests/t_subdoc.cc +857 -0
- data/ext/libcouchbase/tests/iotests/t_syncmode.cc +64 -0
- data/ext/libcouchbase/tests/iotests/t_views.cc +417 -0
- data/ext/libcouchbase/tests/iotests/testutil.cc +251 -0
- data/ext/libcouchbase/tests/iotests/testutil.h +163 -0
- data/ext/libcouchbase/tests/mc/mctest.h +119 -0
- data/ext/libcouchbase/tests/mc/pktmaker.h +101 -0
- data/ext/libcouchbase/tests/mc/t_alloc.cc +269 -0
- data/ext/libcouchbase/tests/mc/t_context.cc +100 -0
- data/ext/libcouchbase/tests/mc/t_flush.cc +185 -0
- data/ext/libcouchbase/tests/mc/t_forward.cc +239 -0
- data/ext/libcouchbase/tests/mc/t_ioflush.cc +102 -0
- data/ext/libcouchbase/tests/mc/t_iovcursor.cc +173 -0
- data/ext/libcouchbase/tests/mocksupport/procutil.c +305 -0
- data/ext/libcouchbase/tests/mocksupport/procutil.h +89 -0
- data/ext/libcouchbase/tests/mocksupport/server.c +391 -0
- data/ext/libcouchbase/tests/mocksupport/server.h +72 -0
- data/ext/libcouchbase/tests/mocksupport/timeout.c +69 -0
- data/ext/libcouchbase/tests/nonio_tests.cc +23 -0
- data/ext/libcouchbase/tests/rdb/rdbtest.h +133 -0
- data/ext/libcouchbase/tests/rdb/t_basic.cc +128 -0
- data/ext/libcouchbase/tests/rdb/t_bigalloc.cc +93 -0
- data/ext/libcouchbase/tests/rdb/t_refs.cc +112 -0
- data/ext/libcouchbase/tests/socktests/socktest.cc +344 -0
- data/ext/libcouchbase/tests/socktests/socktest.h +447 -0
- data/ext/libcouchbase/tests/socktests/t_basic.cc +143 -0
- data/ext/libcouchbase/tests/socktests/t_ctx.cc +73 -0
- data/ext/libcouchbase/tests/socktests/t_manager.cc +159 -0
- data/ext/libcouchbase/tests/socktests/t_putex.cc +256 -0
- data/ext/libcouchbase/tests/socktests/t_read.cc +187 -0
- data/ext/libcouchbase/tests/socktests/t_reentrant.cc +143 -0
- data/ext/libcouchbase/tests/socktests/t_ssl.cc +80 -0
- data/ext/libcouchbase/tests/socktests/t_write.cc +95 -0
- data/ext/libcouchbase/tests/start_mock.bat +15 -0
- data/ext/libcouchbase/tests/start_mock.sh +42 -0
- data/ext/libcouchbase/tests/unit_tests.cc +43 -0
- data/ext/libcouchbase/tests/vbucket/confdata/bad.json +101 -0
- data/ext/libcouchbase/tests/vbucket/confdata/full_25.json +363 -0
- data/ext/libcouchbase/tests/vbucket/confdata/ketama_expected.json +2562 -0
- data/ext/libcouchbase/tests/vbucket/confdata/map_node_present_nodesext_missing_nodes.json +94 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_25.json +90 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_30.json +1 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_45.json +1 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_ketama_config.json +31 -0
- data/ext/libcouchbase/tests/vbucket/confdata/terse_25.json +291 -0
- data/ext/libcouchbase/tests/vbucket/confdata/terse_30.json +1 -0
- data/ext/libcouchbase/tests/vbucket/t_config.cc +386 -0
- data/ext/libcouchbase/tools/CMakeLists.txt +80 -0
- data/ext/libcouchbase/tools/cbc-handlers.h +636 -0
- data/ext/libcouchbase/tools/cbc-n1qlback.cc +496 -0
- data/ext/libcouchbase/tools/cbc-pillowfight.cc +1230 -0
- data/ext/libcouchbase/tools/cbc-proxy.cc +534 -0
- data/ext/libcouchbase/tools/cbc-subdoc.cc +825 -0
- data/ext/libcouchbase/tools/cbc.cc +1928 -0
- data/ext/libcouchbase/tools/common/histogram.cc +44 -0
- data/ext/libcouchbase/tools/common/histogram.h +23 -0
- data/ext/libcouchbase/tools/common/options.cc +451 -0
- data/ext/libcouchbase/tools/common/options.h +90 -0
- data/ext/libcouchbase/tools/docgen/docgen.h +495 -0
- data/ext/libcouchbase/tools/docgen/loc.h +211 -0
- data/ext/libcouchbase/tools/docgen/placeholders.h +211 -0
- data/ext/libcouchbase/tools/docgen/seqgen.h +122 -0
- data/ext/libcouchbase/tools/extract-packets.rb +110 -0
- data/ext/libcouchbase/tools/linenoise/linenoise.c +1199 -0
- data/ext/libcouchbase/tools/linenoise/linenoise.h +73 -0
- data/lib/mt-libcouchbase/bucket.rb +825 -0
- data/lib/mt-libcouchbase/callbacks.rb +69 -0
- data/lib/mt-libcouchbase/connection.rb +896 -0
- data/lib/mt-libcouchbase/design_docs.rb +92 -0
- data/lib/mt-libcouchbase/error.rb +68 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdbase.rb +23 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdcounter.rb +36 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdendure.rb +26 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdfts.rb +24 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdget.rb +30 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdgetreplica.rb +49 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdhttp.rb +58 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdn1ql.rb +40 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdobseqno.rb +33 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdobserve.rb +30 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdstore.rb +40 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdstoredur.rb +45 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdsubdoc.rb +61 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdverbosity.rb +29 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdviewquery.rb +61 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/contigbuf.rb +14 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st.rb +15 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st0.rb +23 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st1.rb +26 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st2.rb +32 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st3.rb +26 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/crst_u.rb +20 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/durability_opts_st_v.rb +11 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/durability_opts_t.rb +14 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/durabilityopt_sv0.rb +63 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/enums.rb +1007 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/fragbuf.rb +18 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/ftshandle.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/histogram.rb +34 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/http_request_t.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/keybuf.rb +20 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/multicmd_ctx.rb +30 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/mutation_token.rb +17 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/n1qlhandle.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/n1qlparams.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respbase.rb +29 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respcounter.rb +32 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respendure.rb +49 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respfts.rb +40 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respget.rb +44 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/resphttp.rb +48 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respmcversion.rb +38 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respn1ql.rb +41 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respobseqno.rb +52 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respobserve.rb +41 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respserverbase.rb +32 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstats.rb +38 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstore.rb +32 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstoredur.rb +38 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respsubdoc.rb +35 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respviewquery.rb +67 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/sdentry.rb +22 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/sdspec.rb +31 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/t.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/valbuf.rb +22 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/valbuf_u_buf.rb +14 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/viewhandle.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase.rb +1175 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase_libuv.rb +22 -0
- data/lib/mt-libcouchbase/ext/tasks.rb +39 -0
- data/lib/mt-libcouchbase/n1ql.rb +80 -0
- data/lib/mt-libcouchbase/query_full_text.rb +147 -0
- data/lib/mt-libcouchbase/query_n1ql.rb +123 -0
- data/lib/mt-libcouchbase/query_view.rb +135 -0
- data/lib/mt-libcouchbase/results_fiber.rb +281 -0
- data/lib/mt-libcouchbase/results_native.rb +220 -0
- data/lib/mt-libcouchbase/subdoc_request.rb +139 -0
- data/lib/mt-libcouchbase/version.rb +5 -0
- data/lib/mt-libcouchbase.rb +40 -0
- data/mt-libcouchbase.gemspec +68 -0
- data/spec/bucket_spec.rb +290 -0
- data/spec/connection_spec.rb +257 -0
- data/spec/design_docs_spec.rb +31 -0
- data/spec/error_spec.rb +26 -0
- data/spec/fts_spec.rb +135 -0
- data/spec/n1ql_spec.rb +260 -0
- data/spec/results_libuv_spec.rb +244 -0
- data/spec/results_native_spec.rb +259 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/design.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/data-0000.cbb +0 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/failover.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/meta.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/seqno.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/snapshot_markers.json +1 -0
- data/spec/subdoc_spec.rb +192 -0
- data/spec/view_spec.rb +201 -0
- data/windows_build.md +36 -0
- metadata +873 -0
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2010-2013 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
#ifndef TESTS_MOCK_ENVIRONMENT_H
|
|
18
|
+
#define TESTS_MOCK_ENVIRONMENT_H 1
|
|
19
|
+
|
|
20
|
+
#include "config.h"
|
|
21
|
+
#include <gtest/gtest.h>
|
|
22
|
+
#include <libcouchbase/couchbase.h>
|
|
23
|
+
#include "serverparams.h"
|
|
24
|
+
#include "contrib/lcb-jsoncpp/lcb-jsoncpp.h"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class HandleWrap
|
|
28
|
+
{
|
|
29
|
+
|
|
30
|
+
friend class MockEnvironment;
|
|
31
|
+
|
|
32
|
+
public:
|
|
33
|
+
lcb_t getLcb() const {
|
|
34
|
+
return instance;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
void destroy();
|
|
38
|
+
|
|
39
|
+
// Don't ever allow copying. C++0x allows = 0, though
|
|
40
|
+
HandleWrap operator= (const HandleWrap &) {
|
|
41
|
+
fprintf(stderr, "Can't copy this object around!\n");
|
|
42
|
+
abort();
|
|
43
|
+
return HandleWrap();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
HandleWrap() : instance(NULL), iops(NULL) { }
|
|
47
|
+
virtual ~HandleWrap();
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
private:
|
|
51
|
+
lcb_t instance;
|
|
52
|
+
lcb_io_opt_t iops;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class MockCommand
|
|
57
|
+
{
|
|
58
|
+
#define XMOCKCMD(X) \
|
|
59
|
+
X(FAILOVER) \
|
|
60
|
+
X(RESPAWN) \
|
|
61
|
+
X(HICCUP) \
|
|
62
|
+
X(TRUNCATE) \
|
|
63
|
+
X(MOCKINFO) \
|
|
64
|
+
X(PERSIST) \
|
|
65
|
+
X(CACHE) \
|
|
66
|
+
X(UNPERSIST) \
|
|
67
|
+
X(UNCACHE) \
|
|
68
|
+
X(ENDURE) \
|
|
69
|
+
X(PURGE) \
|
|
70
|
+
X(KEYINFO) \
|
|
71
|
+
X(GET_MCPORTS) \
|
|
72
|
+
X(SET_CCCP) \
|
|
73
|
+
X(REGEN_VBCOORDS) \
|
|
74
|
+
X(RESET_QUERYSTATE) \
|
|
75
|
+
X(OPFAIL) \
|
|
76
|
+
X(START_RETRY_VERIFY) \
|
|
77
|
+
X(CHECK_RETRY_VERIFY) \
|
|
78
|
+
X(SET_ENHANCED_ERRORS) \
|
|
79
|
+
X(SET_COMPRESSION) \
|
|
80
|
+
X(SET_SASL_MECHANISMS)
|
|
81
|
+
|
|
82
|
+
public:
|
|
83
|
+
enum Code {
|
|
84
|
+
#define X(cc) cc,
|
|
85
|
+
XMOCKCMD(X)
|
|
86
|
+
#undef X
|
|
87
|
+
_NONE
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
static std::string GetName(Code code) {
|
|
91
|
+
|
|
92
|
+
#define X(cc) if (code == cc) { return #cc; }
|
|
93
|
+
XMOCKCMD(X)
|
|
94
|
+
#undef X
|
|
95
|
+
|
|
96
|
+
abort();
|
|
97
|
+
return "";
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
MockCommand(Code code);
|
|
101
|
+
|
|
102
|
+
// Various methods to set a field in the payload
|
|
103
|
+
template <typename T> void set(const std::string& s, const T& v) {
|
|
104
|
+
(*payload)[s] = v;
|
|
105
|
+
}
|
|
106
|
+
virtual ~MockCommand();
|
|
107
|
+
|
|
108
|
+
// Encodes the command in a form suitable for sending over the network
|
|
109
|
+
std::string encode();
|
|
110
|
+
|
|
111
|
+
protected:
|
|
112
|
+
Code code;
|
|
113
|
+
std::string name;
|
|
114
|
+
Json::Value command;
|
|
115
|
+
Json::Value *payload;
|
|
116
|
+
virtual void finalizePayload() {}
|
|
117
|
+
|
|
118
|
+
private:
|
|
119
|
+
MockCommand(const MockCommand &other);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
class MockKeyCommand : public MockCommand
|
|
123
|
+
{
|
|
124
|
+
public:
|
|
125
|
+
MockKeyCommand(Code code, std::string &key)
|
|
126
|
+
: MockCommand(code), vbucket(-1) {
|
|
127
|
+
this->key = key;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const std::string &getKey() const {
|
|
131
|
+
return key;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
short vbucket;
|
|
135
|
+
std::string bucket;
|
|
136
|
+
std::string key;
|
|
137
|
+
|
|
138
|
+
protected:
|
|
139
|
+
virtual void finalizePayload();
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
class MockMutationCommand : public MockKeyCommand
|
|
143
|
+
{
|
|
144
|
+
public:
|
|
145
|
+
MockMutationCommand(Code code, std::string &key)
|
|
146
|
+
: MockKeyCommand(code, key), onMaster(false), replicaCount(0), cas(0) {}
|
|
147
|
+
|
|
148
|
+
bool onMaster;
|
|
149
|
+
int replicaCount;
|
|
150
|
+
std::vector<int> replicaList;
|
|
151
|
+
lcb_uint64_t cas;
|
|
152
|
+
std::string value;
|
|
153
|
+
|
|
154
|
+
protected:
|
|
155
|
+
virtual void finalizePayload();
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
class MockBucketCommand : public MockCommand
|
|
159
|
+
{
|
|
160
|
+
public:
|
|
161
|
+
MockBucketCommand(Code code, int index, std::string bucketstr = "default")
|
|
162
|
+
: MockCommand(code) {
|
|
163
|
+
ix = index;
|
|
164
|
+
bucket = bucketstr;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
protected:
|
|
168
|
+
virtual void finalizePayload();
|
|
169
|
+
int ix;
|
|
170
|
+
std::string bucket;
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
class MockOpfailCommand : public MockCommand
|
|
174
|
+
{
|
|
175
|
+
public:
|
|
176
|
+
MockOpfailCommand(uint16_t errcode, int index, int count = -1,
|
|
177
|
+
std::string bucketstr = "default")
|
|
178
|
+
: MockCommand(OPFAIL) {
|
|
179
|
+
set("count", count);
|
|
180
|
+
set("bucket", bucketstr);
|
|
181
|
+
set("code", errcode);
|
|
182
|
+
|
|
183
|
+
Json::Value srvlist(Json::arrayValue);
|
|
184
|
+
srvlist.append(index);
|
|
185
|
+
set("servers", srvlist);
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
class MockOpFailClearCommand : public MockCommand {
|
|
190
|
+
public:
|
|
191
|
+
MockOpFailClearCommand(size_t nservers, std::string bucketstr = "default")
|
|
192
|
+
: MockCommand(OPFAIL) {
|
|
193
|
+
set("count", -1);
|
|
194
|
+
set("bucket", bucketstr);
|
|
195
|
+
set("code", 0);
|
|
196
|
+
|
|
197
|
+
Json::Value srvlist(Json::arrayValue);
|
|
198
|
+
for (size_t ii = 0; ii < nservers; ++ii) {
|
|
199
|
+
srvlist.append(static_cast<int>(ii));
|
|
200
|
+
}
|
|
201
|
+
set("servers", srvlist);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
class MockResponse
|
|
206
|
+
{
|
|
207
|
+
public:
|
|
208
|
+
MockResponse() {}
|
|
209
|
+
~MockResponse();
|
|
210
|
+
void assign(const std::string& s);
|
|
211
|
+
|
|
212
|
+
bool isOk();
|
|
213
|
+
const Json::Value& getRawResponse() {
|
|
214
|
+
return jresp;
|
|
215
|
+
}
|
|
216
|
+
const Json::Value& constResp() const { return jresp; }
|
|
217
|
+
|
|
218
|
+
protected:
|
|
219
|
+
Json::Value jresp;
|
|
220
|
+
friend std::ostream& operator<<(std::ostream&, const MockResponse&);
|
|
221
|
+
private:
|
|
222
|
+
MockResponse(const MockResponse&);
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
class MockEnvironment : public ::testing::Environment
|
|
226
|
+
{
|
|
227
|
+
public:
|
|
228
|
+
enum ServerVersion {
|
|
229
|
+
VERSION_UNKNOWN = 0,
|
|
230
|
+
VERSION_40 = 4,
|
|
231
|
+
VERSION_41 = 5,
|
|
232
|
+
VERSION_45 = 6,
|
|
233
|
+
VERSION_46 = 7,
|
|
234
|
+
VERSION_50 = 8
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
virtual void SetUp();
|
|
238
|
+
virtual void TearDown();
|
|
239
|
+
|
|
240
|
+
static MockEnvironment *getInstance(void);
|
|
241
|
+
static void Reset();
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Make a connect structure you may utilize to connect to
|
|
245
|
+
* the backend we're running the tests towards.
|
|
246
|
+
*
|
|
247
|
+
* @param crst the create structure to fill in
|
|
248
|
+
* @param io the io ops to use (pass NULL if you don't have a
|
|
249
|
+
* special io ops you want to use
|
|
250
|
+
*/
|
|
251
|
+
void makeConnectParams(lcb_create_st &crst, lcb_io_opt_t io=NULL) {
|
|
252
|
+
serverParams.makeConnectParams(crst, io);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Get the number of nodes used in the backend
|
|
257
|
+
*/
|
|
258
|
+
int getNumNodes(void) const {
|
|
259
|
+
return numNodes;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Are we currently using a real cluster as the backend, or
|
|
264
|
+
* are we using the mock server.
|
|
265
|
+
*
|
|
266
|
+
* You should try your very best to avoid using this variable, and
|
|
267
|
+
* rather extend the mock server to support the requested feature.
|
|
268
|
+
*/
|
|
269
|
+
bool isRealCluster(void) const {
|
|
270
|
+
return realCluster;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Simulate node failover. In this case mock will disable server
|
|
275
|
+
* corresponding given index an push new configuration. No data
|
|
276
|
+
* rebalancing implemented on the mock.
|
|
277
|
+
*
|
|
278
|
+
* @param index the index of the node on the mock
|
|
279
|
+
* @param bucket the name of the bucket
|
|
280
|
+
*/
|
|
281
|
+
void failoverNode(int index, std::string bucket = "default", bool rebalance = true);
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Simulate node reconvering. In this case mock will enable server
|
|
285
|
+
* corresponding given index an push new configuration. No data
|
|
286
|
+
* rebalancing implemented on the mock.
|
|
287
|
+
*
|
|
288
|
+
* @param index the index of the node on the mock
|
|
289
|
+
* @param bucket the name of the bucket
|
|
290
|
+
*/
|
|
291
|
+
void respawnNode(int index, std::string bucket = "default");
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Regenerate existing UUIDs and sequence numbers on the cluster to
|
|
295
|
+
* simulate a dcp-style failover. This is a separate command as triggering
|
|
296
|
+
* this during a "Normal" failover severly slows down the mock.
|
|
297
|
+
*
|
|
298
|
+
* @param bucket
|
|
299
|
+
*/
|
|
300
|
+
void regenVbCoords(std::string bucket = "default");
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Retrieve the memcached listening ports for a given bucket
|
|
305
|
+
* @param bucket the bucket for which to retrieve memcached port into
|
|
306
|
+
* @return a vector of ports to use.
|
|
307
|
+
*/
|
|
308
|
+
std::vector<int> getMcPorts(std::string bucket = "default");
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Enable SASL mechanisms on the mock cluster
|
|
312
|
+
* @param mechanisms list of mechanisms to enable
|
|
313
|
+
* @param bucket the bucket on which to enable these mechanisms
|
|
314
|
+
* @param nodes a list of by-index nodes on which to enable mechanisms. If NULL
|
|
315
|
+
* then all nodes are enabled
|
|
316
|
+
*/
|
|
317
|
+
void setSaslMechs(std::vector<std::string>& mechanisms, std::string bucket = "",
|
|
318
|
+
const std::vector<int>* nodes = NULL);
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Enable CCCP on the mock cluster
|
|
322
|
+
* @param bucket the bucket on which to enable CCCP
|
|
323
|
+
* @param nodes a list of by-index nodes on which to enable CCCP. If NULL
|
|
324
|
+
* then all nodes are enabled
|
|
325
|
+
* @param bucket the bucket on which to
|
|
326
|
+
*/
|
|
327
|
+
void setCCCP(bool enabled,
|
|
328
|
+
std::string bucket = "",
|
|
329
|
+
const std::vector<int>* nodes = NULL);
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Enable enhanced errors on the mock cluster
|
|
333
|
+
*
|
|
334
|
+
* This includes generation event id (ref), and setting context for some errors
|
|
335
|
+
* .
|
|
336
|
+
* @param bucket the bucket on which to enable enhanced errors
|
|
337
|
+
* @param nodes a list of by-index nodes on which to enable Enhanced Errors. If NULL
|
|
338
|
+
* then all nodes are enabled
|
|
339
|
+
*/
|
|
340
|
+
void setEnhancedErrors(bool enabled,
|
|
341
|
+
std::string bucket = "",
|
|
342
|
+
const std::vector<int>* nodes = NULL);
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Change compression mode on the server
|
|
346
|
+
*
|
|
347
|
+
* @param mode compression mode ("off", "passive", "active")
|
|
348
|
+
* @param bucket the bucket on which to enable compression
|
|
349
|
+
* @param nodes a list of by-index nodes on which to enable compression. If NULL
|
|
350
|
+
* then all nodes are enabled
|
|
351
|
+
*/
|
|
352
|
+
void setCompression(std::string mode,
|
|
353
|
+
std::string bucket = "",
|
|
354
|
+
const std::vector<int>* nodes = NULL);
|
|
355
|
+
|
|
356
|
+
const Json::Value getKeyInfo(std::string key, std::string bucket = "");
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Create a connection to the mock/real server.
|
|
360
|
+
*
|
|
361
|
+
* The instance will be initialized with the the connect parameters
|
|
362
|
+
* to either the mock or a real server (just like makeConnectParams),
|
|
363
|
+
* and call lcb_create. The io instance will be stored in the instance
|
|
364
|
+
* cookie so you may grab it from there.
|
|
365
|
+
*
|
|
366
|
+
* You should call lcb_destroy on the instance when you're done
|
|
367
|
+
* using it.
|
|
368
|
+
*
|
|
369
|
+
* @param instance the instane to create
|
|
370
|
+
*/
|
|
371
|
+
void createConnection(lcb_t &instance);
|
|
372
|
+
|
|
373
|
+
void createConnection(HandleWrap &handle, lcb_t &instance);
|
|
374
|
+
void createConnection(HandleWrap &handle, lcb_t& instance,
|
|
375
|
+
const lcb_create_st &options);
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Setup mock to split response in two parts: send first "offset" bytes
|
|
379
|
+
* immediately and send the rest after "msecs" milliseconds.
|
|
380
|
+
*
|
|
381
|
+
* @param msecs the number of milliseconds to wait before sending the
|
|
382
|
+
* rest of the packet.
|
|
383
|
+
* @param offset the number of the bytes to send in first before delay
|
|
384
|
+
*/
|
|
385
|
+
void hiccupNodes(int msecs, int offset);
|
|
386
|
+
|
|
387
|
+
ServerVersion getServerVersion(void) const {
|
|
388
|
+
return serverVersion;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
void setServerVersion(ServerVersion ver) {
|
|
392
|
+
serverVersion = ver;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
void sendCommand(MockCommand &cmd);
|
|
396
|
+
void getResponse(MockResponse &resp);
|
|
397
|
+
void getResponse() { MockResponse tmp; getResponse(tmp); }
|
|
398
|
+
|
|
399
|
+
bool hasFeature(const char *feature) {
|
|
400
|
+
return featureRegistry.find(feature) != featureRegistry.end();
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
static void printSkipMessage(std::string file, int line, std::string reason) {
|
|
404
|
+
std::cerr << "Skipping " << file << ":" << std::dec << line;
|
|
405
|
+
std::cerr << " (" << reason << ")";
|
|
406
|
+
std::cerr << std::endl;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
MockEnvironment(const char **argv, std::string name = "default");
|
|
410
|
+
virtual ~MockEnvironment();
|
|
411
|
+
void postCreate(lcb_t instance);
|
|
412
|
+
|
|
413
|
+
protected:
|
|
414
|
+
/**
|
|
415
|
+
* Protected destructor to make it to a singleton
|
|
416
|
+
*/
|
|
417
|
+
MockEnvironment();
|
|
418
|
+
/**
|
|
419
|
+
* Handle to the one and only instance of the mock environment
|
|
420
|
+
*/
|
|
421
|
+
static MockEnvironment *instance;
|
|
422
|
+
|
|
423
|
+
void bootstrapRealCluster();
|
|
424
|
+
const struct test_server_info *mock;
|
|
425
|
+
ServerParams serverParams;
|
|
426
|
+
int numNodes;
|
|
427
|
+
bool realCluster;
|
|
428
|
+
ServerVersion serverVersion;
|
|
429
|
+
const char *http;
|
|
430
|
+
lcb_io_opt_st *iops;
|
|
431
|
+
std::set<std::string> featureRegistry;
|
|
432
|
+
std::string bucketName;
|
|
433
|
+
std::string userName;
|
|
434
|
+
const char **argv;
|
|
435
|
+
void clearAndReset();
|
|
436
|
+
|
|
437
|
+
private:
|
|
438
|
+
lcb_t innerClient;
|
|
439
|
+
void setupInnerClient();
|
|
440
|
+
void init();
|
|
441
|
+
};
|
|
442
|
+
|
|
443
|
+
#define LCB_TEST_REQUIRE_CLUSTER_VERSION(v) \
|
|
444
|
+
if (!MockEnvironment::getInstance()->isRealCluster()) { \
|
|
445
|
+
MockEnvironment::printSkipMessage(__FILE__, __LINE__, \
|
|
446
|
+
"need real cluster"); \
|
|
447
|
+
return; \
|
|
448
|
+
} \
|
|
449
|
+
if (MockEnvironment::getInstance()->getServerVersion() < v) { \
|
|
450
|
+
MockEnvironment::printSkipMessage(__FILE__, __LINE__, \
|
|
451
|
+
"needs higher cluster version"); \
|
|
452
|
+
return; \
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
#define LCB_TEST_REQUIRE_FEATURE(s) \
|
|
456
|
+
if (!MockEnvironment::getInstance()->hasFeature(s)) { \
|
|
457
|
+
MockEnvironment::printSkipMessage(__FILE__, __LINE__, \
|
|
458
|
+
"Feature " s \
|
|
459
|
+
" missing in server implementation"); \
|
|
460
|
+
return; \
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
#define CLUSTER_VERSION_IS_HIGHER_THAN(v) \
|
|
464
|
+
(MockEnvironment::getInstance()->isRealCluster() && MockEnvironment::getInstance()->getServerVersion() >= v)
|
|
465
|
+
|
|
466
|
+
#define SKIP_IF_CLUSTER_VERSION_IS_HIGHER_THAN(v) \
|
|
467
|
+
if (CLUSTER_VERSION_IS_HIGHER_THAN(v)) { \
|
|
468
|
+
MockEnvironment::printSkipMessage(__FILE__, __LINE__, "needs lower cluster version"); \
|
|
469
|
+
return; \
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
#define CLUSTER_VERSION_IS_LOWER_THAN(v) \
|
|
473
|
+
(MockEnvironment::getInstance()->isRealCluster() && MockEnvironment::getInstance()->getServerVersion() < v)
|
|
474
|
+
|
|
475
|
+
#define SKIP_IF_CLUSTER_VERSION_IS_LOWER_THAN(v) \
|
|
476
|
+
if (CLUSTER_VERSION_IS_LOWER_THAN(v)) { \
|
|
477
|
+
MockEnvironment::printSkipMessage(__FILE__, __LINE__, "needs higher cluster version"); \
|
|
478
|
+
return; \
|
|
479
|
+
}
|
|
480
|
+
#endif
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2012 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
#include "config.h"
|
|
18
|
+
#include "iotests.h"
|
|
19
|
+
#include <map>
|
|
20
|
+
|
|
21
|
+
#include "internal.h" /* vbucket_* things from lcb_t */
|
|
22
|
+
#include <lcbio/iotable.h>
|
|
23
|
+
#include "bucketconfig/bc_http.h"
|
|
24
|
+
|
|
25
|
+
#define LOGARGS(instance, lvl) \
|
|
26
|
+
instance->settings, "tests-MUT", LCB_LOG_##lvl, __FILE__, __LINE__
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Keep these around in case we do something useful here in the future
|
|
30
|
+
*/
|
|
31
|
+
void MockUnitTest::SetUp() {
|
|
32
|
+
MockEnvironment::Reset();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
void checkConnectCommon(lcb_t instance) {
|
|
36
|
+
ASSERT_EQ(LCB_SUCCESS, lcb_connect(instance));
|
|
37
|
+
lcb_wait(instance);
|
|
38
|
+
ASSERT_EQ(LCB_SUCCESS, lcb_get_bootstrap_status(instance));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
void MockUnitTest::createConnection(HandleWrap &handle, lcb_t &instance)
|
|
42
|
+
{
|
|
43
|
+
MockEnvironment::getInstance()->createConnection(handle, instance);
|
|
44
|
+
checkConnectCommon(handle.getLcb());
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
void MockUnitTest::createConnection(lcb_t &instance)
|
|
48
|
+
{
|
|
49
|
+
MockEnvironment::getInstance()->createConnection(instance);
|
|
50
|
+
checkConnectCommon(instance);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
void MockUnitTest::createConnection(HandleWrap &handle)
|
|
54
|
+
{
|
|
55
|
+
lcb_t instance = NULL;
|
|
56
|
+
createConnection(handle, instance);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
lcb_error_t
|
|
60
|
+
MockUnitTest::tryCreateConnection(HandleWrap& hw,
|
|
61
|
+
lcb_t& instance, lcb_create_st& crparams)
|
|
62
|
+
{
|
|
63
|
+
MockEnvironment::getInstance()->createConnection(hw, instance, crparams);
|
|
64
|
+
EXPECT_EQ(LCB_SUCCESS, lcb_connect(instance));
|
|
65
|
+
lcb_wait(instance);
|
|
66
|
+
return lcb_get_bootstrap_status(instance);
|
|
67
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2010-2012 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
#ifndef TESTS_MOCK_UNIT_TESTS_H
|
|
18
|
+
#define TESTS_MOCK_UNIT_TESTS_H 1
|
|
19
|
+
|
|
20
|
+
#include "config.h"
|
|
21
|
+
#include <gtest/gtest.h>
|
|
22
|
+
#include <libcouchbase/couchbase.h>
|
|
23
|
+
#include "mock-environment.h"
|
|
24
|
+
|
|
25
|
+
class HandleWrap;
|
|
26
|
+
|
|
27
|
+
#define SKIP_IF_MOCK() \
|
|
28
|
+
if (!getenv(LCB_TEST_REALCLUSTER_ENV)) { \
|
|
29
|
+
MockEnvironment::printSkipMessage(__FILE__, __LINE__, "needs real cluster"); \
|
|
30
|
+
return; \
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
#define SKIP_UNLESS_MOCK() \
|
|
34
|
+
if (getenv(LCB_TEST_REALCLUSTER_ENV)) { \
|
|
35
|
+
MockEnvironment::printSkipMessage(__FILE__, __LINE__, "needs mock cluster"); \
|
|
36
|
+
return; \
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
#define ASSERT_ERRISA(err, et) \
|
|
40
|
+
ASSERT_EQ(et, (int)lcb_get_errtype(err) & (int)et)
|
|
41
|
+
|
|
42
|
+
class MockUnitTest : public ::testing::Test
|
|
43
|
+
{
|
|
44
|
+
protected:
|
|
45
|
+
virtual void SetUp();
|
|
46
|
+
virtual void createConnection(lcb_t &instance);
|
|
47
|
+
virtual void createConnection(HandleWrap &handle);
|
|
48
|
+
virtual void createConnection(HandleWrap &handle, lcb_t &instance);
|
|
49
|
+
virtual lcb_error_t tryCreateConnection(HandleWrap &hw,
|
|
50
|
+
lcb_t &instance, lcb_create_st &crparams);
|
|
51
|
+
|
|
52
|
+
// A mock "Transaction"
|
|
53
|
+
void doMockTxn(MockCommand &cmd) {
|
|
54
|
+
MockEnvironment::getInstance()->sendCommand(cmd);
|
|
55
|
+
MockResponse tmp;
|
|
56
|
+
MockEnvironment::getInstance()->getResponse(tmp);
|
|
57
|
+
ASSERT_TRUE(tmp.isOk());
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
#endif
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2010-2012 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
#ifndef TESTS_SERVER_PARAMS_H
|
|
18
|
+
#define TESTS_SERVER_PARAMS_H 1
|
|
19
|
+
|
|
20
|
+
#include "config.h"
|
|
21
|
+
#include <string>
|
|
22
|
+
#include <string.h>
|
|
23
|
+
#include <libcouchbase/couchbase.h>
|
|
24
|
+
|
|
25
|
+
class ServerParams
|
|
26
|
+
{
|
|
27
|
+
public:
|
|
28
|
+
ServerParams() { }
|
|
29
|
+
ServerParams(const char *h, const char *b, const char *u, const char *p) {
|
|
30
|
+
loadParam(host, h);
|
|
31
|
+
loadParam(bucket, b);
|
|
32
|
+
loadParam(user, u);
|
|
33
|
+
loadParam(pass, p);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
void makeConnectParams(lcb_create_st &crst, lcb_io_opt_t io) {
|
|
37
|
+
memset(&crst, 0, sizeof(crst));
|
|
38
|
+
crst.version = 2;
|
|
39
|
+
crst.v.v2.host = host.c_str();
|
|
40
|
+
crst.v.v2.bucket = bucket.c_str();
|
|
41
|
+
crst.v.v2.user = user.c_str();
|
|
42
|
+
crst.v.v2.passwd = pass.c_str();
|
|
43
|
+
crst.v.v2.io = io;
|
|
44
|
+
if (!mcNodes.empty()) {
|
|
45
|
+
crst.v.v2.mchosts = mcNodes.c_str();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
void setMcPorts(const std::vector<int>& portlist) {
|
|
50
|
+
std::stringstream ss;
|
|
51
|
+
std::vector<int>::const_iterator ii = portlist.begin();
|
|
52
|
+
for (; ii != portlist.end(); ii++) {
|
|
53
|
+
ss << "localhost";
|
|
54
|
+
ss << ":";
|
|
55
|
+
ss << std::dec << *ii;
|
|
56
|
+
ss << ";";
|
|
57
|
+
}
|
|
58
|
+
mcNodes = ss.str();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
protected:
|
|
62
|
+
std::string host;
|
|
63
|
+
std::string user;
|
|
64
|
+
std::string pass;
|
|
65
|
+
std::string bucket;
|
|
66
|
+
std::string mcNodes;
|
|
67
|
+
|
|
68
|
+
private:
|
|
69
|
+
void loadParam(std::string &d, const char *s) {
|
|
70
|
+
if (s) {
|
|
71
|
+
d.assign(s);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
#endif
|