Reduce execution time of bug-1559004-EMLINK-handling.t

This patch reduces the execution time of bug-1559004-EMLINK-handling.t
from ~14 minutes to ~90 seconds. To do so, it creates some fake hard
links directly on the brick instead of creating them through the
volume.

Change-Id: I9715ff1a4eba47574c733d4f28e68f42f56a7d3f
updates: bz#1193929
Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
This commit is contained in:
Xavi Hernandez 2018-10-04 10:31:45 +02:00
parent 83a89296a3
commit dbafe63ea5

View File

@ -4,9 +4,39 @@
. $(dirname $0)/../../volume.rc
. $(dirname $0)/../../afr.rc
function create_fake_links() {
local dst="$1"
local dir="$2"
local end=0
local start=0
local src
src="$(ls ${dst}/.glusterfs/indices/${dir}/${dir}-* | head -1)"
mkdir -p ${dst}/.glusterfs/dummy/${dir}
while ln ${src} ${dst}/.glusterfs/dummy/${dir}/link-${end}; do
end="$((${end} + 1))"
done
if [[ ${end} -gt 50 ]]; then
start="$((${end} - 50))"
fi
if [[ ${end} -gt 0 ]]; then
end="$((${end} - 1))"
fi
for i in $(seq ${start} ${end}); do
rm -f ${dst}/.glusterfs/dummy/${dir}/link-${i}
done
}
function count_fake_links() {
local dst="$1"
local dir="$2"
echo "$(find ${dst}/.glusterfs/dummy/${dir}/ -name "link-*" | wc -l)"
}
cleanup
TESTS_EXPECTED_IN_LOOP=30
SCRIPT_TIMEOUT=1800
TEST glusterd
TEST pidof glusterd
@ -32,21 +62,30 @@ TEST mount -t ext4 -o loop $B0/ext4-3 $B0/ext43
TEST $CLI volume create $V0 replica 3 $H0:$B0/ext4{1,2,3}
TEST $CLI volume start $V0
TEST $CLI volume heal $V0 granular-entry-heal enable
TEST $GFS --volfile-id=$V0 --volfile-server=$H0 $M0;
TEST $GFS --volfile-id=$V0 --volfile-server=$H0 $M0
TEST kill_brick $V0 $H0 $B0/ext41
for i in {1..15}
do
TEST_IN_LOOP mkdir $M0/d${i}
TEST_IN_LOOP touch $M0/d${i}/{1..5000}
done
# Make sure indices exist and are initialized
TEST touch $M0/dummy
# Create enough hard links on bricks to make it fail faster. This is much
# faster than creating ~70000 files on a volume.
create_fake_links $B0/ext42 xattrop &
create_fake_links $B0/ext42 entry-changes &
wait
count_xattrop="$(count_fake_links $B0/ext42 xattrop)"
count_entry="$(count_fake_links $B0/ext42 entry-changes)"
TEST mkdir $M0/d{1..10}
TEST touch $M0/d{1..10}/{1..10}
#On ext4 max number of hardlinks is ~65k, so there should be 2 base index files
EXPECT "^2$" echo $(ls $B0/ext42/.glusterfs/indices/xattrop | grep xattrop | wc -l)
EXPECT "^2$" echo $(ls $B0/ext42/.glusterfs/indices/entry-changes | grep entry-changes | wc -l)
#Number of hardlinks: 75000 for files, 15 for dirs and 2 for base-indices
#and root-dir for xattrop
EXPECT "75018" echo $(ls -l $B0/ext42/.glusterfs/indices/xattrop | grep xattrop | awk '{sum+=$2} END{print sum}')
EXPECT "75017" echo $(ls -l $B0/ext42/.glusterfs/indices/entry-changes | grep entry-changes | awk '{sum+=$2} END{print sum}')
#Number of hardlinks: count_xattrop/count_entry for fake links, 101 for files,
# 10 for dirs and 2 for base-indices and root-dir for xattrop
EXPECT "$((${count_xattrop} + 114))" echo $(ls -l $B0/ext42/.glusterfs/indices/xattrop | grep xattrop | awk '{sum+=$2} END{print sum}')
EXPECT "$((${count_entry} + 113))" echo $(ls -l $B0/ext42/.glusterfs/indices/entry-changes | grep entry-changes | awk '{sum+=$2} END{print sum}')
cleanup