[PATCH openbmc-test-automation 32/60] added files
OpenBMC Patches
openbmc-patches at stwcx.xyz
Tue Jan 12 03:49:58 AEDT 2016
From: manjunath <manjunath at localhost.localdomain>
---
.project | 17 ++++++++
.pydevproject | 7 ++++
lib/resource.txt | 12 ++++++
lib/rest_client.robot | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++
requirements.txt | 4 ++
tests/data.json | 1 +
tests/test_fan.robot | 9 +++++
tests/test_ssh.robot | 55 +++++++++++++++++++++++++
tox.ini | 32 +++++++++++++++
9 files changed, 246 insertions(+)
create mode 100644 .project
create mode 100644 .pydevproject
create mode 100644 lib/resource.txt
create mode 100644 lib/rest_client.robot
create mode 100644 requirements.txt
create mode 100755 tests/data.json
create mode 100644 tests/test_fan.robot
create mode 100644 tests/test_ssh.robot
create mode 100644 tox.ini
diff --git a/.project b/.project
new file mode 100644
index 0000000..9b83158
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>openbmc-automation</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.python.pydev.PyDevBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.python.pydev.pythonNature</nature>
+ </natures>
+</projectDescription>
diff --git a/.pydevproject b/.pydevproject
new file mode 100644
index 0000000..08ea93f
--- /dev/null
+++ b/.pydevproject
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?><?eclipse-pydev version="1.0"?><pydev_project>
+<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
+<path>/${PROJECT_DIR_NAME}</path>
+</pydev_pathproperty>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
+</pydev_project>
\ No newline at end of file
diff --git a/lib/resource.txt b/lib/resource.txt
new file mode 100644
index 0000000..5acddcf
--- /dev/null
+++ b/lib/resource.txt
@@ -0,0 +1,12 @@
+*** Settings ***
+Library Collections
+Library String
+Library RequestsLibrary.RequestsKeywords
+Library OperatingSystem
+
+*** Variables ***
+${HOST} 192.168.122.100 # openbmc ip address
+${PORT} 3000
+${AUTH_URI} http://${HOST}:${PORT}
+${USERNAME} root
+${PASSWORD} abc123
diff --git a/lib/rest_client.robot b/lib/rest_client.robot
new file mode 100644
index 0000000..1de2b77
--- /dev/null
+++ b/lib/rest_client.robot
@@ -0,0 +1,109 @@
+*** Settings ***
+Library Collections
+Library String
+Library RequestsLibrary.RequestsKeywords
+Library OperatingSystem
+
+*** Variables ***
+${HOST} 192.168.122.100 # openbmc ip address
+${DBUS_PREFIX} /bus/session
+${PORT} 3000
+${AUTH_URI} http://${HOST}:${PORT}
+${USERNAME} root
+${PASSWORD} abc123
+# Response codes
+${HTTP_CONTINUE} 100
+${HTTP_SWITCHING_PROTOCOLS} 101
+${HTTP_PROCESSING} 102
+${HTTP_OK} 200
+${HTTP_CREATED} 201
+${HTTP_ACCEPTED} 202
+${HTTP_NON_AUTHORITATIVE_INFORMATION} 203
+${HTTP_NO_CONTENT} 204
+${HTTP_RESET_CONTENT} 205
+${HTTP_PARTIAL_CONTENT} 206
+${HTTP_MULTI_STATUS} 207
+${HTTP_IM_USED} 226
+${HTTP_MULTIPLE_CHOICES} 300
+${HTTP_MOVED_PERMANENTLY} 301
+${HTTP_FOUND} 302
+${HTTP_SEE_OTHER} 303
+${HTTP_NOT_MODIFIED} 304
+${HTTP_USE_PROXY} 305
+${HTTP_TEMPORARY_REDIRECT} 307
+${HTTP_BAD_REQUEST} 400
+${HTTP_UNAUTHORIZED} 401
+${HTTP_PAYMENT_REQUIRED} 402
+${HTTP_FORBIDDEN} 403
+${HTTP_NOT_FOUND} 404
+${HTTP_METHOD_NOT_ALLOWED} 405
+${HTTP_NOT_ACCEPTABLE} 406
+${HTTP_PROXY_AUTHENTICATION_REQUIRED} 407
+${HTTP_REQUEST_TIMEOUT} 408
+${HTTP_CONFLICT} 409
+${HTTP_GONE} 410
+${HTTP_LENGTH_REQUIRED} 411
+${HTTP_PRECONDITION_FAILED} 412
+${HTTP_REQUEST_ENTITY_TOO_LARGE} 413
+${HTTP_REQUEST_URI_TOO_LONG} 414
+${HTTP_UNSUPPORTED_MEDIA_TYPE} 415
+${HTTP_REQUESTED_RANGE_NOT_SATISFIABLE} 416
+${HTTP_EXPECTATION_FAILED} 417
+${HTTP_UNPROCESSABLE_ENTITY} 422
+${HTTP_LOCKED} 423
+${HTTP_FAILED_DEPENDENCY} 424
+${HTTP_UPGRADE_REQUIRED} 426
+${HTTP_INTERNAL_SERVER_ERROR} 500
+${HTTP_NOT_IMPLEMENTED} 501
+${HTTP_BAD_GATEWAY} 502
+${HTTP_SERVICE_UNAVAILABLE} 503
+${HTTP_GATEWAY_TIMEOUT} 504
+${HTTP_HTTP_VERSION_NOT_SUPPORTED} 505
+${HTTP_INSUFFICIENT_STORAGE} 507
+${HTTP_NOT_EXTENDED} 510
+
+*** Keywords ***
+OpenBMC Get Request
+ [Arguments] ${uri} &{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}
+ Log Response ${ret}
+ [Return] ${ret}
+
+OpenBMC Post Request
+ [Arguments] ${uri} &{kwargs}
+ ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
+ Log Request method=Post base_uri=${base_uri} args=&{kwargs}
+ Initialize OpenBMC
+ ${ret}= Post Request openbmc ${base_uri} &{kwargs}
+ Log Response ${ret}
+ [Return] ${ret}
+
+OpenBMC Put Request
+ [Arguments] ${uri} &{kwargs}
+ ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
+ Log Request method=Put base_uri=${base_uri} args=&{kwargs}
+ Initialize OpenBMC
+ ${ret}= Put Request openbmc ${base_uri} &{kwargs}
+ Log Response ${ret}
+ [Return] ${ret}
+
+Initialize OpenBMC
+ Create Session openbmc ${AUTH_URI}
+
+Log Request
+ [Arguments] &{kwargs}
+ ${msg}= Catenate SEPARATOR= URI: ${AUTH_URI} ${kwargs["base_uri"]} , method:
+ ... ${kwargs["method"]} , args: ${kwargs["args"]}
+ Logging ${msg} console=True
+
+Log Response
+ [Arguments] ${resp}
+ ${msg}= Catenate SEPARATOR= Response code: ${resp.status_code} , Content: ${resp.content}
+ Logging ${msg} console=True
+
+Logging
+ [Arguments] ${msg} ${console}=default False
+ Log ${msg} console=True
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..8434d52
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,4 @@
+robotframework
+requests
+robotframework-requests
+robotframework-sshlibrary
\ No newline at end of file
diff --git a/tests/data.json b/tests/data.json
new file mode 100755
index 0000000..7bfd886
--- /dev/null
+++ b/tests/data.json
@@ -0,0 +1 @@
+{"two": 2, "one": 1}
diff --git a/tests/test_fan.robot b/tests/test_fan.robot
new file mode 100644
index 0000000..61255e6
--- /dev/null
+++ b/tests/test_fan.robot
@@ -0,0 +1,9 @@
+*** Settings ***
+Documentation This testsuite is for testing fan interface for openbmc
+Suite Teardown Delete All Sessions
+Resource ../lib/rest_client.robot
+
+*** Test Cases ***
+List all the fans
+ ${resp} = OpenBMC Get Request /org.openbmc.control.Fan/
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
diff --git a/tests/test_ssh.robot b/tests/test_ssh.robot
new file mode 100644
index 0000000..0801d8a
--- /dev/null
+++ b/tests/test_ssh.robot
@@ -0,0 +1,55 @@
+*** Settings ***
+Documentation This example demonstrates executing commands on a remote machine
+... and getting their output and the return code.
+...
+... Notice how connections are handled as part of the suite setup and
+... teardown. This saves some time when executing several test cases.
+Suite Setup Open Connection And Log In
+Suite Teardown Close All Connections
+Library SSHLibrary
+
+*** Variables ***
+${HOST} 192.168.122.100
+${USERNAME} manjunath
+${PASSWORD} passw0rd
+
+*** Test Cases ***
+Execute Command And Verify Output
+ [Documentation] Execute Command can be used to ran commands on the remote machine.
+ ... The keyword returns the standard output by default.
+ ${output}= Execute Command echo Hello SSHLibrary!
+ Should Be Equal ${output} Hello SSHLibrary!
+
+Execute Command And Verify Return Code
+ [Documentation] Often getting the return code of the command is enough.
+ ... This behaviour can be adjusted as Execute Command arguments.
+ ${rc}= Execute Command echo Success guaranteed. return_stdout=False return_rc=True
+ Should Be Equal ${rc} ${0}
+
+Executing Commands In An Interactive Session
+ [Documentation] Execute Command always executes the command in a new shell.
+ ... This means that changes to the environment are not persisted
+ ... between subsequent Execute Command keyword calls.
+ ... Write and Read Until variants can be used to operate in the same shell.
+ Write cd ..
+ Write echo Hello from the parent directory!
+ ${output}= Read Until directory!
+ Should End With ${output} Hello from the parent directory!
+
+List all the files
+ [Documentation] List all the files in the remote machine
+ ${output} ${stderr} ${rc}= Execute Command ls return_stderr=True return_rc=True
+ ${msg}= Catenate output:${output} stderr:${stderr} rc:${rc}
+ Log To Console ${msg}
+
+File Not Found
+ [Documentation] This testcase is for testing ls command with non existing file
+ ${output} ${stderr} ${rc}= Execute Command ls file_doesnotexist.txt return_stderr=True return_rc=True
+ ${msg}= Catenate output:${output} stderr:${stderr} rc:${rc}
+ Should Be Equal ${rc} ${2}
+ Should Contain ${stderr} No such file or directory
+
+*** Keywords ***
+Open Connection And Log In
+ Open Connection ${HOST}
+ Login ${USERNAME} ${PASSWORD}
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..fc08416
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,32 @@
+[tox]
+skipsdist = True
+
+[openbmcenv]
+sitepackages = False
+setenv = VIRTUAL_ENV={envdir}
+deps = setuptools
+ -r{toxinidir}/requirements.txt
+
+[testenv]
+install_command = pip install -U {opts} {packages}
+deps = -r{toxinidir}/requirements.txt
+commands =
+ python -m robot.run {posargs}
+
+[testenv:full]
+install_command = pip install -U {opts} {packages}
+deps = -r{toxinidir}/requirements.txt
+commands =
+ python -m robot.run .
+
+[testenv:tests]
+install_command = pip install -U {opts} {packages}
+deps = -r{toxinidir}/requirements.txt
+commands =
+ python -m robot.run tests
+
+[testenv:custom]
+install_command = pip install -U {opts} {packages}
+deps = -r{toxinidir}/requirements.txt
+commands =
+ python -m robot.run {posargs}
\ No newline at end of file
--
2.6.4
More information about the openbmc
mailing list