Update Routed RPC tests to be runnable in CI
[integration/test.git] / test / csit / suites / controller / Clustering_Routedrpc / 023_routed_rpc_crud_test.robot
index c7eb7815bb84793ebb5fd3a0bfcb705d1d196e38..b63b11d821e844dbe82660888bb06dde269d11b5 100644 (file)
@@ -6,55 +6,123 @@ Library           ../../../libraries/Common.py
 Library           ../../../libraries/CrudLibrary.py
 Library           ../../../libraries/SettingsLibrary.py
 Library           ../../../libraries/UtilLibrary.py
+Resource          ../../../libraries/ClusterKeywords.robot
 Variables         ../../../variables/Variables.py
 
 *** Variables ***
 @{controllers}    ${CONTROLLER}    ${CONTROLLER1}    ${CONTROLLER2}
+${SHARD_CAR_NAME}    shard-car-config
+${SHARD_PEOPLE_NAME}    shard-people-config
+${SHARD_CAR_PERSON_NAME}    shard-car-people-config
+${KARAF_HOME}     ${WORKSPACE}/${BUNDLEFOLDER}
 
 *** Test Cases ***
+Delete all entries from shards
+    [Documentation]    Make sure the shards are cleared for testing.
+    : FOR    ${ip}    IN    @{controllers}
+    \    Delete All Cars And Verify    ${ip}
+    : FOR    ${ip}    IN    @{controllers}
+    \    Delete All People And Verify    ${ip}
+    : FOR    ${ip}    IN    @{controllers}
+    \    Delete All Cars-Persons And Verify    ${ip}
+
+Get Car Leader And Followers
+    ${CURRENT_CAR_LEADER}    Wait For Leader To Be Found    ${SHARD_CAR_NAME}
+    Set Suite Variable    ${CURRENT_CAR_LEADER}
+    @{CAR_FOLLOWERS}    Get All Followers    ${SHARD_CAR_NAME}
+    Set Suite Variable    ${CAR_FOLLOWERS}
+
 Add cars and get cars from Leader
     [Documentation]    Add 100 cars and get added cars from Leader
-    ${resp}    InitCar    ${CONTROLLER}    ${PORT}
-    ${resp}    AddCar    ${CONTROLLER}    ${PORT}    ${100}
-    ${resp}    Getcars    ${CONTROLLER}    ${PORT}    ${0}
+    ${resp}=    InitCar    ${CURRENT_CAR_LEADER}    ${PORT}
+    ${resp}=    AddCar    ${CURRENT_CAR_LEADER}    ${PORT}    ${100}
+    ${resp}=    Getcars    ${CURRENT_CAR_LEADER}    ${PORT}    ${0}
     Should Be Equal As Strings    ${resp.status_code}    200
     Should Contain    ${resp.content}    manufacturer1    cars not added!
 
 Add persons and get persons from Leader
     [Documentation]    Add 100 persons and get persons Note: There should be one person added first to enable rpc
-    ${resp}    AddPerson    ${CONTROLLER}    ${PORT}    ${0}
-    ${resp}    AddPerson    ${CONTROLLER}    ${PORT}    ${100}
-    ${resp}    GetPersons    ${CONTROLLER}    ${PORT}    ${0}
+    ${resp}    AddPerson    ${CURRENT_CAR_LEADER}    ${PORT}    ${0}
+    ${resp}    AddPerson    ${CURRENT_CAR_LEADER}    ${PORT}    ${100}
+    ${resp}    GetPersons    ${CURRENT_CAR_LEADER}    ${PORT}    ${0}
     Should Be Equal As Strings    ${resp.status_code}    200
     Should Contain    ${resp.content}    user5    people not added!
 
 Add car-person mapping and get car-person mapping from Follower1
     [Documentation]    Add car-person and get car-person from Leader Note: This is done to enable working of rpc
-    ${resp}    AddCarPerson    ${CONTROLLER1}    ${PORT}    ${0}
-    ${resp}    GetCarPersonMappings    ${CONTROLLER1}    ${PORT}    ${0}
+    Log    @{CAR_FOLLOWERS}[0]
+    ${resp}    AddCarPerson    @{CAR_FOLLOWERS}[0]    ${PORT}    ${0}
+    Should Be Equal As Strings    ${resp.status_code}    204
+    ${resp}    GetCarPersonMappings    @{CAR_FOLLOWERS}[0]    ${PORT}    ${0}
     Should Be Equal As Strings    ${resp.status_code}    200
     Should Contain    ${resp.content}    user0    car-person not initialized!
 
 Purchase 100 cars using Follower1
     [Documentation]    Purchase 100 cars using Follower1
-    ${resp}    BuyCar    ${CONTROLLER1}    ${PORT}    ${100}
-    ${resp}    GetCarPersonMappings    ${CONTROLLER1}    ${PORT}    ${0}
-    Should Be Equal As Strings    ${resp.status_code}    200
+    BuyCar    @{CAR_FOLLOWERS}[0]    ${PORT}    ${100}
 
