summaryrefslogtreecommitdiffstats
path: root/src/test/testcases/testExecutorPSU.py
blob: b201f4b66f49998a7bf9f43ae0881690280a3111 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/usr/bin/python
# IBM_PROLOG_BEGIN_TAG
# This is an automatically generated prolog.
#
# $Source: src/test/testcases/testExecutorPSU.py $
#
# OpenPOWER sbe Project
#
# Contributors Listed Below - COPYRIGHT 2016
# [+] International Business Machines Corp.
#
#
# 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
'''
#############################################################
#    @file    testExecutor.py
#    @author: George Keishing <gkeishin@in.ibm.com>
#    @brief   Framework to test Host SBE interface on simics
#
#    Created on March 29, 2016
#    ----------------------------------------------------
#    @version  Developer      Date       Description
#    ----------------------------------------------------
#      1.0     gkeishin     29/03/16     Initial create
#############################################################
'''

import testPSUUtil
import testRegistry as reg

#-------------------------------
# This  is a Test Expected Data
#-------------------------------
'''
This data are the values or strings that needs to be validated for the test.
'''
SBE_TEST_EXPECT_DEFAULT  = "None"

HOST_TEST_EXPECT_DEFAULT = "None"
HOST_TEST_EXPECT_MBOX04  = "0000000000F0D101"

'''
The test data is designed to accomodate as many as new entries a test needs
and can also increase the field in it to add new action associated with it.
'''
#---------------------
# SBE side test data
#---------------------
'''
Every test data entry itself represent an action associated with it's data.
The data is validated as it executes.

The Test Expected Data if "None" signifies that this test entry is not to be
validated else it would validated against the expected value in the field.
On success returns macro SUCCESS else FAILURE

Refer Documentation for the data used here directly.
'''

sbe_test_data = (
    #-----------------------------------------------------------------------------------------------------
    #   OP      Reg                           Value           size    Test Expected Data       Description
    #-----------------------------------------------------------------------------------------------------
    ["write",  reg.REG_MBOX0,                  "0000030100F0D101", 8, SBE_TEST_EXPECT_DEFAULT,    "Writing to MBOX0 address"],
    ["write",  reg.REG_MBOX1,                  "0000000000001000", 8, SBE_TEST_EXPECT_DEFAULT,    "Writing to MBOX1 address"],
    ["write",  reg.PSU_SBE_DOORBELL_REG_WO_OR, "8000000000000000", 8, SBE_TEST_EXPECT_DEFAULT,    "Update SBE Doorbell register to interrupt SBE"],
    )

#---------------------
# Host side test data
#---------------------
'''
This Host data indicates that this will validate the SBE test set execution
if the overall test is a success or failure.

It can have as many entries which are needed to be validated.
'''
host_test_data = (
    #----------------------------------------------------------------------------------------------------------------
    #   OP     Reg          Value           size    Test Expected Data           Description
    #----------------------------------------------------------------------------------------------------------------
    ["read",  reg.REG_MBOX4, "0000000000000000",  8,   HOST_TEST_EXPECT_MBOX04,     "Reading Host MBOX4 data to Validate"],
    )

'''
User can define a function which does some task and returns SUCCESS or FAILURE.
one can simply call that function like any OP in the test data and still work.

Define those function in testClassUtil.py context for this to work.
'''

SAMPLE_TEST_EXPECT_FUNC = "None"
PARM_DATA = [1, 2, 3, 4] # sample 4 input paramters
sample_test_data = (
    #----------------------------------------------------------------------------------------------------------------
    #   OP     function Name          Parameters  NA     Test Expected Data           Description
    #----------------------------------------------------------------------------------------------------------------
    ["func",  "classUtilFuncSample",  PARM_DATA,   0,   SAMPLE_TEST_EXPECT_FUNC,     "Load func and do task"],
    )

#-------------------------
# Main Function
#-------------------------
def main():

    # Intialize the class obj instances
    print "\n  Initializing Registry instances ...."
    regObj = testPSUUtil.registry() # Registry obj def for operation

    print "\n  Execute SBE Test set  [ PSU ] ...\n"
                                   # Sim obj Target    Test set     Raise Exception
    rc_test = regObj.ExecuteTestOp(testPSUUtil.simSbeObj,sbe_test_data, True)
    if rc_test != testPSUUtil.SUCCESS:
        print "  SBE Test data set .. [ Failed ] .."
    else:
        print "  SBE Test data set .. [ OK ] "
        print "\n  Poll on Host side for INTR  ...\n"
                                   # Sim obj Target    Test set     Max timedout
        rc_intr = regObj.pollingOn(testPSUUtil.simSbeObj,host_test_data,20)
        if rc_intr == testPSUUtil.SUCCESS:
            print "  Interrupt Event Recieved .. Success !!"
        else:
            print "  Interrupt not Recieved.. Exiting .."

    print "\n"

if __name__=="__main__":
    main()

OpenPOWER on IntegriCloud