95 lines
3.1 KiB
Bash
Executable File
95 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
|
|
# All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are met:
|
|
#
|
|
# Redistributions of source code must retain the above copyright notice, this
|
|
# list of conditions and the following disclaimer.
|
|
#
|
|
# Redistributions in binary form must reproduce the above copyright notice, this
|
|
# list of conditions and the following disclaimer in the documentation and/or
|
|
# other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
|
|
# THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
# EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
|
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
FILE_DIR=./test_files
|
|
DECODED_DIR=./decoded_files
|
|
FRAGMENT_DIR=./test_fragments
|
|
FILES=`echo ${FILE_DIR}`
|
|
TOOLS_DIR=../tools
|
|
|
|
if [ ! -d ${DECODED_DIR} ]; then
|
|
mkdir ${DECODED_DIR}
|
|
fi
|
|
|
|
if [ ! -d ${FRAGMENT_DIR} ]; then
|
|
mkdir ${FRAGMENT_DIR}
|
|
fi
|
|
|
|
TYPES="
|
|
jerasure_rs_vand
|
|
jerasure_rs_cauchy
|
|
flat_xor_hd_3
|
|
flat_xor_hd_4
|
|
isa_l_rs_vand
|
|
liberasurecode_rs_vand
|
|
"
|
|
NUM_DATAS="10 11 12"
|
|
RS_NUM_PARITIES="2 3 4"
|
|
XOR_NUM_PARITIES="6"
|
|
|
|
# Weird stuff happens when we try to rebuild and
|
|
# are beyond the FT of the code... Make it fail
|
|
# gracefully
|
|
|
|
for TYPE in ${TYPES}; do
|
|
for NUM_DATA in ${NUM_DATAS}; do
|
|
rm ${DECODED_DIR}/*
|
|
rm ${FRAGMENT_DIR}/*
|
|
NUM_PARITIES=${RS_NUM_PARITIES}
|
|
if [[ ${TYPE} == "flat_xor_hd"* ]]; then
|
|
NUM_PARITIES=${XOR_NUM_PARITIES}
|
|
fi
|
|
for NUM_PARITY in ${NUM_PARITIES}; do
|
|
let NUM_TOTAL=$(( NUM_DATA + NUM_PARITY))
|
|
FAULT_TOL=${NUM_PARITY}
|
|
if [[ ${TYPE} == "flat_xor_hd"* ]]; then
|
|
FAULT_TOL="2"
|
|
fi
|
|
for file in `cd ${FILES}; echo *; cd ..`; do
|
|
python ${TOOLS_DIR}/pyeclib_encode.py ${NUM_DATA} ${NUM_PARITY} ${TYPE} ${FILE_DIR} ${file} ${FRAGMENT_DIR}
|
|
done
|
|
|
|
for file in `cd ${FILES}; echo *; cd ..`; do
|
|
fragments=( `echo ${FRAGMENT_DIR}/${file}.*` )
|
|
let i=0
|
|
while (( $i < ${FAULT_TOL} )); do
|
|
index=$(( RANDOM % NUM_TOTAL ))
|
|
fragments[${index}]=""
|
|
let i=$i+1
|
|
done
|
|
python ${TOOLS_DIR}/pyeclib_decode.py ${NUM_DATA} ${NUM_PARITY} ${TYPE} ${fragments[*]} ${DECODED_DIR}/${file}
|
|
diff ${FILE_DIR}/${file} ${DECODED_DIR}/${file}.decoded
|
|
if [[ $? != 0 ]]; then
|
|
echo "${FILE_DIR}/${file} != ${DECODED_DIR}/${file}.decoded"
|
|
exit 1
|
|
fi
|
|
done
|
|
done
|
|
done
|
|
done
|
|
|
|
rm ${DECODED_DIR}/*
|
|
rm ${FRAGMENT_DIR}/*
|