PLDM: Automate Test Scenarios for pldm commands

 - Verify GetPDR
 - Verify SetStateEffecterStates
 - Verify GetTID
 - Verify GetBIOSTable For StringTable
 - Verify GetFruRecordTableMetadata

Note: Ouput for GetBIOSTable type stringtable is dynamic
      will submit the verification part in the next commit.

Change-Id: I422c2df4485ac25d6ff4183bd51b5ddc6c3bf3cc
Signed-off-by: Sridevi Ramesh <sridevra@in.ibm.com>
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/pldm/test_pldm_base.robot b/pldm/test_pldm_base.robot
index d7f8dac..0d05182 100644
--- a/pldm/test_pldm_base.robot
+++ b/pldm/test_pldm_base.robot
@@ -10,7 +10,6 @@
 
 
 *** Test Cases ***
-
 Verify Get PLDM Types
     [Documentation]  Verify supported PLDM types.
     [Tags]  Verify_Get_PLDM_Types
@@ -53,3 +52,15 @@
     ${pldm_cmd}=  Evaluate  $CMD_GETPLDMVERSION % 'fru'
     ${pldm_output}=  Pldmtool  ${pldm_cmd}
     Valid Value  pldm_output['type_4(fru)']  ['${VERSION_FRU['STRING']}']
+
+Verify GetTID
+    [Documentation]  Verify GetTID (Terminus ID) response message.
+    [Tags]  Verify_GetTID
+
+    # Example output:
+    # TID : 1
+
+    ${pldm_output}=  Pldmtool  base GetTID
+    Rprint Vars  pldm_output
+
+    Valid Dict  pldm_output  valid_values={'tid': ['1']}
diff --git a/pldm/test_pldm_bios.robot b/pldm/test_pldm_bios.robot
index 0413e16..ef02930 100644
--- a/pldm/test_pldm_bios.robot
+++ b/pldm/test_pldm_bios.robot
@@ -15,7 +15,6 @@
 *** Test Cases ***
 
 Verify GetDateTime
-
     [Documentation]  Verify host date & time.
     [Tags]  Verify_GetDateTime
 
@@ -33,7 +32,6 @@
 
 
 Verify SetDateTime
-
     [Documentation]  Verify set date & time for the host.
     [Tags]  Verify_SetDateTime
 
@@ -58,10 +56,35 @@
     ${pldm_output}=  Pldmtool  ${cmd_set_time}
     Valid Value  pldm_output['setdatetime']  ['SUCCESS']
 
+
+Verify GetBIOSTable For StringTable
+    [Documentation]  Verify GetBIOSTable for table type string table.
+    [Tags]  Verify_GetBIOSTable_For_StringTable
+
+    # pldm_output:
+    # [biosstringhandle]:                             BIOSString
+    # [0]:                                            Allowed
+    # [1]:                                            Disabled
+    # [2]:                                            Enabled
+    # [3]:                                            Not Allowed
+    # [4]:                                            Perm
+    # [5]:                                            Temp
+    # [6]:                                            pvm-fw-boot-side
+    # [7]:                                            pvm-inband-code-update
+    # [8]:                                            pvm-os-boot-side
+    # [9]:                                            pvm-pcie-error-inject
+    # [10]:                                           pvm-surveillance
+    # [11]:                                           pvm-system-name
+    # [12]:                                           vmi-if-count
+
+    ${pldm_output}=  Pldmtool  bios GetBIOSTable -t 0
+    Rprint Vars  pldm_output
+    # TODO: Implement verification for GetBIOSTable response message.
+    # Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETBIOSTABLE_STRTABLE}
+
 *** Keywords ***
 
 PLDM BIOS Suite Cleanup
-
     [Documentation]  Perform pldm BIOS suite cleanup.
 
     ${result}=  Get Current Date  UTC  exclude_millis=True
