aboutsummaryrefslogtreecommitdiff
path: root/scripts/test_bin-archive.sh
blob: 0506102ab557a82f298b319c95fc4bdaa9e42984 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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-pack"
fi
if [ -z "$UNPACKER" ]; then
    UNPACKER="../src/proone-unpack"
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"
if [ $? -ne 0 ]; then
    exit 2;
fi

"$UNPACKER" "$BIN_UNPACK_DIR/$BIN_PREFIX" < "$TEST_DIR/$BIN_ARCHIVE_PREFIX"
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" | awk '{print $1;}') >> "$SIZE_LOG"

exit 0