клиент1 | сервер1 клиент2 \ / \ / сервер2
запускается сервер1, запускается сервер2, запускается клиент1, запускается клиент2, соединение как на картинке
сервер1 теряет соединение с сервером2, за это время состояние сервера2 изменяется клиентом2. сервер1 периодически пробует соединиться с сервером2. в определённый момент это ему удаётся, он синхронизирует своё состояние с сервером2 и передаёт на клиент1 своё состояние.
задача теста — проверить корректность синхронизации состояния сервера1 в момент повторного соединения
какие есть инструменты/методы/где почитать для автоматизации таких сценариев?
ручками хлопотно
писать на java программу, которая запускает и убивает процессы?
на текущий момент с помощью ant/junit работает следующая конструкция (коряво, конечно )
<target name="reconnecttest"> <antcall target="clean"></antcall> <parallel> <antcall target="server2-stop"></antcall> <sequential> <sleep milliseconds="2000"/> <antcall target="server1"></antcall> </sequential> <sequential> <sleep milliseconds="5000"/> <antcall target="injector"></antcall><!-- change the state of server2 --> <antcall target="verifier"></antcall><!-- verify the state of server1 --> </sequential> <!-- server2 will be stopped in 20 seconds, restart it --> <sequential> <sleep milliseconds="20000"/> <antcall target="server2-stop"></antcall> </sequential> <!-- server1 must reconnect to server2, synchronize its state. wait for it, verify it --> <sequential> <sleep milliseconds="25000"/> <antcall target="verifier"></antcall> </sequential> <!-- server1 will be stopped in 30 seconds --> </parallel> </target>
server1 и server2 запущены с помощью target java с атрибутом timeout , verifier & injector - junit tests