Whamcloud - gitweb
LU-1798 tests: don't set jobid if not changing
authorAndreas Dilger <adilger@whamcloud.com>
Sat, 1 Sep 2012 01:15:42 +0000 (19:15 -0600)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 22 Mar 2013 18:17:29 +0000 (14:17 -0400)
Don't set jobid_var conf_param if the value would not change.  This
avoids setting the same parameter in the config log multiple times,
and avoids the extra delay on each startup waiting for the conf_param
to propagate from the MGS to the client each time.

Fix the console error printing if the jobid_env does not exist.

Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I36ed60451a875bcd46fd0d6f3d7068d1b1398df5
Reviewed-on: http://review.whamcloud.com/3867
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Niu Yawei <yawei.niu@intel.com>
Reviewed-by: Jian Yu <jian.yu@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/tests/sanity.sh
lustre/tests/test-framework.sh

index 3d1df6d..7fc579d 100644 (file)
@@ -10111,6 +10111,13 @@ verify_jobstats() {
        fi
 }
 
+jobstats_set() {
+       trap 0
+       NEW_JOBENV=${1:-$OLD_JOBENV}
+       do_facet mgs $LCTL conf_param $FSNAME.sys.jobid_var=$NEW_JOBENV
+       wait_update $HOSTNAME "$LCTL get_param -n jobid_var" $NEW_JOBENV
+}
+
 test_205() { # Job stats
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
        [ -z "$(lctl get_param -n mdc.*.connect_flags | grep jobstats)" ] &&
@@ -10119,9 +10126,8 @@ test_205() { # Job stats
        local cmd
        OLD_JOBENV=`$LCTL get_param -n jobid_var`
        if [ $OLD_JOBENV != $JOBENV ]; then
-               do_facet mgs $LCTL conf_param $FSNAME.sys.jobid_var=$JOBENV
-               wait_update $HOSTNAME "$LCTL get_param -n jobid_var" \
-                       $JOBENV || return 1
+               jobstats_set $JOBENV
+               trap jobstats_set EXIT
        fi
 
        # mkdir
@@ -10158,11 +10164,7 @@ test_205() { # Job stats
        # cleanup
        rm -f $DIR/jobstats_test_rename
 
-       if [ $OLD_JOBENV != $JOBENV ]; then
-               do_facet mgs $LCTL conf_param $FSNAME.sys.jobid_var=$OLD_JOBENV
-               wait_update $HOSTNAME "$LCTL get_param -n jobid_var" \
-                       $OLD_JOBENV || return 1
-       fi
+       [ $OLD_JOBENV != $JOBENV ] && jobstats_set $OLD_JOBENV
 }
 run_test 205 "Verify job stats"
 
index 3463327..4e7ddc0 100644 (file)
@@ -15,8 +15,8 @@ export GSS_KRB5=false
 export GSS_PIPEFS=false
 export IDENTITY_UPCALL=default
 export QUOTA_AUTO=1
-export JOBSTATS_AUTO=${JOBSTATS_AUTO:-1}
-export JOBID_VAR=${JOBID_VAR:-"procname_uid"}
+# specify environment variable containing batch job name for server statistics
+export JOBID_VAR=${JOBID_VAR:-"procname_uid"}  # or "existing" or "disable"
 
 # LOAD_LLOOP: LU-409: only load llite_lloop module if kernel < 2.6.32 or
 #             LOAD_LLOOP is true. LOAD_LLOOP is false by default.
@@ -3246,26 +3246,20 @@ init_param_vars () {
        osc_ensure_active $SINGLEMDS $TIMEOUT
        osc_ensure_active client $TIMEOUT
 
-       local jobid_var
-       if [ -z "$(lctl get_param -n mdc.*.connect_flags | grep jobstats)" ]; then
-               jobid_var="none"
-       elif [ $JOBSTATS_AUTO -ne 0 ]; then
-               echo "enable jobstats, set job scheduler as $JOBID_VAR"
-               jobid_var=$JOBID_VAR
-       else
-               jobid_var=`$LCTL get_param -n jobid_var`
-               if [ $jobid_var != "disable" ]; then
-                       echo "disable jobstats as required"
-                       jobid_var="disable"
-               else
-                       jobid_var="none"
-               fi
-       fi
+       if [ -n "$(lctl get_param -n mdc.*.connect_flags|grep jobstats)" ]; then
+               local current_jobid_var=$($LCTL get_param -n jobid_var)
 
-       if [ $jobid_var == $JOBID_VAR -o $jobid_var == "disable" ]; then
-               do_facet mgs $LCTL conf_param $FSNAME.sys.jobid_var=$jobid_var
-               wait_update $HOSTNAME "$LCTL get_param -n jobid_var" \
-                       $jobid_var || return 1
+               if [ $JOBID_VAR = "existing" ]; then
+                       echo "keeping jobstats as $current_jobid_var"
+               elif [ $current_jobid_var != $JOBID_VAR ]; then
+                       echo "seting jobstats to $JOBID_VAR"
+
+                       set_conf_param_and_check $HOSTNAME              \
+                               "$LCTL get_param -n jobid_var"          \
+                               "$FSNAME.sys.jobid_var" $JOBID_VAR
+               fi
+       else
+               echo "jobstats not supported by server"
        fi
 
        if [ $QUOTA_AUTO -ne 0 ]; then