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 <gary.i.wu@huawei.com>
diff --git a/tests/holmes/testcase/CommonKeywords/HttpRequest.robot b/tests/holmes/testcase/CommonKeywords/HttpRequest.robot
new file mode 100644
index 0000000..45bec5e
--- /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 0000000..aac8676
--- /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 0000000..5a8e811
--- /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 0000000..71354d3
--- /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 0000000..a69b32d
--- /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 0000000..3ce4be4
--- /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 0000000..55e57ec
--- /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 0000000..be73842
--- /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 0000000..e69de29
--- /dev/null
+++ b/tests/holmes/testcase/RuleMgt/__init__.txt