Open blakehilliard opened 1 month ago
Can you provide the HTML report and debug output (with --log-level DEBUG
)?
The test itself does not check POST responses or task monitor responses. It only checks the GET and HEAD responses for the following resources:
The debug output: rf_protocol_validator.log
The HTML report (renamed .log so github would let me attach it): RedfishProtocolValidationReport_10_08_2024_160057.log
I see in the HTML report it's showing an "HTTP 600" status code, which is a dummy code we use when the lower requests layers are throwing exceptions.
It looks like there is a connection being dropped (by the service or transient network issue) according to the debug output. This happens after the POST operation to make the new account on the first GET to check the task status:
DEBUG:urllib3.connectionpool:https://REDACTED:443 "POST /redfish/v1/AccountService/Accounts HTTP/1.1" 202 None
ERROR:root:GET on /redfish/v1/TaskService/Tasks/f00ef35a960d4798b783edaef98664a9/Monitor caused ConnectionError exception; building HTTP 600 response
DEBUG:root:response status = 600, method = GET, uri = /redfish/v1/AccountService/Accounts, resource_type = None, request_type = RequestType.NORMAL
I suspect because in this context we're performing a GET, and the original operation is on /redfish/v1/AccountService/Accounts, the task monitor polling is getting lumped into the results tracking. That behavior is not really correct, but the source of the issue is the fact we're taking exceptions when accessing the service.
It looks like there is a connection being dropped (by the service or transient network issue)
IMO this is unlikely. This happens, in this exact spot, around 50% of the time we run this tool. But we never have problems with dropped connections in any other context.
The log output shows it right here:
ERROR:root:GET on /redfish/v1/TaskService/Tasks/f00ef35a960d4798b783edaef98664a9/Monitor caused ConnectionError exception; building HTTP 600 response
That funnels through requests.get
, which can throw ConnectionError
when it can't communicate with the target server. This spot is also unique in that I don't see anything else in the log that indicates a task monitor is produced.
I have a redfish service where creating an Account is done with a task, like this:
Sometimes, Redfish-Protocol-Validator fails because it claims that /redfish/v1/AccountService/Accounts fails the test case
RESP_HEADERS_LINK_REL_DESCRIBED_BY Link header: Services shall return the Link header containing rel=describedby on GET and HEAD requests
. However, I can see that we always provide the Link header with that collection. So the first issue is that the error message is wrong when this tool hits whatever problem is causing the failure.I noticed that when the test passes, I can see it creates a new account, gets the task to see that it is created, then does some other operations on the account. Here is a snippet from our log of https requests showing what it is doing with an Account for a passing run:
But when I watch our log of https requests on a failing case, I see it never checks the task for the Account creation:
I do not know why the tool behaves differently in these cases.
I also notice that, regardless of whether it passes or fails, I see this in the output of Redfish-Protocol-Validator:
In a failing case, I see this additional line:
But my log shows no attempt to GET that task monitor.