diff --git a/pldm/test_pldm_fru.robot b/pldm/test_pldm_fru.robot
new file mode 100644
index 0000000..00a0fc3
--- /dev/null
+++ b/pldm/test_pldm_fru.robot
@@ -0,0 +1,28 @@
+*** Settings ***
+
+Documentation    Module to test PLDM FRU (Field Replaceable Unit) commands.
+
+Library          ../lib/pldm_utils.py
+Variables        ../data/pldm_variables.py
+Resource         ../lib/openbmc_ffdc.robot
+
+Test Setup       Printn
+Test Teardown    FFDC On Test Case Fail
+
+*** Test Cases ***
+
+Verify GetFruRecordTableMetadata
+    [Documentation]  Verify get fru record table meta data reponse message.
+    [Tags]  Verify_GetFruRecordTableMetadata
+
+    # pldm_output:
+    # [frutablelength]:                                   60
+    # [frudatamajorversion]:                              1
+    # [total_number_of_record_set_identifiers_in_table]:  1
+    # [frudataminorversion]:                              0
+    # [total_number_of_records_in_table]:                 1
+    # [frutablemaximumsize]:                              4294967295
+
+    ${pldm_output}=  Pldmtool  fru GetFruRecordTableMetadata
+    Rprint Vars  pldm_output
+    Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETFRURECORDTABLEMETADATA}
diff --git a/pldm/test_pldm_platform.robot b/pldm/test_pldm_platform.robot
new file mode 100644
index 0000000..c85b847
--- /dev/null
+++ b/pldm/test_pldm_platform.robot
@@ -0,0 +1,83 @@
+*** Settings ***
+
+Documentation    Module to test PLDM platform commands.
+
+Library          ../lib/pldm_utils.py
+Variables        ../data/pldm_variables.py
+Resource         ../lib/openbmc_ffdc.robot
+
+Test Setup       Printn
+Test Teardown    FFDC On Test Case Fail
+
+*** Test Cases ***
+
+Verify GetPDR
+    [Documentation]  Verify GetPDR (Platform Descpritor Record) response message.
+    [Tags]  Verify_GetPDR
+    [Template]  Verify GetPDR For Record Handle
+
+    # RecordHandle
+    '0'
+    '1'
+    '2'
+
+
+Verify SetStateEffecterStates
+    [Documentation]  Verify set state effecter states response message.
+    [Tags]  Verify_SetStateEffecterStates
+    [Template]  Verify SetStateEffecterStates For Effecter States
+
+    # EffecterStates (effecterID requestSet effecterState)
+    '1 1 1'
+    '1 1 2'
+
+*** Keywords ***
+
+Verify GetPDR For Record Handle
+    [Documentation]  Verify GetPDR (Platform Descpritor Record) for given input record handle.
+    [Arguments]  ${record_handle}
+
+    # Description of argument(s):
+    # ${record_handle}  Record handle (e.g. '1').
+
+    # pldm_output:
+    # [responseCount]:                               29
+    # [recordHandle]:                                1
+    # [PDRHeaderVersion]:                            1
+    # [PDRType]:                                     11
+    # [recordChangeNumber]:                          0
+    # [dataLength]:                                  19
+    # [PLDMTerminusHandle]:                          0
+    # [effecterID]:                                  1
+    # [entityType]:                                  33
+    # [entityInstanceNumber]:                        0
+    # [containerID]:                                 0
+    # [effecterSemanticID]:                          0
+    # [effecterInit]:                                0
+    # [effecterDescriptionPDR]:                      false
+    # [compositeEffecterCount]:                      1
+    # [stateSetID]:                                  196
+    # [possibleStatesSize]:                          1
+    # [possibleStates]:                              6
+
+    ${pldm_cmd}=  Evaluate  $CMD_GETPDR % ${record_handle}
+    ${pldm_output}=  Pldmtool  ${pldm_cmd}
+    Rprint Vars  pldm_output
+    Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETPDR}
+
+
+Verify SetStateEffecterStates For Effecter States
+    [Documentation]  Verify set state effecter states for given input effecter states.
+    [Arguments]  ${effecter_states}
+
+    # Description of argument(s):
+    # ${effecter_states}   (effecterID requestSet effecterState).
+    #                      e.g. '1 1 1'.
+
+    # Example output:
+    # SetStateEffecterStates ]: SUCCESS
+
+    ${pldm_cmd}=  Evaluate  $CMD_SETSTATEEFFECTERSTATES % ${effecter_states}
+    ${pldm_output}=  Pldmtool  ${pldm_cmd}
+    Rprint Vars  pldm_output
+    Valid Value  pldm_output['setstateeffecterstates']  ['SUCCESS']