Add CSITs for vCPE, vDNS, and vFW policies

Runs xacml and drools, but does not currently run api or pap.
PAP actions are simulated by injecting messages onto the dmaap
topic read by xacml-pdp and drools-pdp.
All other systems (e.g., dmaap, aai) are simulated using
policy-models-simulators.

Issue-ID: POLICY-2491
Change-Id: Ic05e3a6514e84040f5a965aa8d2cac9ed2e9abc2
Signed-off-by: Jim Hahn <jrh3@att.com>
diff --git a/tests/policy/drools-applications/drools-applications-test.robot b/tests/policy/drools-applications/drools-applications-test.robot
index c3586cf..c5c8a79 100644
--- a/tests/policy/drools-applications/drools-applications-test.robot
+++ b/tests/policy/drools-applications/drools-applications-test.robot
@@ -1,40 +1,187 @@
 *** Settings ***
 Library     Collections
+Library     String
 Library     RequestsLibrary
 Library     OperatingSystem
+Library     Process
 Library     json
 
 *** Test Cases ***
 Alive
-     [Documentation]    Runs Policy PDP Alive Check
-     ${auth}=    Create List    demo@people.osaaf.org    demo123456!
-     Log    Creating session https://${POLICY_DROOLS_IP}:9696
-     ${session}=    Create Session      policy  https://${POLICY_DROOLS_IP}:9696   auth=${auth}
-     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
-     ${resp}=   Get Request     policy  /policy/pdp/engine     headers=${headers}
-     Log    Received response from policy ${resp.text}
-     Should Be Equal As Strings    ${resp.status_code}     200
-     Should Be Equal As Strings    ${resp.json()['alive']}  True
+    [Documentation]    Runs Policy PDP Alive Check
+    ${auth}=    Create List    demo@people.osaaf.org    demo123456!
+    Log    Creating session https://${DROOLS_IP}:9696
+    ${session}=    Create Session      policy  https://${DROOLS_IP}:9696   auth=${auth}
+    ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
+    ${resp}=   Get Request     policy  /policy/pdp/engine     headers=${headers}
+    Log    Received response from policy ${resp.text}
+    Should Be Equal As Strings    ${resp.status_code}     200
+    Should Be Equal As Strings    ${resp.json()['alive']}  True
 
 Healthcheck
-     [Documentation]    Runs Policy PDP-D Health check
-     ${auth}=    Create List    demo@people.osaaf.org    demo123456!
-     Log    Creating session https://${POLICY_DROOLS_IP}:6969/healthcheck
-     ${session}=    Create Session      policy  https://${POLICY_DROOLS_IP}:6969   auth=${auth}
-     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
-     ${resp}=   Get Request     policy  /healthcheck     headers=${headers}
-     Log    Received response from policy ${resp.text}
-     Should Be Equal As Strings    ${resp.status_code}     200
-     Should Be Equal As Strings    ${resp.json()['healthy']}  True
+    [Documentation]    Runs Policy PDP-D Health check
+    ${auth}=    Create List    demo@people.osaaf.org    demo123456!
+    Log    Creating session https://${DROOLS_IP}:6969/healthcheck
+    ${session}=    Create Session      policy  https://${DROOLS_IP}:6969   auth=${auth}
+    ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
+    ${resp}=   Get Request     policy  /healthcheck     headers=${headers}
+    Log    Received response from policy ${resp.text}
+    Should Be Equal As Strings    ${resp.status_code}     200
+    Should Be Equal As Strings    ${resp.json()['healthy']}  True
 
-Frankfurt
-     [Documentation]    Checks frankfurt controller is up
-     ${auth}=    Create List    demo@people.osaaf.org    demo123456!
-     Log    Creating session https://${POLICY_DROOLS_IP}:9696
-     ${session}=    Create Session      policy  https://${POLICY_DROOLS_IP}:9696   auth=${auth}
-     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
-     ${resp}=   Get Request     policy  /policy/pdp/engine/controllers/frankfurt/drools/facts     headers=${headers}
-     Log    Received response from policy ${resp.text}
-     Should Be Equal As Strings    ${resp.status_code}     200
-     Should Be Equal As Strings    ${resp.json()['frankfurt']}  0
+Controller
+    [Documentation]    Checks controller is up
+    ${auth}=    Create List    demo@people.osaaf.org    demo123456!
+    Log    Creating session https://${DROOLS_IP}:9696
+    ${session}=    Create Session      policy  https://${DROOLS_IP}:9696   auth=${auth}
+    ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
+    ${resp}=   Get Request     policy  /policy/pdp/engine/controllers/frankfurt/drools/facts     headers=${headers}
+    Log    Received response from policy ${resp.text}
+    Should Be Equal As Strings    ${resp.status_code}     200
+    Should Be Equal As Strings    ${resp.json()['frankfurt']}  0
 
