Skip to content

Commit 2010fd6

Browse files
shaunrd0ypatia
andauthored
Error if storage location is provided in array / group create request. (#5711)
This updates #5687 to avoid swallowing the error returned by REST if the custom storage location is provided in the request body for array / group creation. After this change we throw the exception client side before sending the request, if we are talking to a 3.0 REST server. --- TYPE: BUG DESC: Error if storage location is provided in array / group create request. --------- Co-authored-by: Ypatia Tsavliri <[email protected]>
1 parent 2dfca6a commit 2010fd6

19 files changed

+181
-149
lines changed

test/src/unit-capi-array.cc

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -887,7 +887,7 @@ TEST_CASE_METHOD(
887887
"[capi][array][open-at][reads][rest]") {
888888
// TODO: refactor for each supported FS.
889889
std::string temp_dir = fs_vec_[0]->temp_dir();
890-
std::string array_path = temp_dir + "array-open-at-reads";
890+
std::string array_path = "array-open-at-reads";
891891
std::string array_name = vfs_array_uri(fs_vec_[0], array_path, ctx_);
892892

893893
SECTION("- without encryption") {
@@ -1515,7 +1515,7 @@ TEST_CASE_METHOD(
15151515
// TODO: refactor for each supported FS.
15161516
std::string temp_dir = fs_vec_[0]->temp_dir();
15171517
std::string array_name =
1518-
vfs_array_uri(fs_vec_[0], temp_dir + "array-open-at-writes", ctx_);
1518+
vfs_array_uri(fs_vec_[0], "array-open-at-writes", ctx_);
15191519

15201520
SECTION("- without encryption") {
15211521
encryption_type_ = TILEDB_NO_ENCRYPTION;
@@ -1733,7 +1733,7 @@ TEST_CASE_METHOD(
17331733
"[capi][array][array-write-coords-oob][rest]") {
17341734
std::string temp_dir = fs_vec_[0]->temp_dir();
17351735
std::string array_name =
1736-
vfs_array_uri(fs_vec_[0], temp_dir + "array-write-coords-oob", ctx_);
1736+
vfs_array_uri(fs_vec_[0], "array-write-coords-oob", ctx_);
17371737
create_temp_dir(temp_dir);
17381738

17391739
int dimension = 0;
@@ -1881,8 +1881,7 @@ TEST_CASE_METHOD(
18811881
TEST_CASE_METHOD(
18821882
ArrayFx, "C API: Test empty array", "[capi][array][array-empty][rest]") {
18831883
std::string temp_dir = fs_vec_[0]->temp_dir();
1884-
std::string array_name =
1885-
vfs_array_uri(fs_vec_[0], temp_dir + "array_empty", ctx_);
1884+
std::string array_name = vfs_array_uri(fs_vec_[0], "array_empty", ctx_);
18861885

18871886
create_temp_dir(temp_dir);
18881887

@@ -1933,7 +1932,7 @@ TEST_CASE_METHOD(
19331932
TEST_CASE_METHOD(
19341933
ArrayFx, "C API: Test deletion of array", "[capi][array][delete][rest]") {
19351934
std::string temp_dir = fs_vec_[0]->temp_dir();
1936-
std::string array_path = temp_dir + "array_delete";
1935+
std::string array_path = "array_delete";
19371936
std::string array_name = vfs_array_uri(fs_vec_[0], array_path, ctx_);
19381937

19391938
create_temp_dir(temp_dir);
@@ -2011,7 +2010,7 @@ TEST_CASE_METHOD(
20112010
"[capi][subarray][error][sparse][rest]") {
20122011
std::string temp_dir = fs_vec_[0]->temp_dir();
20132012
std::string array_name =
2014-
vfs_array_uri(fs_vec_[0], temp_dir + "query_error_sparse", ctx_);
2013+
vfs_array_uri(fs_vec_[0], "query_error_sparse", ctx_);
20152014
create_temp_dir(temp_dir);
20162015

20172016
create_sparse_vector(array_name);
@@ -2072,8 +2071,7 @@ TEST_CASE_METHOD(
20722071
"C API: Test query errors, dense writes",
20732072
"[capi][query][error][dense][rest]") {
20742073
std::string temp_dir = fs_vec_[0]->temp_dir();
2075-
std::string array_name =
2076-
vfs_array_uri(fs_vec_[0], temp_dir + "query_error_dense", ctx_);
2074+
std::string array_name = vfs_array_uri(fs_vec_[0], "query_error_dense", ctx_);
20772075
create_temp_dir(temp_dir);
20782076

20792077
create_dense_array(array_name);
@@ -2152,8 +2150,7 @@ TEST_CASE_METHOD(
21522150
"C API: Test query errors, dense unordered writes",
21532151
"[capi][query][error][dense][rest]") {
21542152
std::string temp_dir = fs_vec_[0]->temp_dir();
2155-
std::string array_name =
2156-
vfs_array_uri(fs_vec_[0], temp_dir + "query_error_dense", ctx_);
2153+
std::string array_name = vfs_array_uri(fs_vec_[0], "query_error_dense", ctx_);
21572154

21582155
create_temp_dir(temp_dir);
21592156

@@ -2190,8 +2187,7 @@ TEST_CASE_METHOD(
21902187
"C API: Test query errors, dense reads in global order",
21912188
"[capi][query][error][dense][rest]") {
21922189
std::string temp_dir = fs_vec_[0]->temp_dir();
2193-
std::string array_name =
2194-
vfs_array_uri(fs_vec_[0], temp_dir + "query_error_dense", ctx_);
2190+
std::string array_name = vfs_array_uri(fs_vec_[0], "query_error_dense", ctx_);
21952191

21962192
create_temp_dir(temp_dir);
21972193

test/src/unit-capi-attributes.cc

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,8 @@ TEST_CASE_METHOD(
161161
for (const auto& attr_name : attr_names) {
162162
for (const auto& fs : fs_vec_) {
163163
std::string temp_dir = fs->temp_dir();
164-
std::string array_name = vfs_array_uri(
165-
fs, temp_dir + "array-illegal-char" + std::to_string(num++), ctx_);
164+
std::string array_name =
165+
vfs_array_uri(fs, "array-illegal-char" + std::to_string(num++), ctx_);
166166

167167
// Create new TileDB context with file lock config disabled, rest the
168168
// same.
@@ -277,8 +277,7 @@ TEST_CASE_METHOD(
277277

278278
for (const auto& fs : fs_vec_) {
279279
std::string temp_dir = fs->temp_dir();
280-
std::string array_name =
281-
vfs_array_uri(fs, temp_dir + "byte-attribute", ctx_);
280+
std::string array_name = vfs_array_uri(fs, "byte-attribute", ctx_);
282281
std::string attr_name = "a";
283282

284283
// Create new TileDB context with file lock config disabled, rest the
@@ -469,8 +468,7 @@ TEST_CASE_METHOD(
469468
"[capi][attributes][tiledb_bool][rest]") {
470469
for (const auto& fs : fs_vec_) {
471470
std::string temp_dir = fs->temp_dir();
472-
std::string array_name =
473-
vfs_array_uri(fs, temp_dir + "bool-attribute", ctx_);
471+
std::string array_name = vfs_array_uri(fs, "bool-attribute", ctx_);
474472

475473
std::string attr_name = "attr";
476474

test/src/unit-capi-dense_array.cc

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ DenseArrayFx::DenseArrayFx()
252252
: fs_vec_(vfs_test_get_fs_vec()) {
253253
// Initialize vfs test
254254
REQUIRE(vfs_test_init(fs_vec_, &ctx_, &vfs_).ok());
255-
prefix_ = vfs_array_uri(fs_vec_[0], fs_vec_[0]->temp_dir(), ctx_);
255+
prefix_ = vfs_array_uri(fs_vec_[0], "dense-array-fx", ctx_);
256256
std::srand(0);
257257
}
258258

@@ -852,7 +852,7 @@ void DenseArrayFx::check_sorted_reads() {
852852
uint64_t capacity = 250000;
853853
tiledb_layout_t cell_order = TILEDB_ROW_MAJOR;
854854
tiledb_layout_t tile_order = TILEDB_ROW_MAJOR;
855-
std::string array_name = prefix_ + "sorted_reads_array";
855+
std::string array_name = prefix_ + "/sorted_reads_array";
856856

857857
// Create a dense integer array
858858
create_dense_array_2D(
@@ -1025,7 +1025,7 @@ void DenseArrayFx::check_sorted_writes() {
10251025
uint64_t capacity = 1000;
10261026
tiledb_layout_t cell_order = TILEDB_ROW_MAJOR;
10271027
tiledb_layout_t tile_order = TILEDB_ROW_MAJOR;
1028-
std::string array_name = prefix_ + "sorted_writes_array";
1028+
std::string array_name = prefix_ + "/sorted_writes_array";
10291029

10301030
// Create a dense integer array
10311031
create_dense_array_2D(
@@ -1110,7 +1110,7 @@ void DenseArrayFx::check_invalid_cell_num_in_dense_writes() {
11101110
uint64_t capacity = 1000;
11111111
tiledb_layout_t cell_order = TILEDB_ROW_MAJOR;
11121112
tiledb_layout_t tile_order = TILEDB_ROW_MAJOR;
1113-
std::string array_name = prefix_ + "invalid_cell_num_dense_writes_array";
1113+
std::string array_name = prefix_ + "/invalid_cell_num_dense_writes_array";
11141114

11151115
// Create a dense integer array
11161116
create_dense_array_2D(
@@ -1183,7 +1183,7 @@ void DenseArrayFx::check_simultaneous_writes() {
11831183
uint64_t capacity = 1000;
11841184
tiledb_layout_t cell_order = TILEDB_ROW_MAJOR;
11851185
tiledb_layout_t tile_order = TILEDB_ROW_MAJOR;
1186-
std::string array_name = prefix_ + "simultaneous_writes_array";
1186+
std::string array_name = prefix_ + "/simultaneous_writes_array";
11871187

11881188
// Create a dense integer array
11891189
create_dense_array_2D(
@@ -1501,7 +1501,7 @@ void DenseArrayFx::create_large_dense_array_1_attribute(
15011501
}
15021502

15031503
void DenseArrayFx::check_return_coords(bool split_coords) {
1504-
std::string array_name = prefix_ + "return_coords";
1504+
std::string array_name = prefix_ + "/return_coords";
15051505
create_dense_array(array_name);
15061506
write_dense_array(array_name);
15071507
read_dense_array_with_coords_full_global(array_name, split_coords);
@@ -2836,7 +2836,7 @@ void DenseArrayFx::read_large_dense_array(
28362836
}
28372837

28382838
void DenseArrayFx::check_non_empty_domain() {
2839-
std::string array_name = prefix_ + "dense_non_empty_domain";
2839+
std::string array_name = prefix_ + "/dense_non_empty_domain";
28402840
create_dense_array(array_name);
28412841

28422842
// Check empty domain
@@ -3000,7 +3000,7 @@ TEST_CASE_METHOD(
30003000
"[capi][dense][invalid_set_query_buffer][rest]") {
30013001
std::string temp_dir = fs_vec_[0]->temp_dir();
30023002
create_temp_dir(temp_dir);
3003-
std::string array_name = prefix_ + "dense_invalid_set_query_buffer";
3003+
std::string array_name = prefix_ + "/dense_invalid_set_query_buffer";
30043004

30053005
// Create and write dense array
30063006
create_dense_array(array_name);
@@ -3085,7 +3085,7 @@ TEST_CASE_METHOD(
30853085
"[capi][dense][open-array-checks][rest]") {
30863086
std::string temp_dir = fs_vec_[0]->temp_dir();
30873087
create_temp_dir(temp_dir);
3088-
std::string array_name = prefix_ + "dense_open_array";
3088+
std::string array_name = prefix_ + "/dense_open_array";
30893089

30903090
// Create and write dense array
30913091
create_dense_array(array_name);
@@ -3166,7 +3166,7 @@ TEST_CASE_METHOD(
31663166
"[capi][dense][dense-reopen-array-checks][rest]") {
31673167
std::string temp_dir = fs_vec_[0]->temp_dir();
31683168
create_temp_dir(temp_dir);
3169-
std::string array_name = prefix_ + "dense_open_array";
3169+
std::string array_name = prefix_ + "/dense_open_array";
31703170

31713171
create_dense_array(array_name);
31723172
write_dense_array(array_name);
@@ -3282,7 +3282,7 @@ TEST_CASE_METHOD(
32823282
"[capi][dense][uri-ending-slash][rest]") {
32833283
std::string temp_dir = fs_vec_[0]->temp_dir();
32843284
create_temp_dir(temp_dir);
3285-
std::string array_name = prefix_ + "with_ending_slash";
3285+
std::string array_name = prefix_ + "/with_ending_slash";
32863286

32873287
// Create and write dense array
32883288
create_dense_array(array_name);
@@ -3297,7 +3297,7 @@ TEST_CASE_METHOD(
32973297
"[capi][dense][write-missing-attributes][rest]") {
32983298
std::string temp_dir = fs_vec_[0]->temp_dir();
32993299
create_temp_dir(temp_dir);
3300-
std::string array_name = prefix_ + "dense_write_missing_attributes";
3300+
std::string array_name = prefix_ + "/dense_write_missing_attributes";
33013301

33023302
create_dense_array(array_name);
33033303
write_dense_array_missing_attributes(array_name);
@@ -3310,7 +3310,7 @@ TEST_CASE_METHOD(
33103310
"[capi][dense][read_empty][rest]") {
33113311
std::string temp_dir = fs_vec_[0]->temp_dir();
33123312
create_temp_dir(temp_dir);
3313-
std::string array_name = prefix_ + "dense_read_empty";
3313+
std::string array_name = prefix_ + "/dense_read_empty";
33143314

33153315
create_dense_array_1_attribute(array_name);
33163316

@@ -3405,7 +3405,7 @@ TEST_CASE_METHOD(
34053405
"[capi][dense][dense-read-empty][dense-read-empty-merge][rest]") {
34063406
std::string temp_dir = fs_vec_[0]->temp_dir();
34073407
create_temp_dir(temp_dir);
3408-
std::string array_name = prefix_ + "dense_read_empty_merge";
3408+
std::string array_name = prefix_ + "/dense_read_empty_merge";
34093409

34103410
create_dense_array_1_attribute(array_name);
34113411

@@ -3499,7 +3499,7 @@ TEST_CASE_METHOD(
34993499
"[capi][dense][dense-multi-fragment][rest]") {
35003500
std::string temp_dir = fs_vec_[0]->temp_dir();
35013501
create_temp_dir(temp_dir);
3502-
std::string array_name = prefix_ + "dense_multi_fragment/";
3502+
std::string array_name = prefix_ + "/dense_multi_fragment";
35033503

35043504
create_dense_array_1_attribute(array_name);
35053505

@@ -3620,7 +3620,7 @@ TEST_CASE_METHOD(
36203620
"[capi][dense][dense-is-open][rest]") {
36213621
std::string temp_dir = fs_vec_[0]->temp_dir();
36223622
create_temp_dir(temp_dir);
3623-
std::string array_name = prefix_ + "dense_is_open/";
3623+
std::string array_name = prefix_ + "/dense_is_open";
36243624

36253625
create_dense_array(array_name);
36263626

@@ -3658,7 +3658,7 @@ TEST_CASE_METHOD(
36583658
"[capi][dense][dense-get-schema][rest]") {
36593659
std::string temp_dir = fs_vec_[0]->temp_dir();
36603660
create_temp_dir(temp_dir);
3661-
std::string array_name = prefix_ + "dense_get_schema/";
3661+
std::string array_name = prefix_ + "/dense_get_schema";
36623662

36633663
create_dense_array(array_name);
36643664

@@ -3691,7 +3691,7 @@ TEST_CASE_METHOD(
36913691
"[capi][dense][dense-col-updates][rest]") {
36923692
std::string temp_dir = fs_vec_[0]->temp_dir();
36933693
create_temp_dir(temp_dir);
3694-
std::string array_name = prefix_ + "dense-col-updates";
3694+
std::string array_name = prefix_ + "/dense-col-updates";
36953695

36963696
create_dense_array_1_attribute(array_name);
36973697

@@ -3856,7 +3856,7 @@ TEST_CASE_METHOD(
38563856
"[capi][dense][splitting][unary-range][rest]") {
38573857
std::string temp_dir = fs_vec_[0]->temp_dir();
38583858
create_temp_dir(temp_dir);
3859-
std::string array_name = prefix_ + "unary-range";
3859+
std::string array_name = prefix_ + "/unary-range";
38603860

38613861
// Create and write dense array
38623862
create_dense_array(array_name);
@@ -3945,7 +3945,7 @@ TEST_CASE_METHOD(
39453945
"[capi][dense][default-dim][rest]") {
39463946
std::string temp_dir = fs_vec_[0]->temp_dir();
39473947
create_temp_dir(temp_dir);
3948-
std::string array_name = prefix_ + "default-dim";
3948+
std::string array_name = prefix_ + "/default-dim";
39493949

39503950
// Create and write dense array
39513951
create_dense_array(array_name);
@@ -4007,7 +4007,7 @@ TEST_CASE_METHOD(
40074007
"rest]") {
40084008
std::string temp_dir = fs_vec_[0]->temp_dir();
40094009
create_temp_dir(temp_dir);
4010-
std::string array_name = prefix_ + "dense_read_same_tile";
4010+
std::string array_name = prefix_ + "/dense_read_same_tile";
40114011

40124012
create_dense_array_same_tile(array_name);
40134013

@@ -4139,7 +4139,7 @@ TEST_CASE_METHOD(
41394139
"[capi][dense][multi-index][simple][rest]") {
41404140
std::string temp_dir = fs_vec_[0]->temp_dir();
41414141
create_temp_dir(temp_dir);
4142-
std::string array_name = prefix_ + "dense_read_multi_index_simple";
4142+
std::string array_name = prefix_ + "/dense_read_multi_index_simple";
41434143

41444144
create_large_dense_array_1_attribute(array_name);
41454145

@@ -4188,7 +4188,7 @@ TEST_CASE_METHOD(
41884188
"[capi][dense][multi-index][complex][rest]") {
41894189
std::string temp_dir = fs_vec_[0]->temp_dir();
41904190
create_temp_dir(temp_dir);
4191-
std::string array_name = prefix_ + "dense_read_multi_index_complex";
4191+
std::string array_name = prefix_ + "/dense_read_multi_index_complex";
41924192

41934193
create_large_dense_array_1_attribute(array_name);
41944194

@@ -4254,7 +4254,7 @@ TEST_CASE_METHOD(
42544254
"[capi][dense][multi-index][cross-tile-boundary][rest]") {
42554255
std::string temp_dir = fs_vec_[0]->temp_dir();
42564256
create_temp_dir(temp_dir);
4257-
std::string array_name = prefix_ + "dense_read_multi_index_cross_tile";
4257+
std::string array_name = prefix_ + "/dense_read_multi_index_cross_tile";
42584258

42594259
create_large_dense_array_1_attribute(array_name);
42604260

@@ -4303,7 +4303,7 @@ TEST_CASE_METHOD(
43034303
"[capi][dense][multi-index][out-of-order-ranges][rest]") {
43044304
std::string temp_dir = fs_vec_[0]->temp_dir();
43054305
create_temp_dir(temp_dir);
4306-
std::string array_name = prefix_ + "dense_read_multi_out_of_order";
4306+
std::string array_name = prefix_ + "/dense_read_multi_out_of_order";
43074307

43084308
create_large_dense_array_1_attribute(array_name);
43094309

@@ -4352,7 +4352,7 @@ TEST_CASE_METHOD(
43524352
"[capi][dense][multi-index][out-of-order-ranges-2][rest]") {
43534353
std::string temp_dir = fs_vec_[0]->temp_dir();
43544354
create_temp_dir(temp_dir);
4355-
std::string array_name = prefix_ + "dense_read_multi_index_coalesce";
4355+
std::string array_name = prefix_ + "/dense_read_multi_index_coalesce";
43564356

43574357
create_large_dense_array_1_attribute(array_name);
43584358

test/src/unit-capi-dense_neg.cc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -538,8 +538,7 @@ TEST_CASE_METHOD(
538538
"[capi][dense-neg][dense-neg-vector][rest]") {
539539
std::string temp_dir = fs_vec_[0]->temp_dir();
540540
create_temp_dir(temp_dir);
541-
std::string vector_name =
542-
vfs_array_uri(fs_vec_[0], temp_dir + "dense_neg_vector", ctx_);
541+
std::string vector_name = vfs_array_uri(fs_vec_[0], "dense_neg_vector", ctx_);
543542

544543
create_dense_vector(vector_name);
545544
write_dense_vector(vector_name);
@@ -554,8 +553,7 @@ TEST_CASE_METHOD(
554553
"[capi][dense-neg][dense-neg-array][rest]") {
555554
std::string temp_dir = fs_vec_[0]->temp_dir();
556555
create_temp_dir(temp_dir);
557-
std::string array_name =
558-
vfs_array_uri(fs_vec_[0], temp_dir + "dense_neg_array", ctx_);
556+
std::string array_name = vfs_array_uri(fs_vec_[0], "dense_neg_array", ctx_);
559557

560558
create_dense_array(array_name);
561559
write_dense_array_global(array_name);

test/src/unit-capi-group.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ TEST_CASE_METHOD(
397397
// TODO: refactor for each supported FS.
398398
std::string temp_dir = fs_vec_[0]->temp_dir();
399399
create_temp_dir(temp_dir);
400-
std::string group1_uri = vfs_array_uri(fs_vec_[0], temp_dir + "group1", ctx_);
400+
std::string group1_uri = vfs_array_uri(fs_vec_[0], "group1", ctx_);
401401

402402
REQUIRE(tiledb_group_create(ctx_, group1_uri.c_str()) == TILEDB_OK);
403403

@@ -1550,10 +1550,10 @@ TEST_CASE_METHOD(
15501550
std::string temp_dir = fs_vec_[0]->temp_dir();
15511551
create_temp_dir(temp_dir);
15521552

1553-
std::string group1_uri = vfs_array_uri(fs_vec_[0], temp_dir + "group1", ctx_);
1553+
std::string group1_uri = vfs_array_uri(fs_vec_[0], "group1", ctx_);
15541554
REQUIRE(tiledb_group_create(ctx_, group1_uri.c_str()) == TILEDB_OK);
15551555

1556-
std::string group2_uri = vfs_array_uri(fs_vec_[0], temp_dir + "group2", ctx_);
1556+
std::string group2_uri = vfs_array_uri(fs_vec_[0], "group2", ctx_);
15571557
REQUIRE(tiledb_group_create(ctx_, group2_uri.c_str()) == TILEDB_OK);
15581558

15591559
tiledb_group_t* group1;

0 commit comments

Comments
 (0)