couchbase 4.2.3 → 4.2.5-dev.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.
Files changed (205) hide show
  1. package/CMakeLists.txt +136 -11
  2. package/deps/couchbase-cxx-client/CMakeLists.txt +54 -4
  3. package/deps/couchbase-cxx-client/README.md +1 -0
  4. package/deps/couchbase-cxx-client/bin/create-search-index +164 -0
  5. package/deps/couchbase-cxx-client/bin/init-cluster +55 -10
  6. package/deps/couchbase-cxx-client/bin/run-unit-tests +62 -6
  7. package/deps/couchbase-cxx-client/bin/travel-sample-index-v6.json +184 -0
  8. package/deps/couchbase-cxx-client/bin/travel-sample-index.json +188 -0
  9. package/deps/couchbase-cxx-client/cmake/Documentation.cmake +0 -1
  10. package/deps/couchbase-cxx-client/cmake/OpenSSL.cmake +98 -3
  11. package/deps/couchbase-cxx-client/cmake/Testing.cmake +8 -0
  12. package/deps/couchbase-cxx-client/cmake/build_config.hxx.in +3 -0
  13. package/deps/couchbase-cxx-client/core/bucket.cxx +183 -152
  14. package/deps/couchbase-cxx-client/core/bucket.hxx +17 -4
  15. package/deps/couchbase-cxx-client/core/cluster.hxx +18 -1
  16. package/deps/couchbase-cxx-client/core/cluster_options.hxx +1 -0
  17. package/deps/couchbase-cxx-client/core/error_context/key_value.cxx +2 -1
  18. package/deps/couchbase-cxx-client/core/error_context/key_value.hxx +10 -12
  19. package/deps/couchbase-cxx-client/core/error_context/search.hxx +1 -1
  20. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +1 -0
  21. package/deps/couchbase-cxx-client/core/impl/boolean_field_query.cxx +40 -0
  22. package/deps/couchbase-cxx-client/core/impl/boolean_query.cxx +62 -0
  23. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +1 -0
  24. package/deps/couchbase-cxx-client/core/impl/conjunction_query.cxx +51 -0
  25. package/deps/couchbase-cxx-client/core/impl/date_range.cxx +89 -0
  26. package/deps/couchbase-cxx-client/core/impl/date_range_facet.cxx +54 -0
  27. package/deps/couchbase-cxx-client/core/impl/date_range_facet_result.cxx +64 -0
  28. package/deps/couchbase-cxx-client/core/impl/date_range_query.cxx +125 -0
  29. package/deps/couchbase-cxx-client/core/impl/disjunction_query.cxx +51 -0
  30. package/deps/couchbase-cxx-client/core/impl/encoded_search_facet.hxx +29 -0
  31. package/deps/couchbase-cxx-client/core/impl/encoded_search_query.hxx +29 -0
  32. package/deps/couchbase-cxx-client/core/impl/encoded_search_sort.hxx +29 -0
  33. package/deps/couchbase-cxx-client/core/impl/geo_bounding_box_query.cxx +46 -0
  34. package/deps/couchbase-cxx-client/core/impl/geo_distance_query.cxx +43 -0
  35. package/deps/couchbase-cxx-client/core/impl/geo_polygon_query.cxx +46 -0
  36. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.cxx +80 -0
  37. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.hxx +48 -0
  38. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.cxx +80 -0
  39. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.hxx +48 -0
  40. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.cxx +141 -0
  41. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.hxx +61 -0
  42. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.cxx +60 -0
  43. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.hxx +41 -0
  44. package/deps/couchbase-cxx-client/core/impl/internal_search_result.cxx +84 -0
  45. package/deps/couchbase-cxx-client/core/impl/internal_search_result.hxx +43 -0
  46. package/deps/couchbase-cxx-client/core/impl/internal_search_row.cxx +82 -0
  47. package/deps/couchbase-cxx-client/core/impl/internal_search_row.hxx +56 -0
  48. package/deps/couchbase-cxx-client/core/impl/internal_search_row_location.hxx +32 -0
  49. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.cxx +137 -0
  50. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.hxx +45 -0
  51. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.cxx +80 -0
  52. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.hxx +48 -0
  53. package/deps/couchbase-cxx-client/core/impl/key_value_error_context.cxx +98 -0
  54. package/deps/couchbase-cxx-client/core/impl/match_all_query.cxx +35 -0
  55. package/deps/couchbase-cxx-client/core/impl/match_none_query.cxx +35 -0
  56. package/deps/couchbase-cxx-client/core/impl/match_phrase_query.cxx +43 -0
  57. package/deps/couchbase-cxx-client/core/impl/match_query.cxx +59 -0
  58. package/deps/couchbase-cxx-client/core/impl/numeric_range.cxx +49 -0
  59. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet.cxx +54 -0
  60. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet_result.cxx +64 -0
  61. package/deps/couchbase-cxx-client/core/impl/numeric_range_query.cxx +56 -0
  62. package/deps/couchbase-cxx-client/core/impl/phrase_query.cxx +42 -0
  63. package/deps/couchbase-cxx-client/core/impl/prefix_query.cxx +40 -0
  64. package/deps/couchbase-cxx-client/core/impl/query_error_context.cxx +75 -0
  65. package/deps/couchbase-cxx-client/core/impl/query_string_query.cxx +37 -0
  66. package/deps/couchbase-cxx-client/core/impl/regexp_query.cxx +40 -0
  67. package/deps/couchbase-cxx-client/core/impl/search.cxx +191 -0
  68. package/deps/couchbase-cxx-client/core/impl/search_error_context.cxx +147 -0
  69. package/deps/couchbase-cxx-client/core/impl/search_meta_data.cxx +46 -0
  70. package/deps/couchbase-cxx-client/core/impl/search_result.cxx +66 -0
  71. package/deps/couchbase-cxx-client/core/impl/search_row.cxx +74 -0
  72. package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +64 -0
  73. package/deps/couchbase-cxx-client/core/impl/search_row_locations.cxx +66 -0
  74. package/deps/couchbase-cxx-client/core/impl/search_sort_field.cxx +104 -0
  75. package/deps/couchbase-cxx-client/core/impl/search_sort_id.cxx +43 -0
  76. package/deps/couchbase-cxx-client/core/impl/search_sort_score.cxx +43 -0
  77. package/deps/couchbase-cxx-client/core/impl/term_facet.cxx +36 -0
  78. package/deps/couchbase-cxx-client/core/impl/term_facet_result.cxx +64 -0
  79. package/deps/couchbase-cxx-client/core/impl/term_query.cxx +56 -0
  80. package/deps/couchbase-cxx-client/core/impl/term_range_query.cxx +57 -0
  81. package/deps/couchbase-cxx-client/core/impl/wildcard_query.cxx +40 -0
  82. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +9 -2
  83. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +54 -37
  84. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +4 -3
  85. package/deps/couchbase-cxx-client/core/json_string.hxx +5 -0
  86. package/deps/couchbase-cxx-client/core/meta/version.cxx +18 -4
  87. package/deps/couchbase-cxx-client/core/mozilla_ca_bundle.hxx +39 -0
  88. package/deps/couchbase-cxx-client/core/operations/document_search.cxx +3 -1
  89. package/deps/couchbase-cxx-client/core/operations/document_search.hxx +1 -1
  90. package/deps/couchbase-cxx-client/core/protocol/client_request.hxx +11 -2
  91. package/deps/couchbase-cxx-client/core/protocol/client_response.hxx +1 -0
  92. package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +59 -46
  93. package/deps/couchbase-cxx-client/core/utils/connection_string.hxx +1 -0
  94. package/deps/couchbase-cxx-client/couchbase/analytics_error_context.hxx +1 -1
  95. package/deps/couchbase-cxx-client/couchbase/boolean_field_query.hxx +77 -0
  96. package/deps/couchbase-cxx-client/couchbase/boolean_query.hxx +223 -0
  97. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +39 -0
  98. package/deps/couchbase-cxx-client/couchbase/conjunction_query.hxx +88 -0
  99. package/deps/couchbase-cxx-client/couchbase/date_range.hxx +69 -0
  100. package/deps/couchbase-cxx-client/couchbase/date_range_facet.hxx +56 -0
  101. package/deps/couchbase-cxx-client/couchbase/date_range_facet_result.hxx +55 -0
  102. package/deps/couchbase-cxx-client/couchbase/date_range_query.hxx +265 -0
  103. package/deps/couchbase-cxx-client/couchbase/disjunction_query.hxx +109 -0
  104. package/deps/couchbase-cxx-client/couchbase/doc_id_query.hxx +111 -0
  105. package/deps/couchbase-cxx-client/couchbase/error_context.hxx +17 -8
  106. package/deps/couchbase-cxx-client/couchbase/fmt/analytics_scan_consistency.hxx +52 -0
  107. package/deps/couchbase-cxx-client/{core/topology/error_map_fmt.hxx → couchbase/fmt/key_value_error_map_attribute.hxx} +21 -21
  108. package/deps/couchbase-cxx-client/couchbase/fmt/search_scan_consistency.hxx +49 -0
  109. package/deps/couchbase-cxx-client/couchbase/geo_bounding_box_query.hxx +107 -0
  110. package/deps/couchbase-cxx-client/couchbase/geo_distance_query.hxx +109 -0
  111. package/deps/couchbase-cxx-client/couchbase/geo_point.hxx +32 -0
  112. package/deps/couchbase-cxx-client/couchbase/geo_polygon_query.hxx +85 -0
  113. package/deps/couchbase-cxx-client/couchbase/highlight_style.hxx +45 -0
  114. package/deps/couchbase-cxx-client/couchbase/key_value_error_context.hxx +7 -2
  115. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +1 -1
  116. package/deps/couchbase-cxx-client/couchbase/match_all_query.hxx +43 -0
  117. package/deps/couchbase-cxx-client/couchbase/match_none_query.hxx +43 -0
  118. package/deps/couchbase-cxx-client/couchbase/match_operator.hxx +45 -0
  119. package/deps/couchbase-cxx-client/couchbase/match_phrase_query.hxx +108 -0
  120. package/deps/couchbase-cxx-client/couchbase/match_query.hxx +163 -0
  121. package/deps/couchbase-cxx-client/couchbase/numeric_range.hxx +58 -0
  122. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet.hxx +56 -0
  123. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet_result.hxx +55 -0
  124. package/deps/couchbase-cxx-client/couchbase/numeric_range_query.hxx +143 -0
  125. package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +93 -0
  126. package/deps/couchbase-cxx-client/couchbase/prefix_query.hxx +82 -0
  127. package/deps/couchbase-cxx-client/couchbase/query_error_context.hxx +3 -1
  128. package/deps/couchbase-cxx-client/couchbase/query_string_query.hxx +72 -0
  129. package/deps/couchbase-cxx-client/couchbase/regexp_query.hxx +82 -0
  130. package/deps/couchbase-cxx-client/couchbase/scope.hxx +39 -0
  131. package/deps/couchbase-cxx-client/couchbase/search_date_range.hxx +68 -0
  132. package/deps/couchbase-cxx-client/couchbase/search_error_context.hxx +138 -0
  133. package/deps/couchbase-cxx-client/couchbase/search_facet.hxx +60 -0
  134. package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +50 -0
  135. package/deps/couchbase-cxx-client/couchbase/search_meta_data.hxx +85 -0
  136. package/deps/couchbase-cxx-client/couchbase/search_metrics.hxx +127 -0
  137. package/deps/couchbase-cxx-client/couchbase/search_numeric_range.hxx +69 -0
  138. package/deps/couchbase-cxx-client/couchbase/search_options.hxx +509 -0
  139. package/deps/couchbase-cxx-client/couchbase/search_query.hxx +69 -0
  140. package/deps/couchbase-cxx-client/couchbase/search_result.hxx +77 -0
  141. package/deps/couchbase-cxx-client/couchbase/search_row.hxx +104 -0
  142. package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +55 -0
  143. package/deps/couchbase-cxx-client/couchbase/search_row_locations.hxx +86 -0
  144. package/deps/couchbase-cxx-client/couchbase/search_scan_consistency.hxx +34 -0
  145. package/deps/couchbase-cxx-client/couchbase/search_sort.hxx +58 -0
  146. package/deps/couchbase-cxx-client/couchbase/search_sort_field.hxx +117 -0
  147. package/deps/couchbase-cxx-client/couchbase/search_sort_field_missing.hxx +26 -0
  148. package/deps/couchbase-cxx-client/couchbase/search_sort_field_mode.hxx +27 -0
  149. package/deps/couchbase-cxx-client/couchbase/search_sort_field_type.hxx +28 -0
  150. package/deps/couchbase-cxx-client/couchbase/search_sort_id.hxx +60 -0
  151. package/deps/couchbase-cxx-client/couchbase/search_sort_score.hxx +60 -0
  152. package/deps/couchbase-cxx-client/couchbase/search_term_range.hxx +51 -0
  153. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +3 -0
  154. package/deps/couchbase-cxx-client/couchbase/subdocument_error_context.hxx +4 -2
  155. package/deps/couchbase-cxx-client/couchbase/term_facet.hxx +48 -0
  156. package/deps/couchbase-cxx-client/couchbase/term_facet_result.hxx +55 -0
  157. package/deps/couchbase-cxx-client/couchbase/term_query.hxx +151 -0
  158. package/deps/couchbase-cxx-client/couchbase/term_range_query.hxx +142 -0
  159. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +1 -1
  160. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +2 -1
  161. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_result.hxx +1 -1
  162. package/deps/couchbase-cxx-client/couchbase/transactions.hxx +3 -3
  163. package/deps/couchbase-cxx-client/couchbase/wildcard_query.hxx +83 -0
  164. package/deps/couchbase-cxx-client/docs/Doxyfile.in +1 -1
  165. package/deps/couchbase-cxx-client/docs/cbc-analytics.md +2 -2
  166. package/deps/couchbase-cxx-client/docs/cbc-get.md +3 -2
  167. package/deps/couchbase-cxx-client/docs/cbc-pillowfight.md +7 -2
  168. package/deps/couchbase-cxx-client/docs/cbc-query.md +2 -2
  169. package/deps/couchbase-cxx-client/docs/cbc.md +3 -3
  170. package/deps/couchbase-cxx-client/docs/cli.hxx +5 -5
  171. package/deps/couchbase-cxx-client/docs/mainpage.hxx +42 -5
  172. package/deps/couchbase-cxx-client/test/CMakeLists.txt +1 -0
  173. package/deps/couchbase-cxx-client/test/test_integration_analytics.cxx +28 -6
  174. package/deps/couchbase-cxx-client/test/test_integration_collections.cxx +7 -3
  175. package/deps/couchbase-cxx-client/test/test_integration_connect.cxx +7 -3
  176. package/deps/couchbase-cxx-client/test/test_integration_crud.cxx +13 -3
  177. package/deps/couchbase-cxx-client/test/test_integration_diagnostics.cxx +8 -2
  178. package/deps/couchbase-cxx-client/test/test_integration_durability.cxx +12 -7
  179. package/deps/couchbase-cxx-client/test/test_integration_examples.cxx +283 -11
  180. package/deps/couchbase-cxx-client/test/test_integration_management.cxx +140 -88
  181. package/deps/couchbase-cxx-client/test/test_integration_query.cxx +67 -9
  182. package/deps/couchbase-cxx-client/test/test_integration_range_scan.cxx +12 -12
  183. package/deps/couchbase-cxx-client/test/test_integration_read_replica.cxx +48 -11
  184. package/deps/couchbase-cxx-client/test/test_integration_search.cxx +19 -1
  185. package/deps/couchbase-cxx-client/test/test_integration_subdoc.cxx +60 -9
  186. package/deps/couchbase-cxx-client/test/test_integration_tracer.cxx +3 -0
  187. package/deps/couchbase-cxx-client/test/test_integration_transcoders.cxx +4 -0
  188. package/deps/couchbase-cxx-client/test/test_transaction_examples.cxx +100 -85
  189. package/deps/couchbase-cxx-client/test/test_unit_connection_string.cxx +29 -0
  190. package/deps/couchbase-cxx-client/test/test_unit_search.cxx +427 -0
  191. package/deps/couchbase-cxx-client/test/utils/integration_test_guard.cxx +2 -1
  192. package/deps/couchbase-cxx-client/test/utils/logger.cxx +3 -1
  193. package/deps/couchbase-cxx-client/test/utils/server_version.hxx +31 -15
  194. package/deps/couchbase-cxx-client/test/utils/test_context.cxx +8 -0
  195. package/deps/couchbase-cxx-client/tools/get.cxx +9 -8
  196. package/deps/couchbase-cxx-client/tools/pillowfight.cxx +175 -75
  197. package/deps/couchbase-cxx-client/tools/version.cxx +4 -2
  198. package/dist/binding.d.ts +1 -1
  199. package/dist/binding.js +3 -2
  200. package/package.json +96 -1
  201. package/scripts/createPlatformPackages.js +108 -0
  202. package/scripts/install.js +45 -0
  203. package/scripts/prebuilds.js +249 -0
  204. package/scripts/prune.js +124 -0
  205. package/src/jstocbpp_autogen.hpp +3 -2
