summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Lambert <eric_lambert@xyratex.com>2014-09-03 10:47:54 -0700
committerEric Lambert <eric_lambert@xyratex.com>2014-09-03 10:47:54 -0700
commitcafa07b224255874a80b776fa5574971fbaabca3 (patch)
treed7c6631cd17bb48c061dc103de093890314859c2
parent6bbcfde6579c4763a0e2d9ca524b4cb3c40339d8 (diff)
downloadliberasurecode-cafa07b224255874a80b776fa5574971fbaabca3.tar.gz
added simple test for get_fragment_metadata
-rw-r--r--test/liberasurecode_test.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/test/liberasurecode_test.c b/test/liberasurecode_test.c
index 7235fee..ecb7006 100644
--- a/test/liberasurecode_test.c
+++ b/test/liberasurecode_test.c
@@ -648,6 +648,49 @@ static void test_fragments_needed_impl(const char *backend,
free(new_fragments_needed);
}
+static void test_get_fragment_metadata(const char *backend,
+ struct ec_args *args)
+{
+ int i = 0;
+ int rc = 0;
+ int desc = -1;
+ int orig_data_size = 1024 * 1024;
+ char *orig_data = NULL;
+ char **encoded_data = NULL, **encoded_parity = NULL;
+ uint64_t encoded_fragment_len = 0;
+ int num_fragments = args-> k + args->m;
+ fragment_metadata_t cur_frag;
+ fragment_metadata_t cmp_frag;
+
+ desc = liberasurecode_instance_create(backend, args);
+ if (-EBACKENDNOTAVAIL == desc) {
+ fprintf (stderr, "Backend library not available!\n");
+ return;
+ }
+ assert(desc > 0);
+
+ orig_data = create_buffer(orig_data_size, 'x');
+ assert(orig_data != NULL);
+
+ rc = liberasurecode_encode(desc, orig_data, orig_data_size,
+ &encoded_data, &encoded_parity, &encoded_fragment_len);
+ assert(0 == rc);
+
+ memset(&cmp_frag, -1, sizeof(fragment_metadata_t));
+
+ for (i = 0; i < num_fragments; i++) {
+ memset(&cur_frag, -1, sizeof(fragment_metadata_t));
+ if (i < args->k) {
+ rc = liberasurecode_get_fragment_metadata(encoded_data[i], &cur_frag);
+ } else {
+ rc = liberasurecode_get_fragment_metadata(encoded_parity[i - args->k], &cur_frag);
+ }
+ assert(rc == 0);
+ rc = memcmp(&cur_frag, &cmp_frag, sizeof(fragment_metadata_t));
+ assert(rc != 0);
+ }
+}
+
static void test_decode_with_missing_data(const char *backend,
struct ec_args *args)
{
@@ -858,6 +901,10 @@ struct testcase testcases[] = {
test_simple_encode_decode,
"null", &null_args,
.skip = false},
+ {"test_get_fragment_metadata",
+ test_get_fragment_metadata,
+ "null", &null_args,
+ .skip = false},
// Flat XOR backend tests
{"create_and_destroy_backend",
test_create_and_destroy_backend,
@@ -895,6 +942,10 @@ struct testcase testcases[] = {
test_fragments_needed,
"flat_xor_hd", &flat_xor_hd_args,
.skip = false},
+ {"test_get_fragment_metadata_flat_xor_hd",
+ test_get_fragment_metadata,
+ "flat_xor_hd", &flat_xor_hd_args,
+ .skip = false},
// Jerasure RS Vand backend tests
{"create_and_destroy_backend",
test_create_and_destroy_backend,
@@ -928,6 +979,10 @@ struct testcase testcases[] = {
test_fragments_needed,
"jerasure_rs_vand", &jerasure_rs_vand_args,
.skip = false},
+ {"test_get_fragment_metadata_jerasure_rs_vand",
+ test_get_fragment_metadata,
+ "jerasure_rs_vand", &jerasure_rs_vand_args,
+ .skip = false},
// Jerasure RS Cauchy backend tests
{"create_and_destroy_backend",
test_create_and_destroy_backend,
@@ -961,6 +1016,10 @@ struct testcase testcases[] = {
test_fragments_needed,
"jerasure_rs_cauchy", &jerasure_rs_cauchy_args,
.skip = false},
+ {"test_get_fragment_metadata_jerasure_rs_cauchy",
+ test_get_fragment_metadata,
+ "jerasure_rs_cauchy", &jerasure_rs_cauchy_args,
+ .skip = false},
{ NULL, NULL, NULL, NULL, false },
};