+MakeTopics
+    [Documentation]    Creates the Policy topics
+    ${result}=     Run Process        ${SCR2}/make_topic.sh     POLICY-PDP-PAP
+    Should Be Equal As Integers        ${result.rc}    0
+    ${result}=     Run Process        ${SCR2}/make_topic.sh     POLICY-CL-MGT
+    Should Be Equal As Integers        ${result.rc}    0
+
+PolicyActivate
+    [Documentation]    Activates the Policies
+    ${result}=     Run Process        ${SCR2}/manage.sh     ${SCR2}/policies.json
+    Should Be Equal As Integers        ${result.rc}    0
+    ${result}=     Run Process        ${SCR2}/manage.sh     ${SCR2}/activate.drools.json
+    Should Be Equal As Integers        ${result.rc}    0
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-PDP-PAP
+    ...            responseTo    drools    ACTIVE
+    Log    Received status ${result.stdout}
+    Sleep    3s
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    operational.restart
+    Should Contain    ${result.stdout}    operational.scale.up
+    Should Contain    ${result.stdout}    operational.modifyconfig
+
+VcpeExecute
+    [Documentation]    Executes VCPE Policy
+    ${result}=     Run Process        ${SCR2}/onset.sh     ${SCR2}/vcpeOnset.json
+    Should Be Equal As Integers        ${result.rc}    0
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    ACTIVE
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION
+    Should Contain    ${result.stdout}    Sending guard query for APPC Restart
+    Should Be Equal As Integers        ${result.rc}    0
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION
+    Should Contain    ${result.stdout}    Guard result for APPC Restart is Permit
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION
+    Should Contain    ${result.stdout}    actor=APPC,operation=Restart
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION: SUCCESS
+    Should Contain    ${result.stdout}    actor=APPC,operation=Restart
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    FINAL: SUCCESS
+    Should Contain    ${result.stdout}    APPC
+    Should Contain    ${result.stdout}    Restart
+
+VdnsExecute
+    [Documentation]    Executes VDNS Policy
+    ${result}=     Run Process        ${SCR2}/onset.sh     ${SCR2}/vdnsOnset.json
+    Should Be Equal As Integers        ${result.rc}    0
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    ACTIVE
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION
+    Should Contain    ${result.stdout}    Sending guard query for SO VF Module Create
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION
+    Should Contain    ${result.stdout}    Guard result for SO VF Module Create is Permit
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION
+    Should Contain    ${result.stdout}    actor=SO,operation=VF Module Create
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION: SUCCESS
+    Should Contain    ${result.stdout}    actor=SO,operation=VF Module Create
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    FINAL: SUCCESS
+    Should Contain    ${result.stdout}    SO
+    Should Contain    ${result.stdout}    VF Module Create
+
+VfwExecute
+    [Documentation]    Executes VFW Policy
+    ${result}=     Run Process        ${SCR2}/onset.sh     ${SCR2}/vfwOnset.json
+    Should Be Equal As Integers        ${result.rc}    0
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    ACTIVE
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION
+    Should Contain    ${result.stdout}    Sending guard query for APPC ModifyConfig
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION
+    Should Contain    ${result.stdout}    Guard result for APPC ModifyConfig is Permit
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION
+    Should Contain    ${result.stdout}    actor=APPC,operation=ModifyConfig
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    OPERATION: SUCCESS
+    Should Contain    ${result.stdout}    actor=APPC,operation=ModifyConfig
+    ${result}=     Run Process        ${SCR2}/wait_topic.sh     POLICY-CL-MGT
+    ...            ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a
+    Log    Received notification ${result.stdout}
+    Should Be Equal As Integers        ${result.rc}    0
+    Should Contain    ${result.stdout}    FINAL: SUCCESS
+    Should Contain    ${result.stdout}    APPC
+    Should Contain    ${result.stdout}    ModifyConfig