From 9abb61ca2cea1907cab2cec312d6dca6e53a93cd Mon Sep 17 00:00:00 2001 From: Gary Wu Date: Thu, 27 Sep 2018 10:38:50 -0700 Subject: Move CSIT to integration/csit repo To facilite branching of CSIT tests, all CSIT test code and scripts are relocated to the integration/csit repo. Change-Id: I1e4c0eff44691f73f8098b3c52764107f6b8b8df Issue-ID: INT-671 Signed-off-by: Gary Wu --- .../testcase/CommonKeywords/HttpRequest.robot | 37 ++++++ .../testcase/EngineMgt/Engine-Keywords.robot | 34 ++++++ tests/holmes/testcase/EngineMgt/Engine-Mgt.robot | 41 +++++++ tests/holmes/testcase/EngineMgt/EngineAddr.robot | 3 + tests/holmes/testcase/EngineMgt/__init__.txt | 2 + tests/holmes/testcase/RuleMgt/Rule-Keywords.robot | 80 +++++++++++++ tests/holmes/testcase/RuleMgt/Rule-Mgt.robot | 127 +++++++++++++++++++++ tests/holmes/testcase/RuleMgt/RuleAddr.robot | 3 + tests/holmes/testcase/RuleMgt/__init__.txt | 0 9 files changed, 327 insertions(+) create mode 100644 tests/holmes/testcase/CommonKeywords/HttpRequest.robot create mode 100644 tests/holmes/testcase/EngineMgt/Engine-Keywords.robot create mode 100644 tests/holmes/testcase/EngineMgt/Engine-Mgt.robot create mode 100644 tests/holmes/testcase/EngineMgt/EngineAddr.robot create mode 100644 tests/holmes/testcase/EngineMgt/__init__.txt create mode 100644 tests/holmes/testcase/RuleMgt/Rule-Keywords.robot create mode 100644 tests/holmes/testcase/RuleMgt/Rule-Mgt.robot create mode 100644 tests/holmes/testcase/RuleMgt/RuleAddr.robot create mode 100644 tests/holmes/testcase/RuleMgt/__init__.txt (limited to 'tests/holmes/testcase') diff --git a/tests/holmes/testcase/CommonKeywords/HttpRequest.robot b/tests/holmes/testcase/CommonKeywords/HttpRequest.robot new file mode 100644 index 00000000..45bec5ef --- /dev/null +++ b/tests/holmes/testcase/CommonKeywords/HttpRequest.robot @@ -0,0 +1,37 @@ +*** Settings *** +Library Collections +Library RequestsLibrary +Resource ../RuleMgt/Rule-Keywords.robot + +*** Keywords *** +httpPut + [Arguments] ${restHost} ${restUrl} ${data} + ${headers} create dictionary Content-Type=application/json;charset=utf-8 Accept=application/json + create session microservices ${restHost} ${headers} + log ${data} + ${putResponse} put request microservices ${restUrl} ${data} \ ${EMPTY} + ... ${headers} + log ${putResponse} + [Return] ${putResponse} + +httpGet + [Arguments] ${restHost} ${restUrl} + create session microservices ${restHost} + ${getResponse} get request microservices ${restUrl} + [Return] ${getResponse} + +httpPost + [Arguments] ${restHost} ${restUrl} ${data} + ${headers} create dictionary Content-Type=application/json Accept=application/json + create session microservices ${restHost} ${headers} + log ${data} + ${postResponse} post request microservices ${restUrl} ${data} + Comment log ${postResponse.content} + [Return] ${postResponse} + +httpDelete + [Arguments] ${restHost} ${restUrl} + ${headers} create dictionary Content-Type=application/json Accept=application/json + create session microservices ${restHost} ${headers} + ${deleteResponse} delete request microservices ${restUrl} + [Return] ${deleteResponse} diff --git a/tests/holmes/testcase/EngineMgt/Engine-Keywords.robot b/tests/holmes/testcase/EngineMgt/Engine-Keywords.robot new file mode 100644 index 00000000..aac86767 --- /dev/null +++ b/tests/holmes/testcase/EngineMgt/Engine-Keywords.robot @@ -0,0 +1,34 @@ +*** Settings *** +Library Collections +Library RequestsLibrary +Resource ../CommonKeywords/HttpRequest.robot +Resource EngineAddr.robot + +*** Keywords *** +deleteEngineRule + [Arguments] ${packageName} ${codeFlag}=1 + [Documentation] ${packageName} :The data type is string! + ${headers} create dictionary Content-Type=application/json + create session microservices ${engineHost} ${headers} + ${deleteUrl} set variable ${engineUrl}/${packageName} + ${deleteResponse} delete request microservices ${deleteUrl} + log ${deleteResponse.content} + run keyword if ${codeFlag}==1 Should be equal as strings ${deleteResponse.status_code} 200 + run keyword if ${codeFlag}!=1 Should be equal as strings ${deleteResponse.status_code} 499 + [Return] ${deleteResponse} + +verifyEngineRule + [Arguments] ${checkContent} ${codeFlag}=1 + ${response} httpPost ${engineHost} ${engineUrl} ${checkContent} + log ${response.content} + run keyword if ${codeFlag}==1 Should be equal as strings ${response.status_code} 200 + run keyword if ${codeFlag}!=1 Should be equal as strings ${response.status_code} 499 + [Return] ${response} + +deployEngineRule + [Arguments] ${jsonParams} ${codeFlag}=1 + ${response} httpPut ${engineHost} ${engineUrl} ${jsonParams} + log ${response.content} + run keyword if ${codeFlag}==1 Should be equal as strings ${response.status_code} 200 + run keyword if ${codeFlag}!=1 Should be equal as strings ${response.status_code} 499 + [Return] ${response} diff --git a/tests/holmes/testcase/EngineMgt/Engine-Mgt.robot b/tests/holmes/testcase/EngineMgt/Engine-Mgt.robot new file mode 100644 index 00000000..5a8e8114 --- /dev/null +++ b/tests/holmes/testcase/EngineMgt/Engine-Mgt.robot @@ -0,0 +1,41 @@ +*** Settings *** +Suite Setup +Suite Teardown Delete All Sessions +Test Teardown +Test Timeout +Library demjson +Resource Engine-Keywords.robot +Resource ../RuleMgt/Rule-Keywords.robot + +*** Test Cases *** +verify_invalid_rule + [Documentation] Verify a rule with invalid contents. + ${dic1} create dictionary content=123123123 + ${Jsonparam} encode ${dic1} + verifyEngineRule ${Jsonparam} -1 + +verify_valid_rule + [Documentation] Verify a rule with valid contents. + ${dic2} create dictionary content=package rule03080001 + ${Jsonparam} encode ${dic2} + verifyEngineRule ${Jsonparam} + +deploy_invalid_rule + [Documentation] Add a rule with invalid contents to the engine. + ${dic3} create dictionary content=789789789 engineId="" + ${Jsonparam} encode ${dic3} + ${response} deployEngineRule ${Jsonparam} -1 + +deploy_valid_rule + [Documentation] Add a rule with valid contents to the engine. + ${dic4} create dictionary content=package rule03080002;\n\nimport java.util.Locale; engineId="" loopControlName=test + ${Jsonparam} encode ${dic4} + ${response} deployEngineRule ${Jsonparam} + +delete_existing_rule + [Documentation] Delete an existing rule using an existing package ID from the engine. + deleteEngineRule rule03080002 + +delete_non_existing_rule + [Documentation] Delete an existing rule using a non-existing package ID from the engine. + deleteEngineRule rule03080002 -1 diff --git a/tests/holmes/testcase/EngineMgt/EngineAddr.robot b/tests/holmes/testcase/EngineMgt/EngineAddr.robot new file mode 100644 index 00000000..71354d33 --- /dev/null +++ b/tests/holmes/testcase/EngineMgt/EngineAddr.robot @@ -0,0 +1,3 @@ +*** Variables *** +${engineHost} http://${MSB_IP} +${engineUrl} /api/holmes-engine-mgmt/v1/rule diff --git a/tests/holmes/testcase/EngineMgt/__init__.txt b/tests/holmes/testcase/EngineMgt/__init__.txt new file mode 100644 index 00000000..a69b32dc --- /dev/null +++ b/tests/holmes/testcase/EngineMgt/__init__.txt @@ -0,0 +1,2 @@ +*** Settings *** +Suite Setup diff --git a/tests/holmes/testcase/RuleMgt/Rule-Keywords.robot b/tests/holmes/testcase/RuleMgt/Rule-Keywords.robot new file mode 100644 index 00000000..3ce4be48 --- /dev/null +++ b/tests/holmes/testcase/RuleMgt/Rule-Keywords.robot @@ -0,0 +1,80 @@ +*** Settings *** +Library RequestsLibrary +Library Collections +Resource RuleAddr.robot +Resource ../CommonKeywords/HttpRequest.robot + +*** Keywords *** +prepareRules + ${rule1} create dictionary rulename=ying001 content=package rule0001 enabled=1 description=this is first description + ${rule2} create dictionary rulename=ying002 content=package rule0002 enabled=0 description=this is seconddescription + ${rule3} create dictionary rulename=ying003 content=package rule0003 enabled=1 description=this is third description + @{rulesList} create list ${rule1} ${rule2} ${rule3} + : FOR ${row} IN @{rulesList} + \ ${rulejson} encode ${row} + \ log ${rulejson} + \ createRule ${rulejson} + +ruleMgtSuiteVariable + ${RULEDIC} create dictionary rulename=gy2017001 description=create a new rule! content=package rule2017001 enabled=1 + set suite variable ${RULEDIC} + +queryConditionRule + [Arguments] ${queryParam} ${codeFlag}=1 + [Documentation] ${queryParam} : The data type is Json . + create session microservices ${ruleMgtHost} + Comment ${param} set variable queryrequest\=${queryParam} + ${getResponse} get request microservices ${ruleMgtUrl}?queryrequest\=${queryParam} + log ${getResponse.content} + run keyword if ${codeFlag}==1 Should be equal as strings ${getResponse.status_code} 200 + run keyword if ${codeFlag}!=1 Should be equal as strings ${getResponse.status_code} 499 + [Return] ${getResponse} + +traversalRuleAttribute + [Arguments] ${responseJsonData} ${expectAttrDic} + [Documentation] ${expectAttrDic} : The data type is dictionary; + ... key is the name of the attribute, value is the expected value of the attribute. + @{responseRules} Get From Dictionary ${responseJsonData} correlationRules + : FOR ${rule} IN @{responseRules} + \ log ${rule} + \ verifyRuleAttribute ${rule} ${expectAttrDic} + +verifyRuleAttribute + [Arguments] ${singleRule} ${expectAttrDic} + [Documentation] ${expectAttrDic} : The data type is dictionary; key is the name of the attributes to be traversaled, value is the expected value of the attributes. + log ${singleRule} + log ${expectAttrDic} + @{attrsKeys} get dictionary keys ${expectAttrDic} + : FOR ${attr} IN @{attrsKeys} + \ log ${attr} + \ ${actualResponse} get from dictionary ${singleRule} ${attr} + \ ${expectResponse} get from dictionary ${expectAttrDic} ${attr} + \ Comment log ${actualResponse} + \ Comment log ${expectResponse} + Should be equal as strings ${actualResponse} ${expectResponse} + +createRule + [Arguments] ${jsonParams} ${codeFlag}=1 + [Documentation] ${codeFlag} : The data type is string, defult value is 1, indicating that the case need to assert thatthe statues code is 200. + ... Then other values indicating that the case need to assert that the statues code is 499. + ${response} httpPut ${ruleMgtHost} ${ruleMgtUrl} ${jsonParams} + log ${response.content} + run keyword if ${codeFlag}==1 Should be equal as strings ${response.status_code} 200 + run keyword if ${codeFlag}!=1 Should be equal as strings ${response.status_code} 499 + [Return] ${response} + +modifyRule + [Arguments] ${jsonParams} ${codeFlag}=1 + ${response} httpPost ${ruleMgtHost} ${ruleMgtUrl} ${jsonParams} + log ${response.content} + run keyword if ${codeFlag}==1 Should be equal as strings ${response.status_code} 200 + run keyword if ${codeFlag}!=1 Should be equal as strings ${response.status_code} 499 + [Return] ${response} + +deleteRule + [Arguments] ${ruleId} ${codeFlag}=1 + ${response} httpDelete ${ruleMgtHost} ${ruleMgtUrl}/${ruleId} + log ${response.content} + run keyword if ${codeFlag}==1 Should be equal as strings ${response.status_code} 200 + run keyword if ${codeFlag}!=1 Should be equal as strings ${response.status_code} 499 + [Return] ${response} diff --git a/tests/holmes/testcase/RuleMgt/Rule-Mgt.robot b/tests/holmes/testcase/RuleMgt/Rule-Mgt.robot new file mode 100644 index 00000000..55e57ecd --- /dev/null +++ b/tests/holmes/testcase/RuleMgt/Rule-Mgt.robot @@ -0,0 +1,127 @@ +*** Settings *** +Suite Setup +Suite Teardown Delete All Sessions +Test Timeout +Library demjson +Resource Rule-Keywords.robot + +*** Test Cases *** +add_valid_rule + [Documentation] Add a valid rule. + ${dict2} create dictionary ruleName=youbowu0314 description=create a new rule! content=package ruleqwertasd;\n\nimport java.util.Locale; enabled=1 loopControlName=closedControlLoop + ${jsonParams} encode ${dict2} + ${response} createRule ${jsonParams} + ${respJson} to json ${response.content} + ${RULEID} get from dictionary ${respJson} ruleId + set global variable ${RULEID} + log ${RULEID} + +add_invalid_content_rule + [Documentation] Add an invalid rule of which the content is incorrect!! + ${dict1} create dictionary ruleName=gy0307001 description=create a new rule! content=123123123 enabled=1 + ${jsonParams} encode ${dict1} + ${response} createRule ${jsonParams} -1 + log ${response.content} + +add_deficient_rule + [Documentation] Add an invalid rule of which some mandatory fields are missing.(rulename) + ${dict3} create dictionary description=create a valid rule! content=package rule2017 enabled=1 + ${jsonParams} encode ${dict3} + ${response} createRule ${jsonParams} -1 + +query_rule_with_existing_id + [Documentation] Query a rule with an existing ID. + should not be empty ${RULEID} + ${response} queryConditionRule {"ruleid":"${RULEID}"} + ${respJson} to json ${response.content} + ${count} get from dictionary ${respJson} totalCount + run keyword if ${count}!=1 fail Can't find the rule with the specified ruleid. + +query_rule_with_non_existing_id + [Documentation] Query a rule with a non-existing ID. + ${response} queryConditionRule {"ruleId":"invalidid"} + ${respJson} to json ${response.content} + ${count} get from dictionary ${respJson} totalCount + run keyword if ${count}!=0 fail + +query_rule_with_partial_existing_name + [Documentation] Query rules with (a part of) an existing name. + ${response} queryConditionRule {"ruleName":"youbowu"} + ${respJson} to json ${response.content} + ${count} get from dictionary ${respJson} totalCount + run keyword if ${count}<1 fail Can't find the rule with (a part of) an existing name + +query_rule_with_partial_non_existing_name + [Documentation] Query rules with (a part of) a non-existing name. + ${response} queryConditionRule {"ruleName":"zte2017"} + ${respJson} to json ${response.content} + ${count} get from dictionary ${respJson} totalCount + run keyword if ${count}!=0 fail + +query_rule_with_vaild_status + [Documentation] Query rules with a valid status. + ${response} queryConditionRule {"enabled":1} + ${respJson} to json ${response.content} + ${count} get from dictionary ${respJson} totalCount + run keyword if ${count}<0 fail Can't find the rule with the status valued 1. + +query_rule_with_invalid_status + [Documentation] Query rules with an invalid status. + ${response} queryConditionRule {"enabled":99} + ${respJson} to json ${response.content} + ${count} get from dictionary ${respJson} totalCount + run keyword if ${count}!=0 fail + +query_rule_with_empty_status + [Documentation] Query rules with the status left empty. + ${response} queryConditionRule {"enabled":null} + ${respJson} to json ${response.content} + ${count} get from dictionary ${respJson} totalCount + run keyword if ${count}!=0 fail + +query_rule_with_combinational_fields + [Documentation] Query rules using the combination of different fields. + ${dic} create dictionary ruleName=youbowu0314 enabled=1 + ${paramJson} encode ${dic} + ${response} queryConditionRule ${paramJson} + ${respJson} to json ${response.content} + ${count} get from dictionary ${respJson} totalCount + run keyword if ${count}<1 fail Can't find the rules with the combination of different fields. ELSE traversalRuleAttribute ${respJson} + ... ${dic} + +modify_rule_with_status + [Documentation] modify the rule with a valid status. + ${dic} create dictionary ruleId=${RULEID} enabled=0 content=package rule03140002 loopControlName=closedControlLoop + ${modifyParam} encode ${dic} + ${modifyResp} modifyRule ${modifyParam} + ${response} queryConditionRule {"ruleId":"${RULEID}"} + ${respJson} to json ${response.content} + ${count} get from dictionary ${respJson} totalCount + run keyword if ${count}!=1 fail query rule fails! (can't find the rule modified!) ELSE traversalRuleAttribute ${respJson} + ... ${dic} + +modify_rule_with_invalid_status + [Documentation] modify the rule with an invalid status. + ${dic} create dictionary ruleId=${RULEID} enabled=88 content=package rule03140002 + ${modifyParam} encode ${dic} + ${modifyResponse} modifyRule ${modifyParam} -1 + +modify_rule_with_description + [Documentation] modify the description of the rule with the new string. + ${dic} create dictionary ruleId=${RULEID} description=now, i modifying the description of the rule. content=package rule03140002 loopControlName=closedControlLoop + ${modifyParam} encode ${dic} + ${modifyResp} modifyRule ${modifyParam} + ${response} queryConditionRule {"ruleId":'${RULEID}'} 1 + ${respJson} to json ${response.content} + ${count} get from dictionary ${respJson} totalCount + run keyword if ${count}!=1 fail query rule fails! ELSE traversalRuleAttribute ${respJson} + ... ${dic} + +delete_existing_rule + [Documentation] Delete an existing rule. + should not be empty ${RULEID} + deleteRule ${RULEID} + +delete_non_existing_rule + [Documentation] Delete a non-existing rule. + deleteRule ${RULEID} -1 diff --git a/tests/holmes/testcase/RuleMgt/RuleAddr.robot b/tests/holmes/testcase/RuleMgt/RuleAddr.robot new file mode 100644 index 00000000..be738420 --- /dev/null +++ b/tests/holmes/testcase/RuleMgt/RuleAddr.robot @@ -0,0 +1,3 @@ +*** Variables *** +${ruleMgtHost} http://${MSB_IP} +${ruleMgtUrl} /api/holmes-rule-mgmt/v1/rule diff --git a/tests/holmes/testcase/RuleMgt/__init__.txt b/tests/holmes/testcase/RuleMgt/__init__.txt new file mode 100644 index 00000000..e69de29b -- cgit 1.2.3-korg