package uk.ac.imperial.lsds.seepmaster; import static org.junit.Assert.*; import org.junit.Test; import uk.ac.imperial.lsds.seepmaster.LifecycleManager.AppStatus; public class LifecycleManagerTest { @Test public void test() { LifecycleManager lifeManager = LifecycleManager.getInstance(); boolean allowed = false; // From MASTER_READY allowed = lifeManager.canTransitTo(AppStatus.MASTER_READY); assertTrue(allowed == true); allowed = lifeManager.canTransitTo(AppStatus.QUERY_DEPLOYED); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_FAILED); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_RUNNING); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_STOPPED); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_SUBMITTED); assertTrue(allowed == true); lifeManager.tryTransitTo(AppStatus.QUERY_SUBMITTED); // From QUERY_SUBMITTED allowed = lifeManager.canTransitTo(AppStatus.MASTER_READY); assertTrue(allowed == true); allowed = lifeManager.canTransitTo(AppStatus.QUERY_DEPLOYED); assertTrue(allowed == true); allowed = lifeManager.canTransitTo(AppStatus.QUERY_SUBMITTED); // can overwrite submitted query assertTrue(allowed == true); allowed = lifeManager.canTransitTo(AppStatus.QUERY_FAILED); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_RUNNING); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_STOPPED); assertTrue(allowed == false); lifeManager.tryTransitTo(AppStatus.QUERY_DEPLOYED); // From QUERY_DEPLOYED allowed = lifeManager.canTransitTo(AppStatus.MASTER_READY); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_DEPLOYED); // cannot redeploy assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_SUBMITTED); // can overwrite submitted query assertTrue(allowed == true); allowed = lifeManager.canTransitTo(AppStatus.QUERY_FAILED); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_RUNNING); assertTrue(allowed == true); allowed = lifeManager.canTransitTo(AppStatus.QUERY_STOPPED); assertTrue(allowed == false); lifeManager.tryTransitTo(AppStatus.QUERY_RUNNING); // From QUERY_RUNNING allowed = lifeManager.canTransitTo(AppStatus.MASTER_READY); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_DEPLOYED); // cannot redeploy assertTrue(allowed == true); allowed = lifeManager.canTransitTo(AppStatus.QUERY_SUBMITTED); // can overwrite submitted query assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_FAILED); assertTrue(allowed == true); allowed = lifeManager.canTransitTo(AppStatus.QUERY_RUNNING); // must stop before running again assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_STOPPED); assertTrue(allowed == true); lifeManager.tryTransitTo(AppStatus.QUERY_STOPPED); // From QUERY_STOPPED allowed = lifeManager.canTransitTo(AppStatus.MASTER_READY); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_DEPLOYED); // cannot redeploy assertTrue(allowed == true); allowed = lifeManager.canTransitTo(AppStatus.QUERY_SUBMITTED); // can overwrite submitted query assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_FAILED); assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_RUNNING); // must stop before running again assertTrue(allowed == false); allowed = lifeManager.canTransitTo(AppStatus.QUERY_STOPPED); assertTrue(allowed == false); } }