Skip to content

Commit 41f0112

Browse files
committed
Update test.
1 parent 60d39dd commit 41f0112

File tree

1 file changed

+23
-40
lines changed

1 file changed

+23
-40
lines changed

test/src/unit-cppapi-metadata.cc

Lines changed: 23 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -184,51 +184,34 @@ TEST_CASE_METHOD(
184184

185185
TEST_CASE_METHOD(
186186
CPPMetadataFx,
187-
"C++ API: Metadata write / read at timestamp smr",
188-
"[cppapi][metadata][timestamp][smr]") {
187+
"C++ API: Metadata write / read multithread",
188+
"[cppapi][metadata][multithread]") {
189189
create_default_array_1d();
190190
Context ctx;
191-
192-
std::vector<uint64_t> a(100);
193-
std::iota(a.begin(), a.end(), 0);
194-
std::vector<uint64_t> b(1000);
195-
std::iota(b.begin(), b.end(), 0);
196-
197-
const auto tp = TemporalPolicy(TimestampStartEnd, 0, 1);
198-
std::latch latch(2);
199-
std::string meta[]{"a", "b", "c", "d", "e", "f"};
200-
Array array1(ctx, std::string(array_name_), TILEDB_WRITE, tp);
201-
array1.put_metadata("a", TILEDB_UINT64, 100, a.data());
202-
array1.close();
203-
204-
Array array(ctx, std::string(array_name_), TILEDB_WRITE, tp);
205-
std::thread t1([&]() {
206-
for (const auto& x : meta) {
207-
array.put_metadata(x, TILEDB_UINT64, 1000, b.data());
208-
}
209-
latch.count_down();
210-
array.close();
211-
});
212-
213-
std::thread t2([&]() {
214-
latch.arrive_and_wait();
215-
Array read_array(ctx, std::string(array_name_), TILEDB_READ, tp);
216-
217-
for (const auto& x : meta) {
191+
for (int i = 1; i <= 100; i++) {
192+
// Grow the size of metadata each write.
193+
std::vector<uint64_t> b(100 * i);
194+
std::iota(b.begin(), b.end(), 0);
195+
std::latch get_metadata(2);
196+
std::thread t1([&]() {
197+
Array array(ctx, std::string(array_name_), TILEDB_WRITE);
198+
array.put_metadata("a", TILEDB_UINT64, b.size(), b.data());
199+
get_metadata.count_down();
200+
array.close();
201+
});
202+
203+
std::thread t2([&]() {
204+
get_metadata.arrive_and_wait();
205+
Array read_array(ctx, std::string(array_name_), TILEDB_READ);
218206
tiledb_datatype_t type;
219207
uint32_t value_num = 0;
220208
const void* data;
221-
read_array.get_metadata(x, &type, &value_num, &data);
222-
std::cout << "'value_num':" << value_num << std::endl;
223-
std::cout << "'" << x << "': ";
224-
for (size_t i = 0; i < value_num; ++i) {
225-
std::cout << ((const uint64_t*)data)[i] << ",";
226-
}
227-
std::cout << std::endl;
228-
}
229-
read_array.close();
230-
});
231-
t1.join(), t2.join();
209+
read_array.get_metadata("a", &type, &value_num, &data);
210+
read_array.close();
211+
});
212+
213+
t1.join(), t2.join();
214+
}
232215
}
233216

234217
TEST_CASE_METHOD(

0 commit comments

Comments
 (0)