-Get Cars from Leader
-    [Documentation]    Get 100 using Leader
-    ${resp}    Getcars    ${CONTROLLER}    ${PORT}    ${0}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    Should Contain    ${resp.content}    manufacturer99
+Check Contents of Leader Shards
+    [Documentation]    Check all content using Leader
+    wait until keyword succeeds    30    1    Check Cars    ${CURRENT_CAR_LEADER}    ${PORT}    100
+    wait until keyword succeeds    30    1    Check People    ${CURRENT_CAR_LEADER}    ${PORT}    100
+    wait until keyword succeeds    30    1    Check CarPeople    ${CURRENT_CAR_LEADER}    ${PORT}    100
+
+Check Contents of First Follower Shards
+    [Documentation]    Check all content using first follower
+    wait until keyword succeeds    30    1    Check Cars    @{CAR_FOLLOWERS}[0]    ${PORT}    100
+    wait until keyword succeeds    30    1    Check People    @{CAR_FOLLOWERS}[0]    ${PORT}    100
+    wait until keyword succeeds    30    1    Check CarPeople    @{CAR_FOLLOWERS}[0]    ${PORT}    100
+
+Check Contents of Second Follower Shards
+    [Documentation]    Check all content using second follower
+    wait until keyword succeeds    30    1    Check Cars    @{CAR_FOLLOWERS}[1]    ${PORT}    100
+    wait until keyword succeeds    30    1    Check People    @{CAR_FOLLOWERS}[1]    ${PORT}    100
+    wait until keyword succeeds    30    1    Check CarPeople    @{CAR_FOLLOWERS}[1]    ${PORT}    100
+
+Switch Car leader
+    [Documentation]    Stop the leader to cause a new leader to be elected
+    ${OLD_CAR_LEADER}=    Set Variable    ${CURRENT_CAR_LEADER}
+    Set Suite Variable    ${OLD_CAR_LEADER}
+    ${NEW_CAR_LEADER}    Switch Leader    ${SHARD_CAR_NAME}    ${CURRENT_CAR_LEADER}
+    Set Suite Variable    ${NEW_CAR_LEADER}
 
-Get persons from Leader
-    [Documentation]    Get 101 Persons from Leader
-    ${resp}    GetPersons    ${CONTROLLER}    ${PORT}    ${0}
+Get New Car Follower
+    [Documentation]    Find the new leader for the car shard.
+    @{CAR_FOLLOWERS}    Get All Followers    ${SHARD_CAR_NAME}
+    Set Suite Variable    ${CAR_FOLLOWERS}
+    Log    @{CAR_FOLLOWERS}[0]
+
+Overwrite cars and get cars from New Leader
+    [Documentation]    Overwrite 100 cars and get added cars from Leader
+    ${resp}=    AddCar    ${NEW_CAR_LEADER}    ${PORT}    ${100}
+    ${resp}=    Getcars    ${NEW_CAR_LEADER}    ${PORT}    ${0}
     Should Be Equal As Strings    ${resp.status_code}    200
-    Should Contain    ${resp.content}    user100
+    Should Contain    ${resp.content}    manufacturer1    cars not added!
 
-Get car-person mappings using Leader
-    [Documentation]    Get 101 car-person mappings using Leader to see 100 entry
-    ${resp}    GetCarPersonMappings    ${CONTROLLER}    ${PORT}    ${0}
+Overwrite persons and get persons from New Leader
+    [Documentation]    Overwrite 100 persons and get persons Note: There should be one person added first to enable rpc
+    ${resp}    AddPerson    ${NEW_CAR_LEADER}    ${PORT}    ${100}
+    ${resp}    GetPersons    ${NEW_CAR_LEADER}    ${PORT}    ${0}
     Should Be Equal As Strings    ${resp.status_code}    200
-    Should Contain    ${resp.content}    user100
+    Should Contain    ${resp.content}    user5    people not added!
+
+RePurchase 100 cars using New Follower1
+    [Documentation]    RePurchase 100 cars using Follower1
+    BuyCar    @{CAR_FOLLOWERS}[0]    ${PORT}    ${100}
+
+Check Contents of New Leader Shards
+    [Documentation]    Check all content using Leader
+    Log    ${NEW_CAR_LEADER}
+    wait until keyword succeeds    30    1    Check Cars    ${NEW_CAR_LEADER}    ${PORT}    100
+    wait until keyword succeeds    30    1    Check People    ${NEW_CAR_LEADER}    ${PORT}    100
+    wait until keyword succeeds    30    1    Check CarPeople    ${NEW_CAR_LEADER}    ${PORT}    100
+
+Check Contents of New First Follower Shards
+    [Documentation]    Check all content using first follower
+    wait until keyword succeeds    30    1    Check Cars    @{CAR_FOLLOWERS}[0]    ${PORT}    100
+    wait until keyword succeeds    30    1    Check People    @{CAR_FOLLOWERS}[0]    ${PORT}    100
+    wait until keyword succeeds    30    1    Check CarPeople    @{CAR_FOLLOWERS}[0]    ${PORT}    100
+
+Start Leader
+    [Documentation]    Start Leader controller
+    Start One Or More Controllers    ${OLD_CAR_LEADER}