Add new force tags for test suites
Comments:
- Added new tags for the test suites
Tested:
- NA
Change-Id: Ibd7eb9e821290c44bd1255d47a52e596e6135cbf
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/redfish/task_service/test_tasks_service.robot b/redfish/task_service/test_tasks_service.robot
new file mode 100644
index 0000000..73d959b
--- /dev/null
+++ b/redfish/task_service/test_tasks_service.robot
@@ -0,0 +1,278 @@
+*** Settings ***
+
+Documentation Test task service and tasks URI functionality of OpenBMC.
+
+Library OperatingSystem
+
+Resource ../../lib/resource.robot
+Resource ../../lib/bmc_redfish_resource.robot
+Resource ../../lib/dump_utils.robot
+Resource ../../lib/openbmc_ffdc.robot
+
+Suite Setup Suite Setup Execution
+Suite Teardown Suite Teardown Execution
+Test Teardown FFDC On Test Case Fail
+
+Force Tags Tasks_Service
+
+*** Variables ***
+${TIME_REGEXP_PATTERN} (.+)[\\-|\\+]\\d\\d\\:\\d\\d
+
+*** Test Cases ***
+
+Verify Task Service Attributes
+ [Documentation] Validate attributes and default values in task service URI.
+ [Tags] Verify_Task_Service_Attributes
+
+ # {
+ # "@odata.id": "/redfish/v1/TaskService",
+ # "@odata.type": "#TaskService.v1_1_4.TaskService",
+ # "CompletedTaskOverWritePolicy": "Oldest",
+ # "DateTime": "2022-08-08T06:04:11+00:00",
+ # "Id": "TaskService",
+ # "LifeCycleEventOnTaskStateChange": true,
+ # "Name": "Task Service",
+ # "ServiceEnabled": true,
+ # "Status": {
+ # "Health": "OK",
+ # "HealthRollup": "OK",
+ # "State": "Enabled"
+ # },
+ # "Tasks": {
+ # "@odata.id": "/redfish/v1/TaskService/Tasks"
+ # }
+ # }
+
+ ${resp}= Redfish.Get Properties /redfish/v1/TaskService
+
+ # Verify CompletedTaskOverWritePolicy is a valid value.
+ Should Be True
+ ... '${resp["CompletedTaskOverWritePolicy"]}' in ${allowed_completed_task_overwrite_policy}
+
+ # Verify service enabled property.
+ Should Be Equal ${resp["ServiceEnabled"]} ${TRUE}
+
+ # Verify status.
+ Dictionaries Should Be Equal ${resp["Status"]} ${valid_status}
+
+ # Get current time from BMC console.
+ ${cur_time}= Get Current Date from BMC
+
+ # Remove offset from task service time.
+ ${bmc_time}= Get Regexp Matches ${resp["DateTime"]}
+ ... ${TIME_REGEXP_PATTERN} 1
+
+ ${time_diff}= Subtract Date From Date ${cur_time} ${bmc_time[0]}
+ ... date1_format=%m/%d/%Y %H:%M:%S date2_format=%Y-%m-%dT%H:%M:%S
+
+ # Compare system time and time displayed in task service URI.
+ ${time_diff}= Evaluate ${time_diff} < 5
+
+ Should Be Equal ${time_diff} ${TRUE}
+ ... Time Difference between BMC time and time displayed in task URI is higher.
+
+
+Test Generated Task Instance Validity And Task State
+ [Documentation] Trigger a Redfish event that generates task instance and
+ ... verify the values of generated task instance.
+ [Tags] Test_Generated_Task_Instance_Validity_And_Task_State
+
+ # {
+ # "@odata.id": "/redfish/v1/TaskService/Tasks/3",
+ # "@odata.type": "#Task.v1_4_3.Task",
+ # "Id": "3",
+ # "Messages": [
+ # {
+ # "@odata.type": "#Message.v1_0_0.Message",
+ # "Message": "The task with id 3 has started.",
+ # "MessageArgs": [
+ # "3"
+ # ],
+ # "MessageId": "TaskEvent.1.0.1.TaskStarted",
+ # "Resolution": "None.",
+ # "Severity": "OK"
+ # }
+ # ],
+ # "Name": "Task 3",
+ # "Payload": {
+ # "HttpHeaders": [
+ # "User-Agent: PostmanRuntime/7.26.8",
+ # "Accept: */*",
+ # "Host: 10.0.123.113",
+ # "Accept-Encoding: gzip, deflate, br",
+ # "Connection: keep-alive",
+ # "Content-Length: 41"
+ # ],
+ # "HttpOperation": "POST",
+ # "JsonBody": "{\n \"DiagnosticDataType\": \"Manager\"\n}",
+ # "TargetUri": "/redfish/v1/Managers/${MANAGER_ID}/LogServices/Dump/Actions
+ # /LogService.CollectDiagnosticData"
+ # },
+ # "PercentComplete": 0,
+ # "StartTime": "2022-08-09T12:57:06+00:00",
+ # "TaskMonitor": "/redfish/v1/TaskService/Tasks/3/Monitor",
+ # "TaskState": "Running",
+ # "TaskStatus": "OK"
+ # }
+
+ # Trigger a Redfish event that generates task instance.
+ ${task_id} ${resp_obj}= Generate Task Instance
+
+ # Verify task monitor before task completion.
+ ${resp}= Redfish.Get /redfish/v1/TaskService/Tasks/${task_id}/Monitor
+ ... valid_status_codes=[${HTTP_ACCEPTED}]
+
+ # Get current time from BMC console before generating task.
+ ${cur_time}= Get Current Date from BMC
+
+ # Verify task start time is within 10s of current time.
+ ${resp}= Redfish.Get Properties /redfish/v1/TaskService/Tasks/${task_id}
+
+ ${start_time}= Get Regexp Matches ${resp["StartTime"]}
+ ... ${TIME_REGEXP_PATTERN} 1
+
+ # Compare system time and time displayed in task service URI.
+ ${time_diff}= Subtract Date From Date ${cur_time} ${start_time[0]}
+ ... date1_format=%m/%d/%Y %H:%M:%S date2_format=%Y-%m-%dT%H:%M:%S
+
+
+ ${time_diff}= Evaluate ${time_diff} < 10
+ Should Be Equal ${time_diff} ${TRUE} Time difference greater than 10 seconds.
+
+ # Verify HttpOperation in task payload.
+ Should Be Equal ${resp["Payload"]["HttpOperation"]} POST
+
+ # Verify TargetUri.
+ Should Be Equal ${resp["Payload"]["TargetUri"]}
+ ... ${resp_obj.request.path}
+
+ Wait For Task Completion ${task_id} ${allowed_task_completion_state}
+ ... check_state=${TRUE}
+
+ # Verify task monitor URI after task completion.
+ ${resp}= Redfish.Get /redfish/v1/TaskService/Tasks/${task_id}/Monitor
+ ... valid_status_codes=[${HTTP_NOT_FOUND}]
+
+ # Verify end time is greater than start time post task completion.
+ ${resp}= Redfish.Get Properties /redfish/v1/TaskService/Tasks/${task_id}
+
+ ${end_time}= Get Regexp Matches ${resp["EndTime"]}
+ ... ${TIME_REGEXP_PATTERN} 1
+
+ # Compare start time and end time displayed in task service URI.
+ ${time_diff}= Subtract Date From Date ${end_time[0]} ${start_time[0]}
+
+ ${time_diff}= Evaluate ${time_diff} >= 0
+
+ Should Be Equal ${time_diff} ${TRUE}
+ ... End time not greater than start time.
+
+
+Verify Task Persistency Post BMC Reboot
+ [Documentation] Verify task collection persistency post BMC reboot.
+ [Tags] Verify_Task_Persistency_Post_BMC_Reboot
+
+ Verify Generate Task Instance Completion
+
+ ${initial_task_count}= Redfish.Get Attribute /redfish/v1/TaskService/Tasks
+ ... Members@odata.count
+
+ Redfish BMC Reset Operation reset_type=ForceRestart
+
+ ${current_task_count}= Redfish.Get Attribute /redfish/v1/TaskService/Tasks
+ ... Members@odata.count
+
+ Should Be Equal As Integers ${initial_task_count} ${current_task_count}
+
+
+*** Keywords ***
+
+Suite Setup Execution
+ [Documentation] Do suite setup operation.
+
+ Redfish.login
+ Load Task Service Properties Data
+
+
+Suite Teardown Execution
+ [Documentation] Do suite teardown operation.
+
+ Run Keyword And Ignore Error Redfish.Logout
+ Close All Connections
+
+
+Generate Task Instance
+ [Documentation] Trigger Redfish event to generate task instance
+ ... and return the task id.
+ [Arguments] ${task_type}=bmc_dump
+
+ # Description of argument(s):
+ # task_type Default value for task_type is bmc_dump. When 'task_type'
+ # is 'bmc_dump', then keyword will initiate bmc user dump
+ # creation and will return the task id and response object.
+
+ IF '${task_type}' == 'bmc_dump'
+ ${task_id} ${resp}= Create BMC User Dump
+ ELSE
+ Fail Task type "${task_type}" is unknown.
+ END
+
+ Return From Keyword ${task_id} ${resp}
+
+
+Verify Generate Task Instance Completion
+ [Documentation] Trigger Redfish event to generate task and wait until
+ ... task gets completed.
+ [Arguments] ${task_type}=bmc_dump
+
+ # Description of argument(s):
+ # task_type If 'task_type' set as 'bmc_dump', the keyword will
+ # initiate bmc user dump creation and wait until
+ # task is completed. Default value of task_type
+ # is bmc_dump.
+
+ ${task_id} ${resp}= Generate Task Instance ${task_type}
+ Wait For Task Completion ${task_id} ${allowed_task_completion_state}
+
+
+Load Task Service Properties Data
+ [Documentation] Load the task service related properties from json file.
+
+ # User input -v TASK_JSON_FILE_PATH:<path> else default path.
+ # ${task_json_file}= Get Variable Value ${TASK_JSON_FILE_PATH} data/task_state.json
+
+ ${json}= OperatingSystem.Get File ${TASK_JSON_FILE_PATH}
+ ${properties}= Evaluate json.loads('''${json}''') json
+
+ Set Suite Variable ${allowed_completed_task_overwrite_policy}
+ ... ${properties["TaskService"]["CompletedTaskOverWritePolicy"]["AllowedValues"]}
+
+ Set Suite Variable ${allowed_task_state}
+ ... ${properties["Task"]["TaskState"]["AllowedValues"]}
+
+ Set Suite Variable ${allowed_task_completion_state}
+ ... ${properties["Task"]["TaskState"]["AllowedCompletionTaskState"]}
+
+ Set Suite Variable ${valid_status}
+ ... ${properties["TaskService"]["Status"]}
+
+
+Get Current Date from BMC
+ [Documentation] Runs the date command from BMC and returns current date and time.
+
+ # Get Current Date from BMC
+ ${date} ${stderr} ${rc}= BMC Execute Command date
+
+ # Split the string and remove first and 2nd last value from
+ # the list and join to form %d %b %H:%M:%S %Y date format.
+
+ ${date}= Split String ${date}
+
+ Remove From List ${date} 0
+ Remove From List ${date} -2
+ ${date}= Evaluate " ".join(${date})
+
+ # Convert the date format to %m/%d/%Y %H:%M:%S
+ ${date}= Convert Date ${date} date_format=%b %d %H:%M:%S %Y result_format=%m/%d/%Y %H:%M:%S exclude_millis=True
+
+ [Return] ${date}