Skip to content

Commit

Permalink
Subarray serialization and test wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
shaunrd0 authored and ihnorton committed May 19, 2023
1 parent 26def32 commit 058f21c
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 3 deletions.
36 changes: 33 additions & 3 deletions test/support/src/serialization_wrappers.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,17 @@
* through serialization.
*/

#include <test/support/tdb_catch.h>
#include <string>

#include "test/support/src/helpers.h"
#include "tiledb/sm/c_api/tiledb.h"
#include "tiledb/sm/c_api/tiledb_serialization.h"
#include "tiledb/sm/c_api/tiledb_struct_def.h"
#include "tiledb/sm/serialization/query.h"

#ifdef TILEDB_SERIALIZATION
#include <capnp/message.h>
#endif
#include <test/support/tdb_catch.h>
#include <string>

int tiledb_array_create_serialization_wrapper(
tiledb_ctx_t* ctx,
Expand Down Expand Up @@ -179,4 +184,29 @@ int tiledb_fragment_info_serialize(

tiledb_buffer_free(&buffer);
return rc;
}

void tiledb_subarray_serialize(
[[maybe_unused]] tiledb_ctx_t* ctx,
[[maybe_unused]] tiledb_array_t* array,
[[maybe_unused]] tiledb_subarray_t** subarray) {
#ifdef TILEDB_SERIALIZATION
// Serialize
::capnp::MallocMessageBuilder message;
tiledb::sm::serialization::capnp::Subarray::Builder builder =
message.initRoot<tiledb::sm::serialization::capnp::Subarray>();
tiledb_array_schema_t* array_schema = nullptr;
tiledb_array_get_schema(ctx, array, &array_schema);
REQUIRE(tiledb::sm::serialization::subarray_to_capnp(
*(array_schema->array_schema_), (*subarray)->subarray_, &builder)
.ok());
// Deserialize
tiledb_subarray_t* deserialized_subarray;
tiledb::test::require_tiledb_ok(
ctx, tiledb_subarray_alloc(ctx, array, &deserialized_subarray));
REQUIRE(tiledb::sm::serialization::subarray_from_capnp(
builder, deserialized_subarray->subarray_)
.ok());
*subarray = deserialized_subarray;
#endif
}
10 changes: 10 additions & 0 deletions test/support/src/serialization_wrappers.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,4 +128,14 @@ int tiledb_fragment_info_serialize(
tiledb_fragment_info_t* fragment_info_before_serialization,
tiledb_fragment_info_t* fragment_info_deserialized,
tiledb_serialization_type_t serialize_type);

/**
* Return a subarray after serializing and deserializing it
*
* @param ctx tiledb context
* @param array the array the subarray belongs to
* @param subarray the subarray to serialize and deserialize
*/
void tiledb_subarray_serialize(
tiledb_ctx_t* ctx, tiledb_array_t* array, tiledb_subarray_t** subarray);
#endif // TILEDB_TEST_SERIALIZATION_WRAPPERS_H
9 changes: 9 additions & 0 deletions tiledb/sm/serialization/query.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
#include "tiledb/common/thread_pool.h"
#include "tiledb/sm/query/query_condition.h"
#include "tiledb/sm/storage_manager/storage_manager_declaration.h"
#include "tiledb/sm/subarray/subarray.h"

#ifdef TILEDB_SERIALIZATION
#include "tiledb/sm/serialization/tiledb-rest.h"
Expand Down Expand Up @@ -232,6 +233,14 @@ Status condition_from_capnp(
Status condition_to_capnp(
const QueryCondition& condition,
capnp::Condition::Builder* condition_builder);

Status subarray_to_capnp(
const ArraySchema& schema,
const Subarray* subarray,
capnp::Subarray::Builder* builder);

Status subarray_from_capnp(
const capnp::Subarray::Reader& reader, Subarray* subarray);
#endif

} // namespace serialization
Expand Down

0 comments on commit 058f21c

Please sign in to comment.