+*** Settings ***
+Documentation This test brings down the current leader of the "car" shard and then executes CRUD operations on the new leader
+Library ../../../libraries/CrudLibrary.py
+Library ../../../libraries/UtilLibrary.py
+Library ../../../libraries/ClusterStateLibrary.py
+
+*** Variables ***
+${CAR_SHARD} shard-car-config
+${NUM_CARS} ${50}
+${NUM_ORIG_CARS} ${10}
+
+*** Test Cases ***
+Get old car leader
+ ${OLD_CAR_LEADER} GetLeader ${CAR_SHARD} ${3} ${3} ${2} ${PORT} ${MEMBER1} ${MEMBER2} ${MEMBER3}
+ Should Not Be Equal As Strings ${OLD_CAR_LEADER} None
+ Set Suite Variable ${OLD_CAR_LEADER}
+
+Delete cars on old leader
+ DeleteAllCars ${OLD_CAR_LEADER} ${PORT} ${0}
+ ${resp} Getcars ${OLD_CAR_LEADER} ${PORT} ${0}
+ Should Be Equal As Strings ${resp.status_code} 404
+
+Add original cars on old leader
+ ${resp} AddCar ${OLD_CAR_LEADER} ${PORT} ${NUM_ORIG_CARS}
+ ${resp} Getcars ${OLD_CAR_LEADER} ${PORT} ${0}
+ Should Be Equal As Strings ${resp.status_code} 200
+ :FOR ${i} IN RANGE 1 ${NUM_ORIG_CARS}
+ \ Should Contain ${resp.content} manufacturer${i}
+
+Switch car leader
+ [Documentation] stop leader and elect new leader
+ Stopcontroller ${OLD_CAR_LEADER} ${USERNAME} ${PASSWORD} ${KARAFHOME}
+ Sleep 3
+ ${NEW_CAR_LEADER} GetLeader ${CAR_SHARD} ${3} ${3} ${2} ${PORT} ${MEMBER1} ${MEMBER2} ${MEMBER3}
+ Log ${NEW_CAR_LEADER}
+ Should Not Be Equal As Strings ${NEW_CAR_LEADER} None
+ Should Not Be Equal ${OLD_CAR_LEADER} ${NEW_CAR_LEADER}
+ Set Suite Variable ${NEW_CAR_LEADER}
+
+Get original cars on new leader
+ ${resp} Getcars ${NEW_CAR_LEADER} ${PORT} ${0}
+ Should Be Equal As Strings ${resp.status_code} 200
+ :FOR ${i} IN RANGE 1 ${NUM_ORIG_CARS}
+ \ Should Contain ${resp.content} manufacturer${i}
+
+Delete cars at new leader
+ [Documentation] delete cars
+ DeleteAllCars ${NEW_CAR_LEADER} ${PORT} ${0}
+ ${resp} Getcars ${NEW_CAR_LEADER} ${PORT} ${0}
+ Should Be Equal As Strings ${resp.status_code} 404
+
+Add new cars and get cars from new leader
+ [Documentation] Add cars and get added cars from Leader
+ ${resp} AddCar ${NEW_CAR_LEADER} ${PORT} ${NUM_CARS}
+ ${resp} Getcars ${NEW_CAR_LEADER} ${PORT} ${0}
+ Should Be Equal As Strings ${resp.status_code} 200
+ :FOR ${i} IN RANGE 1 ${NUM_CARS}
+ \ Should Contain ${resp.content} manufacturer${i}
+
+Get Car Followers
+ ${CAR_FOLLOWERS} GetFollowers ${CAR_SHARD} ${3} ${3} ${1} ${PORT} ${MEMBER1} ${MEMBER2} ${MEMBER3}
+ Log ${CAR_FOLLOWERS}
+ SET SUITE VARIABLE ${CAR_FOLLOWERS}
+
+Get added cars from Follower
+ [Documentation] Get added cars using the Follower
+ ${resp} Getcars @{CAR_FOLLOWERS}[0] ${PORT} ${0}
+ Should Be Equal As Strings ${resp.status_code} 200
+ :FOR ${i} IN RANGE 1 ${NUM_CARS}
+ \ Should Contain ${resp.content} manufacturer${i}
+
+Delete cars from Follower
+ [Documentation] delete cars
+ DeleteAllCars @{CAR_FOLLOWERS}[0] ${PORT} ${0}
+ ${resp} Getcars @{CAR_FOLLOWERS}[0] ${PORT} ${0}
+ Should Be Equal As Strings ${resp.status_code} 404
+
+Add cars from follower
+ [Documentation] Add more cars using the follower
+ ${resp} AddCar @{CAR_FOLLOWERS}[0] ${PORT} ${NUM_CARS}
+ ${resp} Getcars @{CAR_FOLLOWERS}[0] ${PORT} ${0}
+ Should Be Equal As Strings ${resp.status_code} 200
+ :FOR ${i} IN RANGE 1 ${NUM_CARS}
+ \ Should Contain ${resp.content} manufacturer${i}
+
+Get added cars from new leader
+ [Documentation] Get added cars using the new leader
+ ${resp} Getcars ${NEW_CAR_LEADER} ${PORT} ${0}
+ Should Be Equal As Strings ${resp.status_code} 200
+ :FOR ${i} IN RANGE 1 ${NUM_CARS}
+ \ Should Contain ${resp.content} manufacturer${i}
+
+Restart old Car leader
+ Startcontroller ${OLD_CAR_LEADER} ${USER_NAME} ${PASSWORD} ${KARAF_HOME} ${PORT}
+ Sleep 3
+
+Get added cars from old leader
+ [Documentation] Get added cars using the old leader
+ ${resp} Getcars ${OLD_CAR_LEADER} ${PORT} ${0}
+ Should Be Equal As Strings ${resp.status_code} 200
+ :FOR ${i} IN RANGE 1 ${NUM_CARS}
+ \ Should Contain ${resp.content} manufacturer${i}
+