Whamcloud - gitweb
LU-4499 nrs: adjust the order of REQ NRS initilization
[fs/lustre-release.git] / lustre / tests / lustre-rsync-test.sh
index 49918ae..b091763 100644 (file)
@@ -12,13 +12,14 @@ SRCDIR=`dirname $0`
 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
 
@@ -48,8 +49,8 @@ export LRSYNC="$LRSYNC -v -c no -d 2"
 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)
@@ -206,14 +207,56 @@ test_1() {
 }
 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
@@ -224,28 +267,29 @@ test_2a() {
        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
@@ -283,12 +327,11 @@ run_test 2b "Replicate files changed by dbench."
 
 # 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
@@ -310,21 +353,19 @@ test_2c() {
        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
@@ -333,23 +374,22 @@ test_3a() {
        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
@@ -359,22 +399,20 @@ test_3b() {
        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
@@ -383,16 +421,14 @@ test_3c() {
        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"
@@ -444,13 +480,11 @@ run_test 4 "Replicate files created by iozone"
 
 # 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")
@@ -465,21 +499,19 @@ test_5a() {
        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")
@@ -494,9 +526,9 @@ test_5b() {
        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"
 
@@ -627,6 +659,6 @@ test_9() {
 run_test 9 "Replicate recursive directory removal"
 
 cd $ORIG_PWD
-complete $(basename $0) $SECONDS
+complete $SECONDS
 check_and_cleanup_lustre
 exit_status