export PATH=$PWD/$SRCDIR:$SRCDIR:$PWD/$SRCDIR/../utils:$PATH:/sbin
ONLY=${ONLY:-"$*"}
-[ -n "$ONLY" ] && SLOW=yes
ALWAYS_EXCEPT="$LRSYNC_EXCEPT"
# bug number for skipped test:
# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
-[ "$ALWAYS_EXCEPT$EXCEPT" ] && \
- echo "Skipping tests: `echo $ALWAYS_EXCEPT $EXCEPT`"
+[ "$SLOW" = "no" ] && EXCEPT_SLOW=""
+
+[ "$ALWAYS_EXCEPT$EXCEPT" ] &&
+ echo "Skipping tests: `echo $ALWAYS_EXCEPT $EXCEPT`"
KILL=/bin/kill
DBENCH_TIME=${DBENCH_TIME:-60} # No of seconds to run dbench
TGT=$TMP/target
TGT2=$TMP/target2
-MDT0=$($LCTL get_param -n mdc.*.mds_server_uuid | \
- awk '{gsub(/_UUID/,""); print $1}' | head -1)
+MDT0=$($LCTL get_param -n mdc.*.mds_server_uuid |
+ awk '{ gsub(/_UUID/,""); print $1 }' | head -n1)
init_changelog() {
CL_USER=$(do_facet $SINGLEMDS lctl --device $MDT0 changelog_register -n)
}
run_test 1 "Simple Replication"
+# Test 1a - test create/delete operations in ROOT directory
+test_1a() { # LU-5005
+ rm -rf $TGT/root-* 2> /dev/null
+ rm -rf $DIR/root-* 2> /dev/null
+ init_changelog
+
+ # Directory create
+ mkdir $DIR/root-dir
+
+ # File create
+ touch $DIR/root-file
+ touch $DIR/root-file2
+
+ # File rename
+ mv $DIR/root-file2 $DIR/root-file3
+
+ # File and directory delete
+ touch $DIR/root-file4
+ mkdir $DIR/root-dir1
+ rm $DIR/root-file4
+ rm -rf $DIR/root-dir1
+
+ # Replicate
+ local LRSYNC_LOG=$(generate_logname "lrsync_log")
+ echo "Replication"
+ $LRSYNC -s $DIR -t $TGT -m $MDT0 -u $CL_USER -l $LREPL_LOG \
+ -D $LRSYNC_LOG
+
+ # Verify
+ stat $TGT/root-dir || error "Dir create not replicated"
+ stat $TGT/root-file || error "File create not replicated"
+ stat $TGT/root-file2 && error "Rename not replicated (src)"
+ stat $TGT/root-file3 || error "Rename not replicated (tgt)"
+ stat $TGT/root-dir1 && error "Dir delete not replicated"
+ stat $TGT/root-file4 && error "File delete not replicated"
+
+ fini_changelog
+ rm -fr $TGT/root-*
+ rm -fr $DIR/root-*
+ return 0
+}
+run_test 1a "Replicate create/delete operations in ROOT directory"
+
# Test 2a - Replicate files created by dbench
test_2a() {
- [ "$SLOW" = "no" ] && skip "Skipping slow test" && return
- init_src
- init_changelog
+ init_src
+ init_changelog
- # Run dbench
- sh rundbench -C -D $DIR/$tdir 2 -t $DBENCH_TIME || error "dbench failed!"
+ # Run dbench
+ sh rundbench -C -D $DIR/$tdir 2 -t $DBENCH_TIME || error "dbench failed"
local LRSYNC_LOG=$(generate_logname "lrsync_log")
# Replicate the changes to $TGT
check_diff $DIR/$tdir $TGT/$tdir
check_diff $DIR/$tdir $TGT2/$tdir
- fini_changelog
- cleanup_src_tgt
- return 0
+ fini_changelog
+ cleanup_src_tgt
+ return 0
}
run_test 2a "Replicate files created by dbench."
# Test 2b - Replicate files changed by dbench.
test_2b() {
- [ "$SLOW" = "no" ] && skip "Skipping slow test" && return
+ local child_pid
+ init_src
+ init_changelog
- init_src
- init_changelog
+ # Run dbench
+ sh rundbench -C -D $DIR/$tdir 2 -t $DBENCH_TIME &
+ # wait for dbench to start
+ wait_for_function 'child_pid=$(pgrep dbench)' 360
+ # let dbench run for a bit
+ sleep 10
- # Run dbench
- sh rundbench -C -D $DIR/$tdir 2 -t $DBENCH_TIME &
- sleep 20
-
- local child_pid=$(pgrep dbench)
- echo PIDs: $child_pid
- echo Stopping dbench
- $KILL -SIGSTOP $child_pid
+ echo PIDs: $child_pid
+ echo Stopping dbench
+ $KILL -SIGSTOP $child_pid
local LRSYNC_LOG=$(generate_logname "lrsync_log")
echo Starting replication
# Test 2c - Replicate files while dbench is running
test_2c() {
- [ "$SLOW" = "no" ] && skip "Skipping slow test" && return
- init_src
- init_changelog
+ init_src
+ init_changelog
- # Run dbench
- sh rundbench -C -D $DIR/$tdir 2 -t $DBENCH_TIME &
+ # Run dbench
+ sh rundbench -C -D $DIR/$tdir 2 -t $DBENCH_TIME &
local LRSYNC_LOG=$(generate_logname "lrsync_log")
# Replicate the changes to $TGT
check_diff $DIR/$tdir $TGT/$tdir
check_diff $DIR/$tdir $TGT2/$tdir
- fini_changelog
- cleanup_src_tgt
- return 0
+ fini_changelog
+ cleanup_src_tgt
+ return 0
}
run_test 2c "Replicate files while dbench is running."
# Test 3a - Replicate files created by createmany
test_3a() {
- [ "$SLOW" = "no" ] && skip "Skipping slow test" && return
+ init_src
+ init_changelog
- init_src
- init_changelog
-
- local numfiles=1000
- createmany -o $DIR/$tdir/$tfile $numfiles || error "createmany failed!"
+ local numfiles=1000
+ createmany -o $DIR/$tdir/$tfile $numfiles || error "createmany failed"
local LRSYNC_LOG=$(generate_logname "lrsync_log")
# Replicate the changes to $TGT
check_diff $DIR/$tdir $TGT/$tdir
check_diff $DIR/$tdir $TGT2/$tdir
- fini_changelog
- cleanup_src_tgt
- return 0
+ fini_changelog
+ cleanup_src_tgt
+ return 0
}
run_test 3a "Replicate files created by createmany"
# Test 3b - Replicate files created by writemany
test_3b() {
- [ "$SLOW" = "no" ] && skip "Skipping slow test" && return
+ init_src
+ init_changelog
- init_src
- init_changelog
-
- local time=60
- local threads=5
- writemany -q -a $DIR/$tdir/$tfile $time $threads || error "writemany failed!"
+ local time=60
+ local threads=5
+ writemany -q -a $DIR/$tdir/$tfile $time $threads ||
+ error "writemany failed"
local LRSYNC_LOG=$(generate_logname "lrsync_log")
# Replicate the changes to $TGT
check_diff $DIR/$tdir $TGT/$tdir
check_diff $DIR/$tdir $TGT2/$tdir
- fini_changelog
- cleanup_src_tgt
- return 0
+ fini_changelog
+ cleanup_src_tgt
+ return 0
}
run_test 3b "Replicate files created by writemany"
# Test 3c - Replicate files created by createmany/unlinkmany
test_3c() {
- [ "$SLOW" = "no" ] && skip "Skipping slow test" && return
-
- init_src
- init_changelog
+ init_src
+ init_changelog
- local numfiles=1000
- createmany -o $DIR/$tdir/$tfile $numfiles || error "createmany failed!"
- unlinkmany $DIR/$tdir/$tfile $numfiles || error "unlinkmany failed!"
+ local numfiles=1000
+ createmany -o $DIR/$tdir/$tfile $numfiles || error "createmany failed"
+ unlinkmany $DIR/$tdir/$tfile $numfiles || error "unlinkmany failed"
local LRSYNC_LOG=$(generate_logname "lrsync_log")
# Replicate the changes to $TGT
check_diff $DIR/$tdir $TGT/$tdir
check_diff $DIR/$tdir $TGT2/$tdir
- fini_changelog
- cleanup_src_tgt
- return 0
+ fini_changelog
+ cleanup_src_tgt
+ return 0
}
run_test 3c "Replicate files created by createmany/unlinkmany"
# Test 4 - Replicate files created by iozone
test_4() {
- [ "$SLOW" = "no" ] && skip "Skipping slow test" && return
-
which iozone > /dev/null 2>&1
if [ $? -ne 0 ]; then
skip "iozone not found. Skipping test"
# Test 5a - Stop / start lustre_rsync
test_5a() {
- [ "$SLOW" = "no" ] && skip "Skipping slow test" && return
-
- init_src
- init_changelog
+ init_src
+ init_changelog
- NUMTEST=2000
- createmany -o $DIR/$tdir/$tfile $NUMTEST
+ NUMTEST=2000
+ createmany -o $DIR/$tdir/$tfile $NUMTEST
# Replicate the changes to $TGT
local LRSYNC_LOG=$(generate_logname "lrsync_log")
check_diff $DIR/$tdir $TGT/$tdir
check_diff $DIR/$tdir $TGT2/$tdir
- fini_changelog
- cleanup_src_tgt
- return 0
+ fini_changelog
+ cleanup_src_tgt
+ return 0
}
run_test 5a "Stop / start lustre_rsync"
# Test 5b - Kill / restart lustre_rsync
test_5b() {
- [ "$SLOW" = "no" ] && skip "Skipping slow test" && return
+ init_src
+ init_changelog
- init_src
- init_changelog
-
- NUMTEST=2000
- createmany -o $DIR/$tdir/$tfile $NUMTEST
+ NUMTEST=2000
+ createmany -o $DIR/$tdir/$tfile $NUMTEST
# Replicate the changes to $TGT
local LRSYNC_LOG=$(generate_logname "lrsync_log")
check_diff $DIR/$tdir $TGT/$tdir
check_diff $DIR/$tdir $TGT2/$tdir
- fini_changelog
- cleanup_src_tgt
- return 0
+ fini_changelog
+ cleanup_src_tgt
+ return 0
}
run_test 5b "Kill / restart lustre_rsync"