summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Greenan <kmgreen2@gmail.com>2015-01-19 10:47:41 -0800
committerKevin Greenan <kmgreen2@gmail.com>2015-01-19 10:47:41 -0800
commit09efa2dd8402ecf8a783e6b34bd6b8f667ee3298 (patch)
treef9b9ad49097168a0e66732ce61f0a6a161eb330c
parentda335a691481db40f1c508a75411817ef1192f2c (diff)
downloadliberasurecode-09efa2dd8402ecf8a783e6b34bd6b8f667ee3298.tar.gz
Decreasing the verbosity of the tests and renaming one of the stripe verify
tests to a 'fragment verify' test, since it is using is_valid_fragment and and validating fragment headers, not stripe-level.
-rw-r--r--include/erasurecode/erasurecode.h1
-rw-r--r--src/erasurecode.c12
-rw-r--r--test/libec_slap.c4
-rw-r--r--test/liberasurecode_test.c21
4 files changed, 20 insertions, 18 deletions
diff --git a/include/erasurecode/erasurecode.h b/include/erasurecode/erasurecode.h
index 691d470..d53f182 100644
--- a/include/erasurecode/erasurecode.h
+++ b/include/erasurecode/erasurecode.h
@@ -335,6 +335,7 @@ typedef enum {
EBACKENDNOTAVAIL = 204,
EBADCHKSUM = 205,
EINVALIDPARAMS = 206,
+ EBADHEADER = 207,
} LIBERASURECODE_ERROR_CODES;
/* =~=*=~==~=*=~==~=*=~==~=*=~===~=*=~==~=*=~===~=*=~==~=*=~===~=*=~==~=*=~= */
diff --git a/src/erasurecode.c b/src/erasurecode.c
index 9040159..b4d9872 100644
--- a/src/erasurecode.c
+++ b/src/erasurecode.c
@@ -1000,11 +1000,14 @@ int is_valid_fragment_metadata(int desc, fragment_metadata_t *fragment_metadata)
if (!be) {
log_error("Unable to verify stripe metadata: invalid backend id %d.",
desc);
- return 1;
+ return -EINVALIDPARAMS;
}
if (liberasurecode_verify_fragment_metadata(be,
fragment_metadata) != 0) {
- return 1;
+ return -EBADHEADER;
+ }
+ if (!be->common.ops->is_compatible_with(fragment_metadata->backend_version)) {
+ return -EBADHEADER;
}
if (fragment_metadata->chksum_mismatch == 1) {
return -EBADCHKSUM;
@@ -1028,8 +1031,9 @@ int liberasurecode_verify_stripe_metadata(int desc,
for (i = 0; i < num_fragments; i++) {
fragment_metadata_t *fragment_metadata = (fragment_metadata_t*)fragments[i];
- if (is_valid_fragment_metadata(desc, fragment_metadata) == -EBADCHKSUM) {
- return -EBADCHKSUM;
+ int ret = is_valid_fragment_metadata(desc, fragment_metadata);
+ if (ret < 0) {
+ return ret;
}
}
diff --git a/test/libec_slap.c b/test/libec_slap.c
index fb9e69a..f3166fe 100644
--- a/test/libec_slap.c
+++ b/test/libec_slap.c
@@ -314,9 +314,7 @@ static int test_hd_code(struct ec_args *args,
free(out_data);
assert(rc == 0);
- fprintf(stderr," Decode Scenario - ");
- print_mask(mask);
- fprintf(stderr,": OK\n");
+ //print_mask(mask);
}
for (j = 0; j < args->k; j++) {
free(encoded_data[j]);
diff --git a/test/liberasurecode_test.c b/test/liberasurecode_test.c
index 61492d1..49b70c6 100644
--- a/test/liberasurecode_test.c
+++ b/test/liberasurecode_test.c
@@ -470,19 +470,19 @@ static void test_verify_stripe_metadata_invalid_args() {
char **frags = malloc(sizeof(char *) * num_frags);
rc = liberasurecode_verify_stripe_metadata(desc, frags, num_frags);
- assert(rc == 1);
+ assert(rc == -EINVALIDPARAMS);
desc = liberasurecode_instance_create(EC_BACKEND_NULL, &null_args);
assert(desc > 0);
rc = liberasurecode_verify_stripe_metadata(desc, NULL, num_frags);
- assert(rc == 1);
+ assert(rc == -EINVALIDPARAMS);
rc = liberasurecode_verify_stripe_metadata(desc, frags, -1);
- assert(rc == 1);
+ assert(rc == -EINVALIDPARAMS);
rc = liberasurecode_verify_stripe_metadata(desc, frags, 0);
- assert(rc == 1);
+ assert(rc == -EINVALIDPARAMS);
}
@@ -952,7 +952,7 @@ static void test_verify_stripe_metadata(const ec_backend_id_t be_id,
free(skip);
}
-static void verify_stripe_metadata_mismatch_impl(const ec_backend_id_t be_id, struct ec_args *args,
+static void verify_fragment_metadata_mismatch_impl(const ec_backend_id_t be_id, struct ec_args *args,
fragment_mismatch_scenario_t scenario)
{
int orig_data_size = 1024;
@@ -1002,8 +1002,7 @@ static void verify_stripe_metadata_mismatch_impl(const ec_backend_id_t be_id, st
default:
assert(false);
}
- rc = liberasurecode_verify_stripe_metadata(desc, avail_frags,
- num_avail_frags);
+ rc = is_valid_fragment(desc, avail_frags[i]);
assert(rc == 1);
//heal fragment
switch (scenario) {
@@ -1030,25 +1029,25 @@ static void verify_stripe_metadata_mismatch_impl(const ec_backend_id_t be_id, st
static void test_verify_stripe_metadata_libec_mismatch(
const ec_backend_id_t be_id, struct ec_args *args)
{
- verify_stripe_metadata_mismatch_impl(be_id, args, LIBEC_VERSION_MISMATCH);
+ verify_fragment_metadata_mismatch_impl(be_id, args, LIBEC_VERSION_MISMATCH);
}
static void test_verify_stripe_metadata_magic_mismatch(
const ec_backend_id_t be_id, struct ec_args *args)
{
- verify_stripe_metadata_mismatch_impl(be_id, args, MAGIC_MISMATCH);
+ verify_fragment_metadata_mismatch_impl(be_id, args, MAGIC_MISMATCH);
}
static void test_verify_stripe_metadata_be_id_mismatch(
const ec_backend_id_t be_id, struct ec_args *args)
{
- verify_stripe_metadata_mismatch_impl(be_id, args, BACKEND_ID_MISMATCH);
+ verify_fragment_metadata_mismatch_impl(be_id, args, BACKEND_ID_MISMATCH);
}
static void test_verify_stripe_metadata_be_ver_mismatch(
const ec_backend_id_t be_id, struct ec_args *args)
{
- verify_stripe_metadata_mismatch_impl(be_id, args, BACKEND_VERSION_MISMATCH);
+ verify_fragment_metadata_mismatch_impl(be_id, args, BACKEND_VERSION_MISMATCH);
}