Fix for ConnectionError.
Why the fix is required:
ConnectionError is seen as some REST operation are taking more then 10 seconds.
The fix addresses the following:
1. Get Operation on enumerate url is now done with 30 secs timeout.
2. REST Login timeout is now set equivalent to GET, POST and PUT request timeout.
3. Default REST Login Timeout is set to 10 secs (which is same as GET, POST, PUT, and Delete)
4. GET, PUT and POST operation can now be called with timeout other then defaut 10sec.
Resolves openbmc/openbmc-test-automation#164
Change-Id: I0fa42d36c9b80fe30346d23258daf5300eb23b6a
Signed-off-by: Rahul Maheshwari <rahulmaheshwari@in.ibm.com>
diff --git a/lib/rest_client.robot b/lib/rest_client.robot
index 1cd1439..eb1a28a 100644
--- a/lib/rest_client.robot
+++ b/lib/rest_client.robot
@@ -60,47 +60,48 @@
*** Keywords ***
OpenBMC Get Request
- [Arguments] ${uri} &{kwargs}
+ [Arguments] ${uri} ${timeout}=10 &{kwargs}
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
Log Request method=Get base_uri=${base_uri} args=&{kwargs}
- Initialize OpenBMC
- ${ret}= Get Request openbmc ${base_uri} &{kwargs} timeout=10
+ Initialize OpenBMC ${timeout}
+ ${ret}= Get Request openbmc ${base_uri} &{kwargs} timeout=${timeout}
Log Response ${ret}
[Return] ${ret}
OpenBMC Post Request
- [Arguments] ${uri} &{kwargs}
+ [Arguments] ${uri} ${timeout}=10 &{kwargs}
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
${headers}= Create Dictionary Content-Type=application/json
set to dictionary ${kwargs} headers ${headers}
Log Request method=Post base_uri=${base_uri} args=&{kwargs}
- Initialize OpenBMC
- ${ret}= Post Request openbmc ${base_uri} &{kwargs} timeout=10
+ Initialize OpenBMC ${timeout}
+ ${ret}= Post Request openbmc ${base_uri} &{kwargs} timeout=${timeout}
Log Response ${ret}
[Return] ${ret}
OpenBMC Put Request
- [Arguments] ${uri} &{kwargs}
+ [Arguments] ${uri} ${timeout}=10 &{kwargs}
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
${headers}= Create Dictionary Content-Type=application/json
set to dictionary ${kwargs} headers ${headers}
Log Request method=Put base_uri=${base_uri} args=&{kwargs}
- Initialize OpenBMC
- ${ret}= Put Request openbmc ${base_uri} &{kwargs} timeout=10
+ Initialize OpenBMC ${timeout}
+ ${ret}= Put Request openbmc ${base_uri} &{kwargs} timeout=${timeout}
Log Response ${ret}
[Return] ${ret}
OpenBMC Delete Request
- [Arguments] ${uri} &{kwargs}
+ [Arguments] ${uri} ${timeout}=10 &{kwargs}
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
Log Request method=Delete base_uri=${base_uri} args=&{kwargs}
- Initialize OpenBMC
- ${ret}= Put Request openbmc ${base_uri} &{kwargs} timeout=10
+ Initialize OpenBMC ${timeout}
+ ${ret}= Put Request openbmc ${base_uri} &{kwargs} timeout=${timeout}
Log Response ${ret}
[Return] ${ret}
Initialize OpenBMC
- Create Session openbmc ${AUTH_URI} timeout=5 max_retries=3
+ [Arguments] ${timeout}=10
+ Create Session openbmc ${AUTH_URI} timeout=${timeout} max_retries=3
${headers}= Create Dictionary Content-Type=application/json
@{credentials} = Create List ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD}
${data} = create dictionary data=@{credentials}
@@ -123,27 +124,27 @@
Log ${msg} console=True
Read Attribute
- [arguments] ${uri} ${attr}
- ${resp} = OpenBMC Get Request ${uri}/attr/${attr}
+ [arguments] ${uri} ${attr} ${timeout}=10
+ ${resp} = OpenBMC Get Request ${uri}/attr/${attr} timeout=${timeout}
${content}= To Json ${resp.content}
[return] ${content["data"]}
Write Attribute
- [Arguments] ${uri} ${attr} &{kwargs}
+ [Arguments] ${uri} ${attr} ${timeout}=10 &{kwargs}
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
- ${resp} = openbmc put request ${base_uri}/attr/${attr} &{kwargs}
+ ${resp} = openbmc put request ${base_uri}/attr/${attr} timeout=${timeout} &{kwargs}
should be equal as strings ${resp.status_code} ${HTTP_OK}
${json} = to json ${resp.content}
Read Properties
- [arguments] ${uri}
- ${resp} = OpenBMC Get Request ${uri} timeout=10
+ [arguments] ${uri} ${timeout}=10
+ ${resp} = OpenBMC Get Request ${uri} timeout=${timeout}
Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
${content}= To Json ${resp.content}
[return] ${content["data"]}
Call Method
- [arguments] ${uri} ${method} &{kwargs}
+ [arguments] ${uri} ${method} ${timeout}=10 &{kwargs}
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
- ${resp} = openbmc post request ${base_uri}/action/${method} &{kwargs}
+ ${resp} = openbmc post request ${base_uri}/action/${method} timeout=${timeout} &{kwargs}
[return] ${resp}
diff --git a/tests/test_sensors.robot b/tests/test_sensors.robot
index ebbbe78..34ad450 100644
--- a/tests/test_sensors.robot
+++ b/tests/test_sensors.robot
@@ -275,7 +275,7 @@
Setup The Suite
Open Connection And Log In
- ${resp} = Read Properties /org/openbmc/enumerate
+ ${resp} = Read Properties /org/openbmc/enumerate timeout=30
Set Suite Variable ${SYSTEM_INFO} ${resp}
log Dictionary ${resp}