This repository has been archived by the owner on Jun 7, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #208 from darrenldl/dev
Coverage test suite update
- Loading branch information
Showing
4 changed files
with
227 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
#!/bin/bash | ||
|
||
source kcov_blkar_fun.sh | ||
|
||
exit_code=0 | ||
|
||
VERSIONS=(17) | ||
|
||
source functions.sh | ||
|
||
file_size=$(ls -l dummy | awk '{ print $5 }') | ||
|
||
# generate test data | ||
dd if=/dev/urandom of=dummy bs=$file_size count=1 &>/dev/null | ||
|
||
for ver in ${VERSIONS[*]}; do | ||
for (( i=0; i < 1; i++ )); do | ||
if [[ $ver == 17 ]]; then | ||
data_shards=$((1 + RANDOM % 128)) | ||
parity_shards=$((1 + RANDOM % 128)) | ||
burst=$((1 + RANDOM % 10)) | ||
elif [[ $ver == 18 ]]; then | ||
data_shards=$((1 + RANDOM % 128)) | ||
parity_shards=$((1 + RANDOM % 128)) | ||
burst=$((1 + RANDOM % 10)) | ||
else | ||
data_shards=$((1 + RANDOM % 128)) | ||
parity_shards=$((1 + RANDOM % 128)) | ||
burst=$((1 + RANDOM % 10)) | ||
fi | ||
|
||
container_name=burst_$data_shards\_$parity_shards\_$burst\_$ver.sbx | ||
|
||
echo -n "Encoding" | ||
output=$(./../blkar encode --json --sbx-version $ver -f dummy $container_name \ | ||
--hash sha1 \ | ||
--rs-data $data_shards --rs-parity $parity_shards \ | ||
--burst $burst) | ||
if [[ $(echo $output | jq -r ".error") != null ]]; then | ||
echo " ==> Invalid JSON" | ||
exit_code=1 | ||
fi | ||
if [[ $(echo $output | jq -r ".stats.sbxVersion") == "$ver" ]]; then | ||
echo -n " ==> Okay" | ||
else | ||
echo -n " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
if [[ $(echo $output | jq -r ".stats.hash" | awk '{ print $1 }') == "SHA1" ]]; then | ||
echo " ==> Okay" | ||
else | ||
echo " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
|
||
echo -n "Checking burst error resistance level" | ||
output=$(./../blkar show --json --guess-burst $container_name) | ||
if [[ $(echo $output | jq -r ".error") != null ]]; then | ||
echo " ==> Invalid JSON" | ||
exit_code=1 | ||
fi | ||
if [[ $(echo $output | jq -r ".bestGuessForBurstErrorResistanceLevel") == $burst ]]; then | ||
echo " ==> Okay" | ||
else | ||
echo " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
|
||
if [[ $ver == 17 ]]; then | ||
block_size=512 | ||
elif [[ $ver == 18 ]]; then | ||
block_size=128 | ||
else | ||
block_size=4096 | ||
fi | ||
|
||
echo "Corrupting at $parity_shards random positions, burst error size is $burst" | ||
for (( p=0; p < $parity_shards; p++ )); do | ||
pos=$(( (RANDOM % $file_size) / $block_size )) | ||
# echo "#$p corruption, corrupting byte at position : $pos" | ||
corrupt $pos $block_size $burst $container_name | ||
done | ||
|
||
echo -n "Repairing" | ||
output=$(./../blkar repair --json --verbose $container_name) | ||
if [[ $(echo $output | jq -r ".error") != null ]]; then | ||
echo " ==> Invalid JSON" | ||
exit_code=1 | ||
fi | ||
if [[ $(echo $output | jq -r ".stats.sbxVersion") == "$ver" ]]; then | ||
echo " ==> Okay" | ||
else | ||
echo " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
|
||
output_name=dummy_$data_shards\_$parity_shards | ||
|
||
echo -n "Decoding" | ||
output=$(./../blkar decode --json -f $container_name - 2>&1 > $output_name) | ||
if [[ $(echo $output | jq -r ".error") != null ]]; then | ||
echo " ==> Invalid JSON" | ||
exit_code=1 | ||
fi | ||
if [[ $(echo $output | jq -r ".stats.sbxVersion") == "$ver" ]]; then | ||
echo " ==> Okay" | ||
else | ||
echo " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
|
||
echo -n "Comparing decoded data to original" | ||
cmp dummy $output_name | ||
if [[ $? == 0 ]]; then | ||
echo " ==> Okay" | ||
else | ||
echo " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
done | ||
done | ||
|
||
echo $exit_code > exit_code |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
#!/bin/bash | ||
|
||
source kcov_blkar_fun.sh | ||
|
||
exit_code=0 | ||
|
||
VERSIONS=(17) | ||
|
||
source functions.sh | ||
|
||
file_size=$(ls -l dummy | awk '{ print $5 }') | ||
|
||
# generate test data | ||
dd if=/dev/urandom of=dummy bs=$file_size count=1 &>/dev/null | ||
|
||
for ver in ${VERSIONS[*]}; do | ||
for (( i=0; i < 1; i++ )); do | ||
if [[ $ver == 17 ]]; then | ||
data_shards=$((1 + RANDOM % 128)) | ||
parity_shards=$((1 + RANDOM % 128)) | ||
elif [[ $ver == 18 ]]; then | ||
data_shards=$((1 + RANDOM % 128)) | ||
parity_shards=$((1 + RANDOM % 128)) | ||
else | ||
data_shards=$((1 + RANDOM % 128)) | ||
parity_shards=$((1 + RANDOM % 128)) | ||
fi | ||
|
||
container_name=corrupt_$data_shards\_$parity_shards\_$ver.sbx | ||
|
||
echo -n "Encoding in version $ver, data = $data_shards, parity = $parity_shards" | ||
output=$(./../blkar encode --json --sbx-version $ver -f dummy $container_name \ | ||
--hash sha1 \ | ||
--rs-data $data_shards --rs-parity $parity_shards) | ||
if [[ $(echo $output | jq -r ".error") != null ]]; then | ||
echo " ==> Invalid JSON" | ||
exit_code=1 | ||
fi | ||
if [[ $(echo $output | jq -r ".stats.sbxVersion") == "$ver" ]]; then | ||
echo -n " ==> Okay" | ||
else | ||
echo -n " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
if [[ $(echo $output | jq -r ".stats.hash" | awk '{ print $1 }') == "SHA1" ]]; then | ||
echo " ==> Okay" | ||
else | ||
echo " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
|
||
echo "Corrupting at $parity_shards random positions" | ||
for (( p=0; p < $parity_shards; p++ )); do | ||
pos=$((RANDOM % $file_size)) | ||
# echo "#$p corruption, corrupting byte at position : $pos" | ||
corrupt $pos $container_name | ||
done | ||
|
||
echo -n "Repairing" | ||
output=$(./../blkar repair --json --verbose $container_name) | ||
if [[ $(echo $output | jq -r ".error") != null ]]; then | ||
echo " ==> Invalid JSON" | ||
exit_code=1 | ||
fi | ||
if [[ $(echo $output | jq -r ".stats.sbxVersion") == "$ver" ]]; then | ||
echo " ==> Okay" | ||
else | ||
echo " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
|
||
output_name=dummy_$data_shards\_$parity_shards | ||
|
||
echo -n "Decoding" | ||
output=$(./../blkar decode --json -f $container_name - 2>&1 > $output_name) | ||
if [[ $(echo $output | jq -r ".error") != null ]]; then | ||
echo " ==> Invalid JSON" | ||
exit_code=1 | ||
fi | ||
if [[ $(echo $output | jq -r ".stats.sbxVersion") == "$ver" ]]; then | ||
echo " ==> Okay" | ||
else | ||
echo " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
|
||
echo -n "Comparing decoded data to original" | ||
cmp dummy $output_name | ||
if [[ $? == 0 ]]; then | ||
echo " ==> Okay" | ||
else | ||
echo " ==> NOT okay" | ||
exit_code=1 | ||
fi | ||
done | ||
done | ||
|
||
echo $exit_code > exit_code |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters