couchbase 3.4.4 → 3.4.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/couchbase/CMakeLists.txt +7 -0
- data/ext/couchbase/core/cluster.hxx +7 -0
- data/ext/couchbase/core/impl/create_bucket.cxx +3 -0
- data/ext/couchbase/core/impl/create_collection.cxx +83 -0
- data/ext/couchbase/core/impl/create_scope.cxx +69 -0
- data/ext/couchbase/core/impl/drop_collection.cxx +76 -0
- data/ext/couchbase/core/impl/drop_scope.cxx +68 -0
- data/ext/couchbase/core/impl/get_all_buckets.cxx +19 -4
- data/ext/couchbase/core/impl/get_all_scopes.cxx +94 -0
- data/ext/couchbase/core/impl/get_bucket.cxx +19 -4
- data/ext/couchbase/core/impl/lookup_in_all_replicas.cxx +2 -0
- data/ext/couchbase/core/impl/lookup_in_any_replica.cxx +2 -0
- data/ext/couchbase/core/impl/lookup_in_replica.cxx +8 -1
- data/ext/couchbase/core/impl/update_bucket.cxx +3 -0
- data/ext/couchbase/core/impl/update_collection.cxx +83 -0
- data/ext/couchbase/core/management/bucket_settings.hxx +8 -5
- data/ext/couchbase/core/management/bucket_settings_json.hxx +12 -2
- data/ext/couchbase/core/meta/features.hxx +17 -0
- data/ext/couchbase/core/operations/document_lookup_in.cxx +8 -1
- data/ext/couchbase/core/operations/management/CMakeLists.txt +1 -0
- data/ext/couchbase/core/operations/management/bucket_create.cxx +30 -9
- data/ext/couchbase/core/operations/management/bucket_update.cxx +27 -6
- data/ext/couchbase/core/operations/management/collection_create.cxx +5 -1
- data/ext/couchbase/core/operations/management/collection_create.hxx +1 -0
- data/ext/couchbase/core/operations/management/collection_update.cxx +87 -0
- data/ext/couchbase/core/operations/management/collection_update.hxx +54 -0
- data/ext/couchbase/core/operations/management/collections.hxx +1 -0
- data/ext/couchbase/core/timeout_defaults.hxx +1 -1
- data/ext/couchbase/core/topology/capabilities.hxx +1 -0
- data/ext/couchbase/core/topology/capabilities_fmt.hxx +3 -0
- data/ext/couchbase/core/topology/collections_manifest.hxx +2 -0
- data/ext/couchbase/core/topology/collections_manifest_json.hxx +3 -0
- data/ext/couchbase/core/topology/configuration.hxx +5 -0
- data/ext/couchbase/core/topology/configuration_json.hxx +2 -0
- data/ext/couchbase/couchbase/bucket.hxx +14 -0
- data/ext/couchbase/couchbase/collection_manager.hxx +160 -0
- data/ext/couchbase/couchbase/create_collection_options.hxx +44 -0
- data/ext/couchbase/couchbase/create_scope_options.hxx +41 -0
- data/ext/couchbase/couchbase/drop_collection_options.hxx +41 -0
- data/ext/couchbase/couchbase/drop_scope_options.hxx +41 -0
- data/ext/couchbase/couchbase/get_all_scopes_options.hxx +44 -0
- data/ext/couchbase/couchbase/management/bucket_settings.hxx +8 -5
- data/ext/couchbase/couchbase/management/collection_spec.hxx +29 -0
- data/ext/couchbase/couchbase/management/scope_spec.hxx +29 -0
- data/ext/couchbase/couchbase/update_collection_options.hxx +44 -0
- data/ext/couchbase/test/test_integration_management.cxx +305 -48
- data/ext/couchbase/test/test_integration_subdoc.cxx +81 -22
- data/ext/couchbase.cxx +155 -34
- data/ext/revisions.rb +3 -3
- data/lib/couchbase/collection_options.rb +1 -2
- data/lib/couchbase/management/bucket_manager.rb +22 -15
- data/lib/couchbase/management/collection_manager.rb +158 -9
- data/lib/couchbase/version.rb +1 -1
- metadata +23 -6
@@ -109,6 +109,14 @@ TEST_CASE("integration: bucket management", "[integration]")
|
|
109
109
|
REQUIRE(bucket_settings.compression_mode == resp.bucket.compression_mode);
|
110
110
|
REQUIRE(bucket_settings.replica_indexes == resp.bucket.replica_indexes);
|
111
111
|
}
|
112
|
+
|
113
|
+
{
|
114
|
+
couchbase::core::operations::management::bucket_create_request req;
|
115
|
+
req.bucket = bucket_settings;
|
116
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
117
|
+
REQUIRE(resp.ctx.ec == couchbase::errc::management::bucket_exists);
|
118
|
+
}
|
119
|
+
|
112
120
|
std::uint64_t old_quota_mb{ 0 };
|
113
121
|
{
|
114
122
|
couchbase::core::operations::management::bucket_get_all_request req{};
|
@@ -894,6 +902,86 @@ TEST_CASE("integration: bucket management", "[integration]")
|
|
894
902
|
}
|
895
903
|
}
|
896
904
|
|
905
|
+
TEST_CASE("integration: bucket management history", "[integration]")
|
906
|
+
{
|
907
|
+
test::utils::integration_test_guard integration;
|
908
|
+
|
909
|
+
if (!integration.cluster_version().supports_bucket_management()) {
|
910
|
+
SKIP("cluster does not support bucket management");
|
911
|
+
}
|
912
|
+
|
913
|
+
if (!integration.cluster_version().supports_gcccp()) {
|
914
|
+
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
915
|
+
}
|
916
|
+
|
917
|
+
if (!integration.cluster_version().supports_bucket_history()) {
|
918
|
+
SKIP("cluster does not support bucket history");
|
919
|
+
}
|
920
|
+
|
921
|
+
auto bucket_name = test::utils::uniq_id("bucket");
|
922
|
+
auto update_bucket_name = test::utils::uniq_id("bucket");
|
923
|
+
|
924
|
+
SECTION("create history")
|
925
|
+
{
|
926
|
+
{
|
927
|
+
couchbase::core::management::cluster::bucket_settings bucket_settings;
|
928
|
+
bucket_settings.name = bucket_name;
|
929
|
+
bucket_settings.ram_quota_mb = integration.cluster_version().is_neo() ? 1'024 : 256;
|
930
|
+
bucket_settings.storage_backend = couchbase::core::management::cluster::bucket_storage_backend::magma;
|
931
|
+
bucket_settings.history_retention_collection_default = true;
|
932
|
+
bucket_settings.history_retention_bytes = 2147483648;
|
933
|
+
bucket_settings.history_retention_duration = 13000;
|
934
|
+
couchbase::core::operations::management::bucket_create_request req{ bucket_settings };
|
935
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
936
|
+
REQUIRE_SUCCESS(resp.ctx.ec);
|
937
|
+
}
|
938
|
+
|
939
|
+
{
|
940
|
+
auto resp = wait_for_bucket_created(integration, bucket_name);
|
941
|
+
REQUIRE_SUCCESS(resp.ctx.ec);
|
942
|
+
REQUIRE(resp.bucket.storage_backend == couchbase::core::management::cluster::bucket_storage_backend::magma);
|
943
|
+
REQUIRE(resp.bucket.history_retention_collection_default == true);
|
944
|
+
REQUIRE(resp.bucket.history_retention_duration == 13000);
|
945
|
+
REQUIRE(resp.bucket.history_retention_bytes == 2147483648);
|
946
|
+
}
|
947
|
+
}
|
948
|
+
|
949
|
+
SECTION("update history")
|
950
|
+
{
|
951
|
+
couchbase::core::management::cluster::bucket_settings bucket_settings;
|
952
|
+
bucket_settings.ram_quota_mb = integration.cluster_version().is_neo() ? 1'024 : 256;
|
953
|
+
bucket_settings.name = update_bucket_name;
|
954
|
+
bucket_settings.storage_backend = couchbase::core::management::cluster::bucket_storage_backend::magma;
|
955
|
+
{
|
956
|
+
couchbase::core::operations::management::bucket_create_request req{ bucket_settings };
|
957
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
958
|
+
REQUIRE_SUCCESS(resp.ctx.ec);
|
959
|
+
auto get_resp = wait_for_bucket_created(integration, update_bucket_name);
|
960
|
+
REQUIRE_SUCCESS(get_resp.ctx.ec);
|
961
|
+
}
|
962
|
+
{
|
963
|
+
bucket_settings.history_retention_collection_default = true;
|
964
|
+
bucket_settings.history_retention_bytes = 2147483648;
|
965
|
+
bucket_settings.history_retention_duration = 13000;
|
966
|
+
couchbase::core::operations::management::bucket_update_request req{ bucket_settings };
|
967
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
968
|
+
REQUIRE_SUCCESS(resp.ctx.ec);
|
969
|
+
auto get_resp = wait_for_bucket_created(integration, update_bucket_name);
|
970
|
+
REQUIRE_SUCCESS(get_resp.ctx.ec);
|
971
|
+
REQUIRE(get_resp.bucket.storage_backend == couchbase::core::management::cluster::bucket_storage_backend::magma);
|
972
|
+
REQUIRE(get_resp.bucket.history_retention_collection_default == true);
|
973
|
+
REQUIRE(get_resp.bucket.history_retention_duration == 13000);
|
974
|
+
REQUIRE(get_resp.bucket.history_retention_bytes == 2147483648);
|
975
|
+
}
|
976
|
+
}
|
977
|
+
{
|
978
|
+
couchbase::core::operations::management::bucket_drop_request req{ bucket_name };
|
979
|
+
couchbase::core::operations::management::bucket_drop_request update_req{ update_bucket_name };
|
980
|
+
test::utils::execute(integration.cluster, req);
|
981
|
+
test::utils::execute(integration.cluster, update_req);
|
982
|
+
}
|
983
|
+
}
|
984
|
+
|
897
985
|
std::optional<couchbase::core::topology::collections_manifest::collection>
|
898
986
|
get_collection(std::shared_ptr<couchbase::core::cluster> cluster,
|
899
987
|
const std::string& bucket_name,
|
@@ -943,7 +1031,208 @@ TEST_CASE("integration: collection management", "[integration]")
|
|
943
1031
|
auto scope_name = test::utils::uniq_id("scope");
|
944
1032
|
auto collection_name = test::utils::uniq_id("collection");
|
945
1033
|
std::uint32_t max_expiry = 5;
|
1034
|
+
SECTION("core api")
|
1035
|
+
{
|
1036
|
+
{
|
1037
|
+
couchbase::core::operations::management::scope_create_request req{ integration.ctx.bucket, scope_name };
|
1038
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
1039
|
+
REQUIRE_SUCCESS(resp.ctx.ec);
|
1040
|
+
auto created = test::utils::wait_until_collection_manifest_propagated(integration.cluster, integration.ctx.bucket, resp.uid);
|
1041
|
+
REQUIRE(created);
|
1042
|
+
}
|
1043
|
+
|
1044
|
+
{
|
1045
|
+
auto created = test::utils::wait_until([&]() { return scope_exists(integration.cluster, integration.ctx.bucket, scope_name); });
|
1046
|
+
REQUIRE(created);
|
1047
|
+
}
|
1048
|
+
|
1049
|
+
{
|
1050
|
+
couchbase::core::operations::management::scope_create_request req{ integration.ctx.bucket, scope_name };
|
1051
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
1052
|
+
REQUIRE(resp.ctx.ec == couchbase::errc::management::scope_exists);
|
1053
|
+
}
|
1054
|
+
|
1055
|
+
{
|
1056
|
+
couchbase::core::operations::management::collection_create_request req{ integration.ctx.bucket, scope_name, collection_name };
|
1057
|
+
if (integration.cluster_version().is_enterprise()) {
|
1058
|
+
req.max_expiry = max_expiry;
|
1059
|
+
}
|
1060
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
1061
|
+
REQUIRE_SUCCESS(resp.ctx.ec);
|
1062
|
+
auto created = test::utils::wait_until_collection_manifest_propagated(integration.cluster, integration.ctx.bucket, resp.uid);
|
1063
|
+
REQUIRE(created);
|
1064
|
+
}
|
1065
|
+
|
1066
|
+
{
|
1067
|
+
couchbase::core::topology::collections_manifest::collection collection;
|
1068
|
+
auto created = test::utils::wait_until([&]() {
|
1069
|
+
auto coll = get_collection(integration.cluster, integration.ctx.bucket, scope_name, collection_name);
|
1070
|
+
if (coll) {
|
1071
|
+
collection = *coll;
|
1072
|
+
return true;
|
1073
|
+
}
|
1074
|
+
return false;
|
1075
|
+
});
|
1076
|
+
REQUIRE(created);
|
1077
|
+
if (integration.cluster_version().is_enterprise()) {
|
1078
|
+
REQUIRE(collection.max_expiry == max_expiry);
|
1079
|
+
}
|
1080
|
+
}
|
1081
|
+
|
1082
|
+
{
|
1083
|
+
couchbase::core::operations::management::collection_create_request req{ integration.ctx.bucket, scope_name, collection_name };
|
1084
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
1085
|
+
REQUIRE(resp.ctx.ec == couchbase::errc::management::collection_exists);
|
1086
|
+
}
|
1087
|
+
{
|
1088
|
+
couchbase::core::operations::management::collection_drop_request req{ integration.ctx.bucket, scope_name, collection_name };
|
1089
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
1090
|
+
REQUIRE_SUCCESS(resp.ctx.ec);
|
1091
|
+
}
|
1092
|
+
|
1093
|
+
{
|
1094
|
+
auto dropped = test::utils::wait_until(
|
1095
|
+
[&]() { return !get_collection(integration.cluster, integration.ctx.bucket, scope_name, collection_name).has_value(); });
|
1096
|
+
REQUIRE(dropped);
|
1097
|
+
}
|
1098
|
+
|
1099
|
+
{
|
1100
|
+
couchbase::core::operations::management::collection_drop_request req{ integration.ctx.bucket, scope_name, collection_name };
|
1101
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
1102
|
+
REQUIRE(resp.ctx.ec == couchbase::errc::common::collection_not_found);
|
1103
|
+
}
|
1104
|
+
|
1105
|
+
{
|
1106
|
+
couchbase::core::operations::management::scope_drop_request req{ integration.ctx.bucket, scope_name };
|
1107
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
1108
|
+
REQUIRE_SUCCESS(resp.ctx.ec);
|
1109
|
+
}
|
1110
|
+
|
1111
|
+
{
|
1112
|
+
auto dropped =
|
1113
|
+
test::utils::wait_until([&]() { return !scope_exists(integration.cluster, integration.ctx.bucket, scope_name); });
|
1114
|
+
REQUIRE(dropped);
|
1115
|
+
}
|
946
1116
|
|
1117
|
+
{
|
1118
|
+
couchbase::core::operations::management::scope_drop_request req{ integration.ctx.bucket, scope_name };
|
1119
|
+
auto resp = test::utils::execute(integration.cluster, req);
|
1120
|
+
REQUIRE(resp.ctx.ec == couchbase::errc::common::scope_not_found);
|
1121
|
+
}
|
1122
|
+
}
|
1123
|
+
SECTION("public API")
|
1124
|
+
{
|
1125
|
+
couchbase::cluster c(integration.cluster);
|
1126
|
+
auto manager = c.bucket(integration.ctx.bucket).collections();
|
1127
|
+
{
|
1128
|
+
auto ctx = manager.create_scope(scope_name).get();
|
1129
|
+
REQUIRE_SUCCESS(ctx.ec());
|
1130
|
+
}
|
1131
|
+
{
|
1132
|
+
auto scope_exists = test::utils::wait_until([&scope_name, &manager]() {
|
1133
|
+
auto [ctx, result] = manager.get_all_scopes().get();
|
1134
|
+
if (!ctx.ec()) {
|
1135
|
+
for (auto& scope : result) {
|
1136
|
+
if (scope.name == scope_name) {
|
1137
|
+
return true;
|
1138
|
+
}
|
1139
|
+
}
|
1140
|
+
}
|
1141
|
+
return false;
|
1142
|
+
});
|
1143
|
+
REQUIRE(scope_exists);
|
1144
|
+
}
|
1145
|
+
{
|
1146
|
+
auto ctx = manager.create_scope(scope_name).get();
|
1147
|
+
REQUIRE(ctx.ec() == couchbase::errc::management::scope_exists);
|
1148
|
+
}
|
1149
|
+
{
|
1150
|
+
couchbase::create_collection_settings settings{};
|
1151
|
+
if (integration.cluster_version().is_enterprise()) {
|
1152
|
+
settings.max_expiry = max_expiry;
|
1153
|
+
}
|
1154
|
+
auto ctx = manager.create_collection(scope_name, collection_name, settings).get();
|
1155
|
+
REQUIRE_SUCCESS(ctx.ec());
|
1156
|
+
auto created = test::utils::wait_until([&scope_name, &collection_name, &manager]() {
|
1157
|
+
auto [get_ctx, result] = manager.get_all_scopes().get();
|
1158
|
+
if (!get_ctx.ec()) {
|
1159
|
+
for (auto& scope : result) {
|
1160
|
+
if (scope.name == scope_name) {
|
1161
|
+
for (auto& collection : scope.collections) {
|
1162
|
+
if (collection.name == collection_name) {
|
1163
|
+
return true;
|
1164
|
+
}
|
1165
|
+
}
|
1166
|
+
}
|
1167
|
+
}
|
1168
|
+
}
|
1169
|
+
return false;
|
1170
|
+
});
|
1171
|
+
REQUIRE(created);
|
1172
|
+
}
|
1173
|
+
{
|
1174
|
+
auto [ctx, scopes] = manager.get_all_scopes().get();
|
1175
|
+
REQUIRE_SUCCESS(ctx.ec());
|
1176
|
+
couchbase::management::bucket::collection_spec spec;
|
1177
|
+
for (auto& scope : scopes) {
|
1178
|
+
if (scope.name == scope_name) {
|
1179
|
+
for (auto& collection : scope.collections) {
|
1180
|
+
if (collection.name == collection_name) {
|
1181
|
+
spec = collection;
|
1182
|
+
}
|
1183
|
+
}
|
1184
|
+
}
|
1185
|
+
}
|
1186
|
+
if (integration.cluster_version().is_enterprise()) {
|
1187
|
+
REQUIRE(spec.max_expiry == max_expiry);
|
1188
|
+
}
|
1189
|
+
}
|
1190
|
+
{
|
1191
|
+
couchbase::create_collection_settings settings{};
|
1192
|
+
auto ctx = manager.create_collection(scope_name, collection_name, settings).get();
|
1193
|
+
REQUIRE(ctx.ec() == couchbase::errc::management::collection_exists);
|
1194
|
+
}
|
1195
|
+
{
|
1196
|
+
auto ctx = manager.drop_collection(scope_name, collection_name).get();
|
1197
|
+
REQUIRE_SUCCESS(ctx.ec());
|
1198
|
+
}
|
1199
|
+
{
|
1200
|
+
auto bucket_name = integration.ctx.bucket;
|
1201
|
+
auto does_not_exist = test::utils::wait_until([&scope_name, &collection_name, &manager]() {
|
1202
|
+
auto ctx = manager.drop_collection(scope_name, collection_name).get();
|
1203
|
+
return (ctx.ec() == couchbase::errc::common::collection_not_found);
|
1204
|
+
});
|
1205
|
+
REQUIRE(does_not_exist);
|
1206
|
+
}
|
1207
|
+
{
|
1208
|
+
auto ctx = manager.drop_scope(scope_name).get();
|
1209
|
+
REQUIRE_SUCCESS(ctx.ec());
|
1210
|
+
}
|
1211
|
+
{
|
1212
|
+
auto does_not_exist = test::utils::wait_until([&scope_name, &manager]() {
|
1213
|
+
auto ctx = manager.drop_scope(scope_name).get();
|
1214
|
+
return (ctx.ec() == couchbase::errc::common::scope_not_found);
|
1215
|
+
});
|
1216
|
+
REQUIRE(does_not_exist);
|
1217
|
+
}
|
1218
|
+
}
|
1219
|
+
}
|
1220
|
+
|
1221
|
+
TEST_CASE("integration: collection management bucket dedup", "[integration]")
|
1222
|
+
{
|
1223
|
+
test::utils::integration_test_guard integration;
|
1224
|
+
test::utils::open_bucket(integration.cluster, integration.ctx.bucket);
|
1225
|
+
|
1226
|
+
if (!integration.cluster_version().supports_collections()) {
|
1227
|
+
SKIP("cluster does not support collections");
|
1228
|
+
}
|
1229
|
+
if (!integration.has_bucket_capability("nonDedupedHistory")) {
|
1230
|
+
SKIP("Bucket does not support non deduped history");
|
1231
|
+
}
|
1232
|
+
|
1233
|
+
auto bucket_name = test::utils::uniq_id("bucket");
|
1234
|
+
auto scope_name = test::utils::uniq_id("scope");
|
1235
|
+
auto collection_name = test::utils::uniq_id("collection");
|
947
1236
|
{
|
948
1237
|
couchbase::core::operations::management::scope_create_request req{ integration.ctx.bucket, scope_name };
|
949
1238
|
auto resp = test::utils::execute(integration.cluster, req);
|
@@ -957,23 +1246,14 @@ TEST_CASE("integration: collection management", "[integration]")
|
|
957
1246
|
REQUIRE(created);
|
958
1247
|
}
|
959
1248
|
|
960
|
-
{
|
961
|
-
couchbase::core::operations::management::scope_create_request req{ integration.ctx.bucket, scope_name };
|
962
|
-
auto resp = test::utils::execute(integration.cluster, req);
|
963
|
-
REQUIRE(resp.ctx.ec == couchbase::errc::management::scope_exists);
|
964
|
-
}
|
965
|
-
|
966
1249
|
{
|
967
1250
|
couchbase::core::operations::management::collection_create_request req{ integration.ctx.bucket, scope_name, collection_name };
|
968
|
-
|
969
|
-
req.max_expiry = max_expiry;
|
970
|
-
}
|
1251
|
+
req.history = true;
|
971
1252
|
auto resp = test::utils::execute(integration.cluster, req);
|
972
1253
|
REQUIRE_SUCCESS(resp.ctx.ec);
|
973
1254
|
auto created = test::utils::wait_until_collection_manifest_propagated(integration.cluster, integration.ctx.bucket, resp.uid);
|
974
1255
|
REQUIRE(created);
|
975
1256
|
}
|
976
|
-
|
977
1257
|
{
|
978
1258
|
couchbase::core::topology::collections_manifest::collection collection;
|
979
1259
|
auto created = test::utils::wait_until([&]() {
|
@@ -985,50 +1265,27 @@ TEST_CASE("integration: collection management", "[integration]")
|
|
985
1265
|
return false;
|
986
1266
|
});
|
987
1267
|
REQUIRE(created);
|
988
|
-
|
989
|
-
REQUIRE(collection.max_expiry == max_expiry);
|
990
|
-
}
|
991
|
-
}
|
992
|
-
|
993
|
-
{
|
994
|
-
couchbase::core::operations::management::collection_create_request req{ integration.ctx.bucket, scope_name, collection_name };
|
995
|
-
auto resp = test::utils::execute(integration.cluster, req);
|
996
|
-
REQUIRE(resp.ctx.ec == couchbase::errc::management::collection_exists);
|
1268
|
+
REQUIRE(collection.history.value());
|
997
1269
|
}
|
998
|
-
|
999
|
-
{
|
1000
|
-
couchbase::core::operations::management::collection_drop_request req{ integration.ctx.bucket, scope_name, collection_name };
|
1001
|
-
auto resp = test::utils::execute(integration.cluster, req);
|
1002
|
-
REQUIRE_SUCCESS(resp.ctx.ec);
|
1003
|
-
}
|
1004
|
-
|
1005
|
-
{
|
1006
|
-
auto dropped = test::utils::wait_until(
|
1007
|
-
[&]() { return !get_collection(integration.cluster, integration.ctx.bucket, scope_name, collection_name).has_value(); });
|
1008
|
-
REQUIRE(dropped);
|
1009
|
-
}
|
1010
|
-
|
1011
|
-
{
|
1012
|
-
couchbase::core::operations::management::collection_drop_request req{ integration.ctx.bucket, scope_name, collection_name };
|
1013
|
-
auto resp = test::utils::execute(integration.cluster, req);
|
1014
|
-
REQUIRE(resp.ctx.ec == couchbase::errc::common::collection_not_found);
|
1015
|
-
}
|
1016
|
-
|
1017
1270
|
{
|
1018
|
-
couchbase::core::operations::management::
|
1271
|
+
couchbase::core::operations::management::collection_update_request req{ integration.ctx.bucket, scope_name, collection_name };
|
1272
|
+
req.history = false;
|
1019
1273
|
auto resp = test::utils::execute(integration.cluster, req);
|
1020
1274
|
REQUIRE_SUCCESS(resp.ctx.ec);
|
1021
1275
|
}
|
1022
|
-
|
1023
1276
|
{
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1277
|
+
couchbase::core::topology::collections_manifest::collection collection;
|
1278
|
+
auto no_history = test::utils::wait_until([&]() {
|
1279
|
+
auto coll = get_collection(integration.cluster, integration.ctx.bucket, scope_name, collection_name);
|
1280
|
+
if (coll.has_value()) {
|
1281
|
+
if (!coll.value().history.value()) {
|
1282
|
+
return true;
|
1283
|
+
}
|
1284
|
+
return false;
|
1285
|
+
}
|
1286
|
+
return false;
|
1287
|
+
});
|
1288
|
+
REQUIRE(no_history);
|
1032
1289
|
}
|
1033
1290
|
}
|
1034
1291
|
|