Processor frequency check turbo and non-turbo.
Moved Set Turbo Setting Via Rest to lib/utils.robot from
tests/test_sensors.robot.
Added new module proc_freq_check.robot.
Resolves openbmc/openbmc-test-automation#916
Change-Id: I9f064a6af49481aaa493a674c80e5ac293f1351e
Signed-off-by: Steven Sombar <ssombar@us.ibm.com>
diff --git a/lib/utils.robot b/lib/utils.robot
index 1f74ae2..e29e2de 100755
--- a/lib/utils.robot
+++ b/lib/utils.robot
@@ -1155,3 +1155,21 @@
###############################################################################
+Read Turbo Setting Via REST
+ [Documentation] Return turbo setting via REST.
+
+ ${resp}= OpenBMC Get Request ${SENSORS_URI}host/TurboAllowed
+ ${jsondata}= To JSON ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
+ [Return] ${jsondata["data"]["value"]}
+
+
+###############################################################################
+Set Turbo Setting Via REST
+ [Documentation] Set turbo setting via REST.
+ [Arguments] ${setting}
+ # Description of argument(s):
+ # setting Value which needs to be set.(i.e. False or True)
+
+ ${valueDict}= Create Dictionary data=${setting}
+ Write Attribute ${SENSORS_URI}host/TurboAllowed value data=${valueDict}
diff --git a/systest/proc_freq_check.robot b/systest/proc_freq_check.robot
new file mode 100755
index 0000000..2525e22
--- /dev/null
+++ b/systest/proc_freq_check.robot
@@ -0,0 +1,106 @@
+*** Settings ***
+
+Documentation Compare processor speed in turbo and non-turbo modes.
+
+# Test Parameters:
+# OPENBMC_HOST The BMC host name or IP address.
+# OS_HOST The OS host name or IP Address.
+# OS_USERNAME The OS login userid (usually root).
+# OS_PASSWORD The password for the OS login.
+
+Resource ../syslib/utils_os.robot
+Resource ../lib/boot_utils.robot
+Library ../syslib/utils_keywords.py
+Variables ../data/variables.py
+Library ../lib/bmc_ssh_utils.py
+Resource ../lib/connection_client.robot
+Resource ../lib/resource.txt
+Resource ../lib/rest_client.robot
+Resource ../lib/utils.robot
+
+
+Test Setup Pre Test Case Execution
+Test Teardown Post Test Case Execution
+
+
+*** Test Cases ***
+
+Turbo And Non-Turbo Processor Speed Test
+ [Documentation] Compare processor turbo and non-turbo speeds.
+ [Tags] Turbo_And_Non-Turbo_Processor_Speed_Test
+
+ Set Turbo Setting Via REST True
+ ${mode}= Read Turbo Setting Via REST
+ Should Be Equal ${mode} True
+ ... msg=Issued call to set Turbo mode but it was not set.
+
+ # The OS governor determines the maximum processor speed at boot-up time.
+ REST Power On stack_mode=skip
+ ${proc_speed_turbo}= Get Processor Max Speed Setting
+
+ Smart Power Off
+
+ Set Turbo Setting Via REST False
+ ${mode}= Read Turbo Setting Via REST
+ Should Be Equal ${mode} False
+ ... msg=Issued call to disable Turbo mode but it was not disabled.
+
+ REST Power On stack_mode=skip
+ ${proc_speed_non_turbo}= Get Processor Max Speed Setting
+
+ Rprintn
+ Rpvars proc_speed_turbo proc_speed_non_turbo
+
+ ${err_msg}= Catenate Reported turbo processor speed should be
+ ... greater than non-turbo speed.
+ Should Be True ${proc_speed_turbo} > ${proc_speed_non_turbo}
+ ... msg=${err_msg}
+
+
+*** Keywords ***
+
+Get Processor Max Speed Setting
+ [Documentation] Get processor maximum speed setting from the OS.
+ # - On the OS run: ppc64_cpu --frequency
+ # - Return the maximum frequency value reported.
+ # The command ppc64_cpu is provided in both Ubuntu and RHEL on Power.
+
+ ${command}= Set Variable
+ ... ppc64_cpu --frequency | grep max | cut -f 2 | cut -d ' ' -f 1
+ # The ppc64_cpu --frequency command returns min, max, and average
+ # cpu frequencies. For example,
+ # min: 2.500 GHz (cpu 143)
+ # max: 2.700 GHz (cpu 1)
+ # avg: 2.600 GHz
+ # The ${command} selects the max: line, selects only the
+ # 2.700 GHz (cpu 1) part, then selects the 2.700 number.
+
+ # Get the maximum processor frequency reported.
+ ${output} ${stderr} ${rc}= OS Execute Command
+ ... ${command} print_out=${1}
+
+ ${frequency}= Convert To Number ${output}
+ [Return] ${frequency}
+
+
+Pre Test Case Execution
+ [Documentation] Do the pre test setup.
+ # Save the initial system turbo setting.
+ # Start (setup) console logging.
+
+ ${initial_turbo_setting}= Read Turbo Setting Via REST
+ Set Suite Variable ${initial_turbo_setting} children=true
+ Start SOL Console Logging
+
+
+Post Test Case Execution
+ [Documentation] Do the post test teardown.
+ # - Restore original turbo setting on the system.
+ # - Capture FFDC on test failure.
+ # - Power off the OS and close all open SSH connections.
+
+ Set Turbo Setting Via REST ${initial_turbo_setting}
+
+ FFDC On Test Case Fail
+ Smart Power Off
+ Close All Connections
diff --git a/tests/test_sensors.robot b/tests/test_sensors.robot
index 27ee44e..3c6ceef 100644
--- a/tests/test_sensors.robot
+++ b/tests/test_sensors.robot
@@ -11,6 +11,7 @@
Resource ../lib/state_manager.robot
Library ../data/model.py
Resource ../lib/boot_utils.robot
+Resource ../lib/utils.robot
Suite Setup Setup The Suite
Test Setup Open Connection And Log In
@@ -170,7 +171,7 @@
*** Keywords ***
Setup The Suite
- [Documentation] Do the initial suite setup.
+ [Documentation] Initial suite setup.
# Boot Host.
REST Power On
@@ -221,23 +222,6 @@
${x}= get inventory sensor ${OPENBMC_MODEL} ${name}
[Return] ${x}
-Read Turbo Setting Via REST
- [Documentation] Return turbo allowed setting.
-
- ${resp}= OpenBMC Get Request ${SENSORS_URI}host/TurboAllowed
- ${jsondata}= To JSON ${resp.content}
- Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
- [Return] ${jsondata["data"]["value"]}
-
-Set Turbo Setting Via REST
- [Documentation] Set turbo setting via REST.
- [Arguments] ${setting}
- # Description of argument(s):
- # setting Value which needs to be set.(i.e. False or True)
-
- ${valueDict}= Create Dictionary data=${setting}
- Write Attribute ${SENSORS_URI}host/TurboAllowed value data=${valueDict}
-
Post Test Case Execution
[Documentation] Do the post test teardown.
... 1. Capture FFDC on test failure.