Enhanced & Modified cpu_consolidation testcase: We can pass additional argument performance to use the same testcase for Performance test. Fixed issues in cpu consolidation test. Signed-off-by: poornima nayak <mpnayak@linux.vnet.ibm.com>.
diff --git a/testcases/kernel/power_management/cpu_consolidation.py b/testcases/kernel/power_management/cpu_consolidation.py
index b305fea..c23a751 100755
--- a/testcases/kernel/power_management/cpu_consolidation.py
+++ b/testcases/kernel/power_management/cpu_consolidation.py
@@ -34,40 +34,37 @@
         default="ebizzy", help="Workload can be ebizzy/kernbench")
     parser.add_option("-s", "--stress", dest="stress",
         default="partial", help="Load on system is full/partial [i.e 50%]/thread")
+    parser.add_option("-p", "--performance", dest="perf_test",
+        default=False, action="store_true", help="Enable performance test")
     (options, args) = parser.parse_args()
 
     try:
         count_num_cpu()
         count_num_sockets()
-        # User would set option -v / -vc / -vt to test cpu consolidation
-        # gets disabled when sched_mc &(/) sched_smt is disabled when
-        # workload is already running in the system 
+        if is_hyper_threaded():
+            generate_sibling_list()
+        
+        # User should set option -v to test cpu consolidation
+        # resets when sched_mc &(/) sched_smt is disabled when
+        # workload is already running in the system
+ 
         if options.vary_mc_smt:
 
             # Since same code is used for testing package consolidation and core
             # consolidation is_multi_socket & is_hyper_threaded check is done
-            if is_multi_socket():
-                if options.mc_value:
-                    set_sched_mc_power(options.mc_value)
-                    mc_value=int(options.mc_value)
-                else:    
-                    set_sched_mc_power(1)
-                    mc_value=int(options.mc_value)
-            if is_hyper_threaded():
-                if options.smt_value:
-                    set_sched_smt_power(options.smt_value)
-                    smt_value=int(options.smt_value)
-                else:
-                    set_sched_smt_power(1)
-                    smt_value=1
+            if is_multi_socket() and is_multi_core() and options.mc_value:
+                set_sched_mc_power(options.mc_value)
+
+            if is_hyper_threaded() and options.smt_value:
+                set_sched_smt_power(options.smt_value)
 
             #Generate arguments for trigger workload, run workload in background
             map_cpuid_pkgid()
             background="yes"
             duration=360
             pinned="no"
-            if int(options.mc_value) < 2:
-                trigger_ebizzy (smt_value, "partial", duration, background, pinned)
+            if int(options.mc_value) < 2 and int(options.smt_value) < 2:
+                trigger_ebizzy (options.smt_value, "partial", duration, background, pinned)
                 work_ld="ebizzy"
                 #Wait for 120 seconds and then validate cpu consolidation works
                 #When sched_mc & sched_smt is set
@@ -76,27 +73,36 @@
             else:
                 #Wait for 120 seconds and then validate cpu consolidation works
                 #When sched_mc & sched_smt is set
-                trigger_kernbench (smt_value, "partial", background, pinned) 
+                trigger_kernbench (options.smt_value, "partial", background, pinned, "no") 
                 work_ld="kernbench"
                 import time
-                time.sleep(240)
+                time.sleep(300)
 
             generate_report()
-            status = validate_cpu_consolidation(work_ld, mc_value, smt_value)
+            status = validate_cpu_consolidation("partial", work_ld, options.mc_value, options.smt_value)
             if status == 0:
                 print "INFO: Consolidation worked sched_smt &(/) sched_mc is set"
                 #Disable sched_smt & sched_mc interface values
-                if (options.vary_mc_smt and options.mc_value) and is_multi_socket():
+                if options.vary_mc_smt and options.mc_value > 0:
                     set_sched_mc_power(0)
-                    #Reset sched_smt bcoz when sched_smt is set process still
-                    #continue to consolidate
-                    if is_hyper_threaded():
-                        set_sched_smt_power(0)
-                if (options.vary_mc_smt and options.smt_value) and is_hyper_threaded():
+                    mc_value = options.mc_value
+                else:
+                    mc_value = 0
+                if options.vary_mc_smt and options.smt_value > 0 and is_hyper_threaded():
                     set_sched_smt_power(0)
-                time.sleep(120)
+                    smt_value = options.smt_value
+                else:
+                    smt_value = 0
+
+                if work_ld == "kernbench":
+                    time.sleep(240)
+                else:
+                    time.sleep(120)
+
                 generate_report()
-                status = validate_cpu_consolidation(options.work_ld,options.mc_value, options.smt_value)
+                status = validate_cpu_consolidation("partial", work_ld, mc_value, smt_value)
+                if background == "yes":
+                    stop_wkld(work_ld)
                 #CPU consolidation should fail as sched_mc &(/) sched_smt is disabled
                 if status == 1:
                     return(0)
@@ -113,16 +119,20 @@
                 set_sched_mc_power(options.mc_value)
             if is_hyper_threaded():
                 set_sched_smt_power(options.smt_value)
-                #Commented after observing changes in behaviour in 2.6.31-rc7
-                #stress="thread"
             map_cpuid_pkgid()
             print "INFO: Created table mapping cpu to package"
             background="no"
             duration=60
             pinned ="no"
-            trigger_workld( options.smt_value, options.work_ld, options.stress, duration, background, pinned)
+
+            if options.perf_test:
+                perf_test="yes"
+            else:
+                perf_test="no"
+
+            trigger_workld( options.smt_value, options.work_ld, options.stress, duration, background, pinned, perf_test)
             generate_report()
-            status = validate_cpu_consolidation(options.work_ld,options.mc_value, options.smt_value)
+            status = validate_cpu_consolidation(options.stress, options.work_ld,options.mc_value, options.smt_value)
             reset_schedmc()
             if is_hyper_threaded():
                 reset_schedsmt()