aboutsummaryrefslogtreecommitdiff
path: root/scripts/test_bin-archive.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/test_bin-archive.sh')
-rwxr-xr-xscripts/test_bin-archive.sh63
1 files changed, 63 insertions, 0 deletions
diff --git a/scripts/test_bin-archive.sh b/scripts/test_bin-archive.sh
new file mode 100755
index 0000000..c4e1d93
--- /dev/null
+++ b/scripts/test_bin-archive.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+RND_BLOCK_SIZE=4096
+if [ -z "$RND_BIN_CNT_MIN" ]; then
+ RND_BIN_CNT_MIN=1
+fi
+if [ -z "$RND_BIN_CNT_MAX" ]; then
+ RND_BIN_CNT_MAX=20
+fi
+TEST_DIR="pack_test"
+BIN_PACK_DIR="$TEST_DIR/pack"
+BIN_UNPACK_DIR="$TEST_DIR/unpack"
+BIN_PREFIX="bin"
+BIN_ARCHIVE_PREFIX="bin_archive"
+SIZE_LOG="pack_test-size.log"
+if [ -z "$LISTARCH" ]; then
+ LISTARCH="../src/proone-list-arch"
+fi
+if [ -z "$PACKER" ]; then
+ PACKER="../src/proone-packer"
+fi
+if [ -z "$UNPACKER" ]; then
+ UNPACKER="../src/proone-unpacker"
+fi
+ARCH_ARR=(`"$LISTARCH"`)
+
+if [ -d "$TEST_DIR" ]; then
+ rm -rf "$TEST_DIR/"*
+else
+ mkdir "$TEST_DIR"
+fi
+mkdir "$BIN_PACK_DIR" "$BIN_UNPACK_DIR"
+if [ $? -ne 0 ]; then
+ exit 2
+fi
+
+for arch in ${ARCH_ARR[@]}; do
+ bin_block_cnt="$(shuf -n1 -i $RND_BIN_CNT_MIN-$RND_BIN_CNT_MAX)" &&\
+ dd if=/dev/random of="$BIN_PACK_DIR/$BIN_PREFIX.$arch" iflag=fullblock bs=$RND_BLOCK_SIZE count=$bin_block_cnt
+ if [ $? -ne 0 ]; then
+ exit 2
+ fi
+done
+
+"$PACKER" "$BIN_PACK_DIR/$BIN_PREFIX."* | pigz -z - | base64 > "$TEST_DIR/$BIN_ARCHIVE_PREFIX.zz.b64"
+if [ $? -ne 0 ]; then
+ exit 2;
+fi
+
+"$UNPACKER" "$BIN_UNPACK_DIR/$BIN_PREFIX" < "$TEST_DIR/$BIN_ARCHIVE_PREFIX.zz.b64"
+if [ $? -ne 0 ]; then
+ exit 2;
+fi
+
+for arch in ${ARCH_ARR[@]}; do
+ diff -q "$BIN_PACK_DIR/$BIN_PREFIX.$arch" "$BIN_UNPACK_DIR/$BIN_PREFIX.$arch"
+ if [ $? -ne 0 ]; then
+ exit 2;
+ fi
+done
+
+echo $(du -bs "$BIN_PACK_DIR" | awk '{print $1;}') $(wc -c "$TEST_DIR/$BIN_ARCHIVE_PREFIX.zz.b64" | awk '{print $1;}') >> "$SIZE_LOG"
+
+exit 0