summaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authorSachin Gupta <sgupta2m@in.ibm.com>2016-11-24 04:14:05 -0600
committerAMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>2017-01-11 10:13:56 -0500
commitdf7e2b85dbf9e51987a9b79a5e18f258bf5dac45 (patch)
treeecc948a5a1b9a97ed8fb2d894cfd595d709551ad /src/test
parent9db0477faba296410c240b66dcd00747c8a781fd (diff)
downloadtalos-sbe-df7e2b85dbf9e51987a9b79a5e18f258bf5dac45.tar.gz
talos-sbe-df7e2b85dbf9e51987a9b79a5e18f258bf5dac45.zip
Timer service
RTC: 134268 Change-Id: Ie2bb96861f5a12937350048287e23705d0f8bcb0 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/32986 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: RAJA DAS <rajadas2@in.ibm.com> Reviewed-by: AMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>
Diffstat (limited to 'src/test')
-rwxr-xr-xsrc/test/testcases/test.xml3
-rw-r--r--src/test/testcases/testExecutorCntrlTimer.py144
-rwxr-xr-xsrc/test/testcases/testExecutorCntrlTimer.xml34
-rw-r--r--src/test/testcases/testExecutorStopTimer.py146
-rw-r--r--src/test/testcases/testPSUUtil.py2
5 files changed, 327 insertions, 2 deletions
diff --git a/src/test/testcases/test.xml b/src/test/testcases/test.xml
index 4bc43092..76d1998e 100755
--- a/src/test/testcases/test.xml
+++ b/src/test/testcases/test.xml
@@ -5,7 +5,7 @@
<!-- -->
<!-- OpenPOWER sbe Project -->
<!-- -->
-<!-- Contributors Listed Below - COPYRIGHT 2015,2016 -->
+<!-- Contributors Listed Below - COPYRIGHT 2015,2017 -->
<!-- [+] International Business Machines Corp. -->
<!-- -->
<!-- -->
@@ -44,6 +44,7 @@
<include>../simics/targets/p9_nimbus/sbeTest/testSystemFabricMap.xml</include>
<include>../simics/targets/p9_nimbus/sbeTest/testArrayAccess.xml</include>
<include>../simics/targets/p9_nimbus/sbeTest/testGetRing.xml</include>
+ <include>../simics/targets/p9_nimbus/sbeTest/testExecutorCntrlTimer.xml</include>
<include>../simics/targets/p9_nimbus/sbeTest/testQuiesce.xml</include>
<testcase>
<simcmd>sbe-trace 0</simcmd>
diff --git a/src/test/testcases/testExecutorCntrlTimer.py b/src/test/testcases/testExecutorCntrlTimer.py
new file mode 100644
index 00000000..9bdd68c3
--- /dev/null
+++ b/src/test/testcases/testExecutorCntrlTimer.py
@@ -0,0 +1,144 @@
+#!/usr/bin/python
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/test/testcases/testExecutorCntrlTimer.py $
+#
+# OpenPOWER sbe Project
+#
+# Contributors Listed Below - COPYRIGHT 2016,2017
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+#
+# IBM_PROLOG_END_TAG
+import testPSUUtil
+import testRegistry as reg
+import testUtil
+
+#-------------------------------
+# This is a Test Expected Data
+#-------------------------------
+'''
+This data are the values or strings that needs to be validated for the test.
+'''
+'''
+#------------------------------------------------------------------------------------------------------------------------------
+# SBE side test data - 20 ms timer
+#------------------------------------------------------------------------------------------------------------------------------
+'''
+sbe_test_startTimer = (
+ #-----------------------------------------------------------------------------------------------------
+ # OP Reg ValueToWrite size Test Expected Data Description
+ #-----------------------------------------------------------------------------------------------------
+ ["write", reg.REG_MBOX0, "0000010100F0D401", 8, "None", "Writing to MBOX0 address"],
+ ["write", reg.REG_MBOX1, "0000000000000020", 8, "None", "Writing to MBOX1 address"],
+ ["write", reg.PSU_SBE_DOORBELL_REG_WO_OR, "8000000000000000", 8, "None", "Update SBE Doorbell register to interrupt SBE"],
+ )
+'''
+#------------------------------------------------------------------------------------------------------------------------------
+# SBE side test data - Stop Timer.
+# In this test case though timer is already expired, we want to check that
+# stop timer does not fail in that case
+#------------------------------------------------------------------------------------------------------------------------------
+'''
+sbe_test_StopTimer = (
+ #-----------------------------------------------------------------------------------------------------
+ # OP Reg ValueToWrite size Test Expected Data Description
+ #-----------------------------------------------------------------------------------------------------
+ ["write", reg.REG_MBOX0, "0000010200F0D401", 8, "None", "Writing to MBOX0 address"],
+ ["write", reg.PSU_SBE_DOORBELL_REG_WO_OR, "8000000000000000", 8, "None", "Update SBE Doorbell register to interrupt SBE"],
+ )
+'''
+#---------------------
+# Host side test data - SUCCESS
+#---------------------
+'''
+host_test_Timer_Cmd_success = (
+ #----------------------------------------------------------------------------------------------------------------
+ # OP Reg ValueToWrite size Test Expected Data Description
+ #----------------------------------------------------------------------------------------------------------------
+ ["read", reg.REG_MBOX4, "0", 8, "0000000000F0D401", "Reading Host MBOX4 data to Validate"],
+ )
+'''
+#-----------------------------------------------------------------------
+# Do not modify - Used to simulate interrupt on Ringing Doorbell on Host
+#-----------------------------------------------------------------------
+'''
+host_polling_data = (
+ #----------------------------------------------------------------------------------------------------------------
+ # OP Reg ValueToWrite size Test Expected Data Description
+ #----------------------------------------------------------------------------------------------------------------
+ ["read", reg.PSU_HOST_DOORBELL_REG_WO_OR, "0", 8, "8000000000000000", "Reading Host Doorbell for Interrupt"],
+ )
+
+timer_polling_data = (
+ #----------------------------------------------------------------------------------------------------------------
+ # OP Reg ValueToWrite size Test Expected Data Description
+ #----------------------------------------------------------------------------------------------------------------
+ ["read", reg.PSU_HOST_DOORBELL_REG_WO_OR, "0", 8, "0002000000000000", "Reading Host Doorbell for Interrupt"],
+ )
+
+#-------------------------
+# Main Function
+#-------------------------
+def main():
+ # Run Simics initially
+ testUtil.runCycles( 10000000 );
+
+ # Intialize the class obj instances
+ regObj = testPSUUtil.registry() # Registry obj def for operation
+
+ print "\n Execute SBE Test set1 [ PutCntrlTimer ] ...\n"
+
+ '''
+ Test Case 1
+ '''
+ print "\n Test Start timer\n"
+ # HOST->SBE data set execution
+ regObj.ExecuteTestOp( testPSUUtil.simSbeObj, sbe_test_startTimer )
+
+ #Poll on HOST DoorBell Register for interrupt
+ regObj.pollingOn( testPSUUtil.simSbeObj, host_polling_data, 5 )
+
+ #SBE->HOST data set execution
+ regObj.ExecuteTestOp( testPSUUtil.simSbeObj, host_test_Timer_Cmd_success )
+
+ #Poll on HOST DoorBell Register for interrupt
+ print "\n Poll on Host side for Timer INTR ...\n"
+ regObj.pollingOn( testPSUUtil.simSbeObj, timer_polling_data, 50 )
+
+ '''
+ Test Case 2. Stop timer when timer already expired
+ '''
+ print "\n Test Stop timer\n"
+ # HOST->SBE data set execution
+ regObj.ExecuteTestOp( testPSUUtil.simSbeObj, sbe_test_StopTimer )
+
+ #Poll on HOST DoorBell Register for interrupt
+ regObj.pollingOn( testPSUUtil.simSbeObj, host_polling_data, 5 )
+
+ #SBE->HOST data set execution
+ regObj.ExecuteTestOp( testPSUUtil.simSbeObj, host_test_Timer_Cmd_success )
+
+
+if __name__ == "__main__":
+ main()
+ if err:
+ print ( "\nTest Suite completed with error(s)" )
+ #sys.exit(1)
+ else:
+ print ( "\nTest Suite completed with no errors" )
+ #sys.exit(0);
+
+
diff --git a/src/test/testcases/testExecutorCntrlTimer.xml b/src/test/testcases/testExecutorCntrlTimer.xml
new file mode 100755
index 00000000..550b1c47
--- /dev/null
+++ b/src/test/testcases/testExecutorCntrlTimer.xml
@@ -0,0 +1,34 @@
+<!-- IBM_PROLOG_BEGIN_TAG -->
+<!-- This is an automatically generated prolog. -->
+<!-- -->
+<!-- $Source: src/test/testcases/testExecutorCntrlTimer.xml $ -->
+<!-- -->
+<!-- OpenPOWER sbe Project -->
+<!-- -->
+<!-- Contributors Listed Below - COPYRIGHT 2016,2017 -->
+<!-- -->
+<!-- -->
+<!-- Licensed under the Apache License, Version 2.0 (the "License"); -->
+<!-- you may not use this file except in compliance with the License. -->
+<!-- You may obtain a copy of the License at -->
+<!-- -->
+<!-- http://www.apache.org/licenses/LICENSE-2.0 -->
+<!-- -->
+<!-- Unless required by applicable law or agreed to in writing, software -->
+<!-- distributed under the License is distributed on an "AS IS" BASIS, -->
+<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -->
+<!-- implied. See the License for the specific language governing -->
+<!-- permissions and limitations under the License. -->
+<!-- -->
+<!-- IBM_PROLOG_END_TAG -->
+<?xml version="1.0" encoding="UTF-8"?>
+
+ <testcase>
+ <simcmd>run-python-file targets/p9_nimbus/sbeTest/testExecutorCntrlTimer.py</simcmd>
+ <exitonerror>yes</exitonerror>
+ </testcase>
+ <testcase>
+ <simcmd>run-python-file targets/p9_nimbus/sbeTest/testExecutorStopTimer.py</simcmd>
+ <exitonerror>yes</exitonerror>
+ </testcase>
+
diff --git a/src/test/testcases/testExecutorStopTimer.py b/src/test/testcases/testExecutorStopTimer.py
new file mode 100644
index 00000000..6305d443
--- /dev/null
+++ b/src/test/testcases/testExecutorStopTimer.py
@@ -0,0 +1,146 @@
+#!/usr/bin/python
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/test/testcases/testExecutorStopTimer.py $
+#
+# OpenPOWER sbe Project
+#
+# Contributors Listed Below - COPYRIGHT 2016,2017
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+#
+# IBM_PROLOG_END_TAG
+import testPSUUtil
+import testRegistry as reg
+import testUtil
+
+#-------------------------------
+# This is a Test Expected Data
+#-------------------------------
+'''
+This data are the values or strings that needs to be validated for the test.
+'''
+'''
+#------------------------------------------------------------------------------------------------------------------------------
+# SBE side test data - 200 ms timer
+#------------------------------------------------------------------------------------------------------------------------------
+'''
+sbe_test_startTimer = (
+ #-----------------------------------------------------------------------------------------------------
+ # OP Reg ValueToWrite size Test Expected Data Description
+ #-----------------------------------------------------------------------------------------------------
+ ["write", reg.REG_MBOX0, "0000010100F0D401", 8, "None", "Writing to MBOX0 address"],
+ ["write", reg.REG_MBOX1, "0000000000000200", 8, "None", "Writing to MBOX1 address"],
+ ["write", reg.PSU_SBE_DOORBELL_REG_WO_OR, "8000000000000000", 8, "None", "Update SBE Doorbell register to interrupt SBE"],
+ )
+'''
+#------------------------------------------------------------------------------------------------------------------------------
+# SBE side test data - Stop Timer.
+#------------------------------------------------------------------------------------------------------------------------------
+'''
+sbe_test_StopTimer = (
+ #-----------------------------------------------------------------------------------------------------
+ # OP Reg ValueToWrite size Test Expected Data Description
+ #-----------------------------------------------------------------------------------------------------
+ ["write", reg.REG_MBOX0, "0000010200F0D401", 8, "None", "Writing to MBOX0 address"],
+ ["write", reg.PSU_SBE_DOORBELL_REG_WO_OR, "8000000000000000", 8, "None", "Update SBE Doorbell register to interrupt SBE"],
+ )
+'''
+#---------------------
+# Host side test data - SUCCESS
+#---------------------
+'''
+host_test_Timer_Cmd_success = (
+ #----------------------------------------------------------------------------------------------------------------
+ # OP Reg ValueToWrite size Test Expected Data Description
+ #----------------------------------------------------------------------------------------------------------------
+ ["read", reg.REG_MBOX4, "0", 8, "0000000000F0D401", "Reading Host MBOX4 data to Validate"],
+ )
+'''
+#-----------------------------------------------------------------------
+# Do not modify - Used to simulate interrupt on Ringing Doorbell on Host
+#-----------------------------------------------------------------------
+'''
+host_polling_data = (
+ #----------------------------------------------------------------------------------------------------------------
+ # OP Reg ValueToWrite size Test Expected Data Description
+ #----------------------------------------------------------------------------------------------------------------
+ ["read", reg.PSU_HOST_DOORBELL_REG_WO_OR, "0", 8, "8000000000000000", "Reading Host Doorbell for Interrupt"],
+ )
+
+timer_polling_data = (
+ #----------------------------------------------------------------------------------------------------------------
+ # OP Reg ValueToWrite size Test Expected Data Description
+ #----------------------------------------------------------------------------------------------------------------
+ ["read", reg.PSU_HOST_DOORBELL_REG_WO_OR, "0", 8, "0002000000000000", "Reading Host Doorbell for Interrupt"],
+ )
+
+#-------------------------
+# Main Function
+#-------------------------
+def main():
+ # Run Simics initially
+ testUtil.runCycles( 10000000 );
+
+ # Intialize the class obj instances
+ regObj = testPSUUtil.registry() # Registry obj def for operation
+
+ print "\n Execute SBE Test set1 [ PutCntrlTimer ] ...\n"
+
+ '''
+ Test Case 1
+ '''
+ print "\n Test Start timer\n"
+ # HOST->SBE data set execution
+ regObj.ExecuteTestOp( testPSUUtil.simSbeObj, sbe_test_startTimer )
+
+ #Poll on HOST DoorBell Register for interrupt
+ regObj.pollingOn( testPSUUtil.simSbeObj, host_polling_data, 5 )
+
+ #SBE->HOST data set execution
+ regObj.ExecuteTestOp( testPSUUtil.simSbeObj, host_test_Timer_Cmd_success )
+
+ print "\n Test Stop timer\n"
+ # HOST->SBE data set execution
+ regObj.ExecuteTestOp( testPSUUtil.simSbeObj, sbe_test_StopTimer )
+
+ #Poll on HOST DoorBell Register for interrupt
+ regObj.pollingOn( testPSUUtil.simSbeObj, host_polling_data, 5 )
+
+ isTimerFired = True;
+ #SBE->HOST data set execution
+ # As we have stopped the timer, timer should not fire
+ regObj.ExecuteTestOp( testPSUUtil.simSbeObj, host_test_Timer_Cmd_success )
+ try:
+ #Poll on HOST DoorBell Register for interrupt
+ print "\n Poll on Host side for Timer INTR ...\n"
+ regObj.pollingOn( testPSUUtil.simSbeObj, timer_polling_data, 20 )
+ except:
+ isTimerFired = False
+
+ if isTimerFired:
+ print "\n Problem. Timer not cancelled\n"
+ raise Exception('Timer Not cancelled ');
+
+if __name__ == "__main__":
+ main()
+ if err:
+ print ( "\nTest Suite completed with error(s)" )
+ #sys.exit(1)
+ else:
+ print ( "\nTest Suite completed with no errors" )
+ #sys.exit(0);
+
+
diff --git a/src/test/testcases/testPSUUtil.py b/src/test/testcases/testPSUUtil.py
index e2b03b7f..6b814701 100644
--- a/src/test/testcases/testPSUUtil.py
+++ b/src/test/testcases/testPSUUtil.py
@@ -365,7 +365,7 @@ class registry(object):
break
else:
retries = retries - 1
- return FAILURE
+ return SUCCESS
#----------------------------------------------------
# Load the function and execute
OpenPOWER on IntegriCloud