@@ -63,7 +63,7 @@ TEST_CASE("integration: bucket management", "[integration]")
63
63
  test::utils::integration_test_guard integration;
64
64
 
65
65
  if (!integration.cluster_version().supports_bucket_management()) {
66
- return;
66
+ SKIP("cluster does not support bucket management");
67
67
  }
68
68
 
69
69
  if (!integration.cluster_version().supports_gcccp()) {
@@ -512,7 +512,7 @@ TEST_CASE("integration: collection management", "[integration]")
512
512
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
513
513
 
514
514
  if (!integration.cluster_version().supports_collections()) {
515
- return;
515
+ SKIP("cluster does not support collections");
516
516
  }
517
517
 
518
518
  auto scope_name = test::utils::uniq_id("scope");
@@ -652,7 +652,7 @@ TEST_CASE("integration: user groups management", "[integration]")
652
652
  test::utils::integration_test_guard integration;
653
653
 
654
654
  if (!integration.cluster_version().supports_user_groups()) {
655
- return;
655
+ SKIP("cluster does not support user groups");
656
656
  }
657
657
 
658
658
  SECTION("group crud")
@@ -863,7 +863,7 @@ TEST_CASE("integration: user management", "[integration]")
863
863
  test::utils::integration_test_guard integration;
864
864
 
865
865
  if (!integration.cluster_version().supports_user_management()) {
866
- return;
866
+ SKIP("cluster does not support user management");
867
867
  }
868
868
 
869
869
  if (!integration.cluster_version().supports_gcccp()) {
@@ -961,9 +961,14 @@ TEST_CASE("integration: user management collections roles", "[integration]")
961
961
  test::utils::integration_test_guard integration;
962
962
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
963
963
 
964
- if (!integration.cluster_version().supports_user_management() || !integration.cluster_version().supports_collections() ||
965
- integration.cluster_version().is_community()) {
966
- return;
964
+ if (!integration.cluster_version().supports_user_management()) {
965
+ SKIP("cluster does not support user management");
966
+ }
967
+ if (!integration.cluster_version().supports_collections()) {
968
+ SKIP("cluster does not support collections");
969
+ }
970
+ if (integration.cluster_version().is_community()) {
971
+ SKIP("cluster is community edition");
967
972
  }
968
973
 
969
974
  auto scope_name = test::utils::uniq_id("scope");
@@ -1037,6 +1042,10 @@ TEST_CASE("integration: query index management", "[integration]")
1037
1042
  {
1038
1043
  test::utils::integration_test_guard integration;
1039
1044
 
1045
+ if (!integration.cluster_version().supports_query_index_management()) {
1046
+ SKIP("cluster does not support query index management");
1047
+ }
1048
+
1040
1049
  if (integration.cluster_version().supports_bucket_management()) {
1041
1050
  SECTION("primary index")
1042
1051
  {
@@ -1444,8 +1453,11 @@ TEST_CASE("integration: collections query index management", "[integration]")
1444
1453
  {
1445
1454
  test::utils::integration_test_guard integration;
1446
1455
 
1456
+ if (!integration.cluster_version().supports_query_index_management()) {
1457
+ SKIP("cluster does not support query index management");
1458
+ }
1447
1459
  if (!integration.cluster_version().supports_collections()) {
1448
- return;
1460
+ SKIP("cluster does not support collections");
1449
1461
  }
1450
1462
 
1451
1463
  auto index_name = test::utils::uniq_id("collections_index");
@@ -1960,13 +1972,14 @@ TEST_CASE("integration: analytics index management", "[integration]")
1960
1972
  {
1961
1973
  test::utils::integration_test_guard integration;
1962
1974
 
1963
- if (!integration.cluster_version().supports_analytics() || !integration.has_analytics_service()) {
1964
- return;
1975
+ if (!integration.cluster_version().supports_analytics()) {
1976
+ SKIP("cluster does not support analytics service");
1977
+ }
1978
+ if (!integration.has_analytics_service()) {
1979
+ SKIP("cluster does not have analytics service");
1965
1980
  }
1966
-
1967
- // MB-47718
1968
1981
  if (integration.storage_backend() == couchbase::core::management::cluster::bucket_storage_backend::magma) {
1969
- return;
1982
+ SKIP("analytics does not work with magma storage backend, see MB-47718");
1970
1983
  }
1971
1984
 
1972
1985
  SECTION("crud")
@@ -2492,18 +2505,20 @@ TEST_CASE("integration: analytics external link management", "[integration]")
2492
2505
  {
2493
2506
  test::utils::integration_test_guard integration;
2494
2507
 
2495
- if (!integration.cluster_version().supports_analytics_links() || !integration.has_analytics_service()) {
2496
- return;
2508
+ if (!integration.cluster_version().supports_analytics()) {
2509
+ SKIP("cluster does not support analytics service");
2510
+ }
2511
+ if (!integration.has_analytics_service()) {
2512
+ SKIP("cluster does not have analytics service");
2513
+ }
2514
+ if (!integration.cluster_version().supports_analytics_links()) {
2515
+ SKIP("analytics does not support analytics links");
2497
2516
  }
2498
-
2499
- // MB-47718
2500
2517
  if (integration.storage_backend() == couchbase::core::management::cluster::bucket_storage_backend::magma) {
2501
- return;
2518
+ SKIP("analytics does not work with magma storage backend, see MB-47718");
2502
2519
  }
2503
-
2504
- // MB-40198
2505
2520
  if (!integration.cluster_version().supports_analytics_links_cert_auth() && integration.origin.credentials().uses_certificate()) {
2506
- return;
2521
+ SKIP("certificate credentials selected, but analytics service does not support cert auth, see MB-40198");
2507
2522
  }
2508
2523
 
2509
2524
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
@@ -2593,6 +2608,10 @@ TEST_CASE("integration: search index management", "[integration]")
2593
2608
  {
2594
2609
  test::utils::integration_test_guard integration;
2595
2610
 
2611
+ if (!integration.cluster_version().supports_search()) {
2612
+ SKIP("cluster does not support search");
2613
+ }
2614
+
2596
2615
  if (!integration.cluster_version().supports_gcccp()) {
2597
2616
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
2598
2617
  }
@@ -2884,8 +2903,12 @@ TEST_CASE("integration: search index management analyze document", "[integration
2884
2903
  {
2885
2904
  test::utils::integration_test_guard integration;
2886
2905
 
2906
+ if (!integration.cluster_version().supports_search()) {
2907
+ SKIP("cluster does not support search");
2908
+ }
2909
+
2887
2910
  if (!integration.cluster_version().supports_search_analyze()) {
2888
- return;
2911
+ SKIP("cluster does not support search analyze");
2889
2912
  }
2890
2913
 
2891
2914
  auto index_name = test::utils::uniq_id("index");
@@ -2936,25 +2959,34 @@ TEST_CASE("integration: freeform HTTP request", "[integration]")
2936
2959
  REQUIRE(resp.ctx.ec == couchbase::errc::common::invalid_argument);
2937
2960
  }
2938
2961
 
2939
- if (integration.cluster_version().supports_analytics() && integration.has_analytics_service()) {
2940
- SECTION("analytics")
2941
- {
2942
- couchbase::core::operations::management::freeform_request req{};
2943
- req.type = couchbase::core::service_type::analytics;
2944
- req.method = "GET";
2945
- req.path = "/admin/ping";
2946
- auto resp = test::utils::execute(integration.cluster, req);
2947
- REQUIRE_SUCCESS(resp.ctx.ec);
2948
- REQUIRE(resp.status == 200);
2949
- REQUIRE_FALSE(resp.body.empty());
2950
- INFO(resp.body);
2951
- auto result = couchbase::core::utils::json::parse(resp.body);
2952
- REQUIRE(result.is_object());
2962
+ SECTION("analytics")
2963
+ {
2964
+ if (!integration.cluster_version().supports_analytics()) {
2965
+ SKIP("cluster does not support analytics");
2953
2966
  }
2967
+ if (!integration.has_analytics_service()) {
2968
+ SKIP("cluster does not have analytics service");
2969
+ }
2970
+
2971
+ couchbase::core::operations::management::freeform_request req{};
2972
+ req.type = couchbase::core::service_type::analytics;
2973
+ req.method = "GET";
2974
+ req.path = "/admin/ping";
2975
+ auto resp = test::utils::execute(integration.cluster, req);
2976
+ REQUIRE_SUCCESS(resp.ctx.ec);
2977
+ REQUIRE(resp.status == 200);
2978
+ REQUIRE_FALSE(resp.body.empty());
2979
+ INFO(resp.body);
2980
+ auto result = couchbase::core::utils::json::parse(resp.body);
2981
+ REQUIRE(result.is_object());
2954
2982
  }
2955
2983
 
2956
2984
  SECTION("search")
2957
2985
  {
2986
+ if (!integration.cluster_version().supports_search()) {
2987
+ SKIP("cluster does not support search");
2988
+ }
2989
+
2958
2990
  couchbase::core::operations::management::freeform_request req{};
2959
2991
  req.type = couchbase::core::service_type::search;
2960
2992
  req.method = "GET";
@@ -2969,6 +3001,10 @@ TEST_CASE("integration: freeform HTTP request", "[integration]")
2969
3001
 
2970
3002
  SECTION("query")
2971
3003
  {
3004
+ if (!integration.cluster_version().supports_query()) {
3005
+ SKIP("cluster does not support query");
3006
+ }
3007
+
2972
3008
  couchbase::core::operations::management::freeform_request req{};
2973
3009
  req.type = couchbase::core::service_type::query;
2974
3010
  req.method = "GET";
@@ -2982,25 +3018,27 @@ TEST_CASE("integration: freeform HTTP request", "[integration]")
2982
3018
  REQUIRE(result.is_object());
2983
3019
  }
2984
3020
 
2985
- if (integration.cluster_version().supports_views()) {
2986
- SECTION("view")
2987
- {
2988
- auto document_name = test::utils::uniq_id("design_document");
2989
- auto view_name = test::utils::uniq_id("view");
2990
-
2991
- couchbase::core::operations::management::freeform_request req{};
2992
- req.type = couchbase::core::service_type::view;
2993
- req.method = "POST";
2994
- req.path = fmt::format("/{}/_design/{}/_view/{}", integration.ctx.bucket, document_name, view_name);
2995
- req.body = R"({"keys":["foo","bar"]})";
2996
- auto resp = test::utils::execute(integration.cluster, req);
2997
- REQUIRE_SUCCESS(resp.ctx.ec);
2998
- REQUIRE(resp.status == 404);
2999
- REQUIRE_FALSE(resp.body.empty());
3000
- auto result = couchbase::core::utils::json::parse(resp.body);
3001
- INFO(resp.body);
3002
- REQUIRE(result["error"].get_string() == "not_found");
3021
+ SECTION("view")
3022
+ {
3023
+ if (!integration.cluster_version().supports_views()) {
3024
+ SKIP("cluster does not support views");
3003
3025
  }
3026
+
3027
+ auto document_name = test::utils::uniq_id("design_document");
3028
+ auto view_name = test::utils::uniq_id("view");
3029
+
3030
+ couchbase::core::operations::management::freeform_request req{};
3031
+ req.type = couchbase::core::service_type::view;
3032
+ req.method = "POST";
3033
+ req.path = fmt::format("/{}/_design/{}/_view/{}", integration.ctx.bucket, document_name, view_name);
3034
+ req.body = R"({"keys":["foo","bar"]})";
3035
+ auto resp = test::utils::execute(integration.cluster, req);
3036
+ REQUIRE_SUCCESS(resp.ctx.ec);
3037
+ REQUIRE(resp.status == 404);
3038
+ REQUIRE_FALSE(resp.body.empty());
3039
+ auto result = couchbase::core::utils::json::parse(resp.body);
3040
+ INFO(resp.body);
3041
+ REQUIRE(result["error"].get_string() == "not_found");
3004
3042
  }
3005
3043
 
3006
3044
  SECTION("management")
@@ -3018,44 +3056,55 @@ TEST_CASE("integration: freeform HTTP request", "[integration]")
3018
3056
  REQUIRE(result.find("uuid") != nullptr);
3019
3057
  }
3020
3058
 
3021
- if (integration.cluster_version().supports_collections()) {
3022
- SECTION("create scope")
3023
- {
3024
- auto scope_name = test::utils::uniq_id("freeform_scope");
3059
+ SECTION("create scope")
3060
+ {
3061
+ if (!integration.cluster_version().supports_collections()) {
3062
+ SKIP("cluster does not support collections");
3063
+ }
3025
3064
 
3026
- couchbase::core::operations::management::freeform_request req{};
3027
- req.type = couchbase::core::service_type::management;
3028
- req.method = "POST";
3029
- req.path = fmt::format("/pools/default/buckets/{}/scopes", integration.ctx.bucket);
3030
- req.headers["content-type"] = "application/x-www-form-urlencoded";
3031
- req.body = fmt::format("name={}", couchbase::core::utils::string_codec::form_encode(scope_name));
3032
- auto resp = test::utils::execute(integration.cluster, req);
3033
- REQUIRE_SUCCESS(resp.ctx.ec);
3034
- REQUIRE(resp.status == 200);
3035
- REQUIRE_FALSE(resp.headers.empty());
3065
+ auto scope_name = test::utils::uniq_id("freeform_scope");
3066
+
3067
+ couchbase::core::operations::management::freeform_request req{};
3068
+ req.type = couchbase::core::service_type::management;
3069
+ req.method = "POST";
3070
+ req.path = fmt::format("/pools/default/buckets/{}/scopes", integration.ctx.bucket);
3071
+ req.headers["content-type"] = "application/x-www-form-urlencoded";
3072
+ req.body = fmt::format("name={}", couchbase::core::utils::string_codec::form_encode(scope_name));
3073
+ auto resp = test::utils::execute(integration.cluster, req);
3074
+ REQUIRE_SUCCESS(resp.ctx.ec);
3075
+ REQUIRE(resp.status == 200);
3076
+ REQUIRE_FALSE(resp.headers.empty());
3077
+ if (integration.cluster_version().is_mock()) {
3078
+ REQUIRE(resp.headers["content-type"].find("application/json") == std::string::npos);
3079
+ REQUIRE(resp.headers["content-type"].find("text/plain") != std::string::npos);
3080
+ } else {
3036
3081
  REQUIRE(resp.headers["content-type"].find("application/json") != std::string::npos);
3037
- auto result = couchbase::core::utils::json::parse(resp.body);
3038
- REQUIRE(result.is_object());
3039
- REQUIRE(result.find("uid") != nullptr);
3040
3082
  }
3083
+ auto result = couchbase::core::utils::json::parse(resp.body);
3084
+ REQUIRE(result.is_object());
3085
+ REQUIRE(result.find("uid") != nullptr);
3041
3086
  }
3042
3087
 
3043
- if (integration.cluster_version().supports_eventing_functions() && integration.has_eventing_service()) {
3044
- SECTION("eventing")
3045
- {
3046
-
3047
- couchbase::core::operations::management::freeform_request req{};
3048
- req.type = couchbase::core::service_type::eventing;
3049
- req.method = "GET";
3050
- req.path = "/api/v1/functions";
3051
- auto resp = test::utils::execute(integration.cluster, req);
3052
- REQUIRE_SUCCESS(resp.ctx.ec);
3053
- REQUIRE(resp.status == 200);
3054
- REQUIRE_FALSE(resp.body.empty());
3055
- auto result = couchbase::core::utils::json::parse(resp.body);
3056
- INFO(resp.body);
3057
- REQUIRE(result.is_array());
3088
+ SECTION("eventing")
3089
+ {
3090
+ if (!integration.cluster_version().supports_eventing_functions()) {
3091
+ SKIP("cluster does not support eventing functions");
3092
+ }
3093
+ if (!integration.has_eventing_service()) {
3094
+ SKIP("cluster does not have eventing service");
3058
3095
  }
3096
+
3097
+ couchbase::core::operations::management::freeform_request req{};
3098
+ req.type = couchbase::core::service_type::eventing;
3099
+ req.method = "GET";
3100
+ req.path = "/api/v1/functions";
3101
+ auto resp = test::utils::execute(integration.cluster, req);
3102
+ REQUIRE_SUCCESS(resp.ctx.ec);
3103
+ REQUIRE(resp.status == 200);
3104
+ REQUIRE_FALSE(resp.body.empty());
3105
+ auto result = couchbase::core::utils::json::parse(resp.body);
3106
+ INFO(resp.body);
3107
+ REQUIRE(result.is_array());
3059
3108
  }
3060
3109
  }
3061
3110
 
@@ -3098,8 +3147,11 @@ TEST_CASE("integration: eventing functions management", "[integration]")
3098
3147
  {
3099
3148
  test::utils::integration_test_guard integration;
3100
3149
 
3101
- if (!integration.cluster_version().supports_eventing_functions() || !integration.has_eventing_service()) {
3102
- return;
3150
+ if (!integration.cluster_version().supports_eventing_functions()) {
3151
+ SKIP("cluster does not support eventing service");
3152
+ }
3153
+ if (!integration.has_eventing_service()) {
3154
+ SKIP("cluster does not have eventing service");
3103
3155
  }
3104
3156
 
3105
3157
  if (!integration.cluster_version().supports_gcccp()) {
@@ -31,6 +31,10 @@ TEST_CASE("integration: trivial non-data query", "[integration]")
31
31
  {
32
32
  test::utils::integration_test_guard integration;
33
33
 
34
+ if (!integration.cluster_version().supports_query()) {
35
+ SKIP("cluster does not support query");
36
+ }
37
+
34
38
  if (!integration.cluster_version().supports_gcccp()) {
35
39
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
36
40
  }
@@ -46,6 +50,10 @@ TEST_CASE("integration: query with handler capturing non-copyable object", "[int
46
50
  {
47
51
  test::utils::integration_test_guard integration;
48
52
 
53
+ if (!integration.cluster_version().supports_query()) {
54
+ SKIP("cluster does not support query");
55
+ }
56
+
49
57
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
50
58
 
51
59
  if (!integration.cluster_version().supports_gcccp()) {
@@ -70,9 +78,14 @@ TEST_CASE("integration: query with handler capturing non-copyable object", "[int
70
78
  TEST_CASE("integration: query on a collection", "[integration]")
71
79
  {
72
80
  test::utils::integration_test_guard integration;
81
+
82
+ if (!integration.cluster_version().supports_query()) {
83
+ SKIP("cluster does not support query");
84
+ }
73
85
  if (!integration.cluster_version().supports_collections()) {
74
- return;
86
+ SKIP("cluster does not support collections");
75
87
  }
88
+
76
89
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
77
90
 
78
91
  auto scope_name = test::utils::uniq_id("scope");
@@ -172,6 +185,10 @@ TEST_CASE("integration: read only with no results", "[integration]")
172
185
  {
173
186
  test::utils::integration_test_guard integration;
174
187
 
188
+ if (!integration.cluster_version().supports_query()) {
189
+ SKIP("cluster does not support query");
190
+ }
191
+
175
192
  if (!integration.cluster_version().supports_gcccp()) {
176
193
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
177
194
  }
@@ -188,6 +205,10 @@ TEST_CASE("integration: invalid query", "[integration]")
188
205
  {
189
206
  test::utils::integration_test_guard integration;
190
207
 
208
+ if (!integration.cluster_version().supports_query()) {
209
+ SKIP("cluster does not support query");
210
+ }
211
+
191
212
  if (!integration.cluster_version().supports_gcccp()) {
192
213
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
193
214
  }
@@ -199,12 +220,16 @@ TEST_CASE("integration: invalid query", "[integration]")
199
220
  }
200
221
  }
201
222
 
202
- TEST_CASE("integration: preserve expiry for mutatation query", "[integration]")
223
+ TEST_CASE("integration: preserve expiry for mutation query", "[integration]")
203
224
  {
204
225
  test::utils::integration_test_guard integration;
205
226
 
227
+ if (!integration.cluster_version().supports_query()) {
228
+ SKIP("cluster does not support query");
229
+ }
230
+
206
231
  if (!integration.cluster_version().supports_preserve_expiry_for_query()) {
207
- return;
232
+ SKIP("cluster does not support support preserve expiry for query");
208
233
  }
209
234
 
210
235
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
@@ -264,6 +289,10 @@ TEST_CASE("integration: streaming query results", "[integration]")
264
289
  {
265
290
  test::utils::integration_test_guard integration;
266
291
 
292
+ if (!integration.cluster_version().supports_query()) {
293
+ SKIP("cluster does not support query");
294
+ }
295
+
267
296
  if (!integration.cluster_version().supports_gcccp()) {
268
297
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
269
298
  }
@@ -286,6 +315,10 @@ TEST_CASE("integration: streaming query results with stop in the middle", "[inte
286
315
  {
287
316
  test::utils::integration_test_guard integration;
288
317
 
318
+ if (!integration.cluster_version().supports_query()) {
319
+ SKIP("cluster does not support query");
320
+ }
321
+
289
322
  if (!integration.cluster_version().supports_gcccp()) {
290
323
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
291
324
  }
@@ -315,8 +348,11 @@ TEST_CASE("integration: streaming analytics results", "[integration]")
315
348
  {
316
349
  test::utils::integration_test_guard integration;
317
350
 
318
- if (!integration.cluster_version().supports_analytics() || !integration.has_analytics_service()) {
319
- return;
351
+ if (!integration.cluster_version().supports_analytics()) {
352
+ SKIP("cluster does not support analytics");
353
+ }
354
+ if (!integration.has_analytics_service()) {
355
+ SKIP("cluster does not have analytics service");
320
356
  }
321
357
 
322
358
  if (!integration.cluster_version().supports_gcccp()) {
@@ -345,6 +381,10 @@ TEST_CASE("integration: sticking query to the service node", "[integration]")
345
381
  {
346
382
  test::utils::integration_test_guard integration;
347
383
 
384
+ if (!integration.cluster_version().supports_query()) {
385
+ SKIP("cluster does not support query");
386
+ }
387
+
348
388
  if (!integration.cluster_version().supports_gcccp()) {
349
389
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
350
390
  }
@@ -412,10 +452,16 @@ TEST_CASE("analytics create dataset")
412
452
  {
413
453
  test::utils::integration_test_guard integration;
414
454
 
415
- if (!integration.cluster_version().supports_analytics() || !integration.has_analytics_service() ||
416
- !integration.cluster_version().supports_collections()) {
417
- return;
455
+ if (!integration.cluster_version().supports_analytics()) {
456
+ SKIP("cluster does not support analytics");
457
+ }
458
+ if (!integration.cluster_version().supports_collections()) {
459
+ SKIP("cluster does not support collections");
460
+ }
461
+ if (!integration.has_analytics_service()) {
462
+ SKIP("cluster does not have analytics service");
418
463
  }
464
+
419
465
  if (!integration.cluster_version().supports_gcccp()) {
420
466
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
421
467
  }
@@ -434,6 +480,11 @@ TEST_CASE("analytics create dataset")
434
480
  TEST_CASE("integration: prepared query", "[integration]")
435
481
  {
436
482
  test::utils::integration_test_guard integration;
483
+
484
+ if (!integration.cluster_version().supports_query()) {
485
+ SKIP("cluster does not support query");
486
+ }
487
+
437
488
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
438
489
  auto key = test::utils::uniq_id("foo");
439
490
  tao::json::value value = {
@@ -468,6 +519,10 @@ TEST_CASE("integration: query with public API", "[integration]")
468
519
  {
469
520
  test::utils::integration_test_guard integration;
470
521
 
522
+ if (!integration.cluster_version().supports_query()) {
523
+ SKIP("cluster does not support query");
524
+ }
525
+
471
526
  if (!integration.cluster_version().supports_gcccp()) {
472
527
  test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
473
528
  }
@@ -505,8 +560,11 @@ TEST_CASE("integration: query from scope with public API", "[integration]")
505
560
  {
506
561
  test::utils::integration_test_guard integration;
507
562
 
563
+ if (!integration.cluster_version().supports_query()) {
564
+ SKIP("cluster does not support query");
565
+ }
508
566
  if (!integration.cluster_version().supports_collections()) {
509
- return;
567
+ SKIP("cluster does not support collections");
510
568
  }
511
569
 
512
570
  if (!integration.cluster_version().supports_gcccp()) {
@@ -120,7 +120,7 @@ TEST_CASE("integration: range scan large values", "[integration]")
120
120
  test::utils::integration_test_guard integration;
121
121
 
122
122
  if (!integration.has_bucket_capability("range_scan")) {
123
- return;
123
+ SKIP("cluster does not support range_scan");
124
124
  }
125
125
 
126
126
  auto collection = couchbase::cluster(integration.cluster)
@@ -176,7 +176,7 @@ TEST_CASE("integration: range scan small values", "[integration]")
176
176
  test::utils::integration_test_guard integration;
177
177
 
178
178
  if (!integration.has_bucket_capability("range_scan")) {
179
- return;
179
+ SKIP("cluster does not support range_scan");
180
180
  }
181
181
 
182
182
  auto collection = couchbase::cluster(integration.cluster)
@@ -274,7 +274,7 @@ TEST_CASE("integration: range scan collection retry", "[integration]")
274
274
  test::utils::integration_test_guard integration;
275
275
 
276
276
  if (!integration.has_bucket_capability("range_scan")) {
277
- return;
277
+ SKIP("cluster does not support range_scan");
278
278
  }
279
279
 
280
280
  collection_guard new_collection(integration);
@@ -340,7 +340,7 @@ TEST_CASE("integration: range scan only keys", "[integration]")
340
340
  test::utils::integration_test_guard integration;
341
341
 
342
342
  if (!integration.has_bucket_capability("range_scan")) {
343
- return;
343
+ SKIP("cluster does not support range_scan");
344
344
  }
345
345
 
346
346
  auto collection = couchbase::cluster(integration.cluster)
@@ -399,7 +399,7 @@ TEST_CASE("integration: range scan cancellation before continue", "[integration]
399
399
  test::utils::integration_test_guard integration;
400
400
 
401
401
  if (!integration.has_bucket_capability("range_scan")) {
402
- return;
402
+ SKIP("cluster does not support range_scan");
403
403
  }
404
404
 
405
405
  auto collection = couchbase::cluster(integration.cluster)
@@ -503,7 +503,7 @@ TEST_CASE("integration: range scan cancel during streaming using protocol cancel
503
503
  test::utils::integration_test_guard integration;
504
504
 
505
505
  if (!integration.has_bucket_capability("range_scan")) {
506
- return;
506
+ SKIP("cluster does not support range_scan");
507
507
  }
508
508
 
509
509
  auto collection = couchbase::cluster(integration.cluster)
@@ -615,7 +615,7 @@ TEST_CASE("integration: range scan cancel during streaming using pending_operati
615
615
  test::utils::integration_test_guard integration;
616
616
 
617
617
  if (!integration.has_bucket_capability("range_scan")) {
618
- return;
618
+ SKIP("cluster does not support range_scan");
619
619
  }
620
620
 
621
621
  auto collection = couchbase::cluster(integration.cluster)
@@ -717,7 +717,7 @@ TEST_CASE("integration: sampling scan keys only", "[integration]")
717
717
  test::utils::integration_test_guard integration;
718
718
 
719
719
  if (!integration.has_bucket_capability("range_scan")) {
720
- return;
720
+ SKIP("cluster does not support range_scan");
721
721
  }
722
722
 
723
723
  auto collection = couchbase::cluster(integration.cluster)
@@ -788,7 +788,7 @@ TEST_CASE("integration: manager scan range without content", "[integration]")
788
788
  test::utils::integration_test_guard integration;
789
789
 
790
790
  if (!integration.has_bucket_capability("range_scan")) {
791
- return;
791
+ SKIP("cluster does not support range_scan");
792
792
  }
793
793
 
794
794
  auto collection = couchbase::cluster(integration.cluster)
@@ -859,7 +859,7 @@ TEST_CASE("integration: manager scan range with content", "[integration]")
859
859
  test::utils::integration_test_guard integration;
860
860
 
861
861
  if (!integration.has_bucket_capability("range_scan")) {
862
- return;
862
+ SKIP("cluster does not support range_scan");
863
863
  }
864
864
 
865
865
  auto collection = couchbase::cluster(integration.cluster)
@@ -930,7 +930,7 @@ TEST_CASE("integration: manager sampling scan with custom collection", "[integra
930
930
  test::utils::integration_test_guard integration;
931
931
 
932
932
  if (!integration.has_bucket_capability("range_scan")) {
933
- return;
933
+ SKIP("cluster does not support range_scan");
934
934
  }
935
935
 
936
936
  collection_guard new_collection(integration);
@@ -1003,7 +1003,7 @@ TEST_CASE("integration: manager range scan with sort", "[integration]")
1003
1003
  test::utils::integration_test_guard integration;
1004
1004
 
1005
1005
  if (!integration.has_bucket_capability("range_scan")) {
1006
- return;
1006
+ SKIP("cluster does not support range_scan");
1007
1007
  }
1008
1008
 
1009
1009
  collection_guard new_collection(integration);