package li.strolch.runtime.configuration; import static org.junit.Assert.assertEquals; import java.io.File; import org.junit.Test; import li.strolch.RuntimeMock; import li.strolch.agent.api.StrolchAgent; import li.strolch.agent.api.StrolchBootstrapper; import li.strolch.utils.helper.FileHelper; public class BootstrapperTest { @Test public void shouldSetupByUserDir() { File rootSrcPath = new File("src/test/resources/configtest"); File rootDstPath = new File("target/shouldSetupByUserDir"); if (rootDstPath.exists() && !FileHelper.deleteFile(rootDstPath, true)) { throw new RuntimeException("Could not delete target " + rootDstPath); } if (!rootDstPath.mkdirs()) { throw new RuntimeException("Could not create target " + rootDstPath); } if (!FileHelper.copy(rootSrcPath.listFiles(), rootDstPath, false)) { throw new RuntimeException("Could not copy source " + rootSrcPath + " to " + rootDstPath); } String userDir = System.getProperty("user.dir"); System.setProperty("user.dir", rootDstPath.getAbsolutePath()); try { StrolchAgent agent = new StrolchBootstrapper(RuntimeMock.getAppVersion()).setupByUserDir("dev"); assertEquals("dev", agent.getStrolchConfiguration().getRuntimeConfiguration().getEnvironment()); } finally { System.setProperty("user.dir", userDir); } } @Test public void shouldSetupByRoot() { File rootSrcPath = new File("src/test/resources/configtest"); File rootDstPath = new File("target/shouldSetupByRoot"); if (rootDstPath.exists() && !FileHelper.deleteFile(rootDstPath, true)) { throw new RuntimeException("Could not delete target " + rootDstPath); } if (!rootDstPath.mkdirs()) { throw new RuntimeException("Could not create target " + rootDstPath); } if (!FileHelper.copy(rootSrcPath.listFiles(), rootDstPath, false)) { throw new RuntimeException("Could not copy source " + rootSrcPath + " to " + rootDstPath); } StrolchAgent agent = new StrolchBootstrapper(RuntimeMock.getAppVersion()).setupByRoot("dev", rootDstPath); assertEquals("dev", agent.getStrolchConfiguration().getRuntimeConfiguration().getEnvironment()); } @Test public void shouldSetupByCopyingRoot() { File rootSrcPath = new File("src/test/resources/configtest"); File rootDstPath = new File("target/shouldSetupByCopyingRoot"); if (rootDstPath.exists() && !FileHelper.deleteFile(rootDstPath, true)) { throw new RuntimeException("Could not delete target " + rootDstPath); } StrolchAgent agent = new StrolchBootstrapper(RuntimeMock.getAppVersion()).setupByCopyingRoot("dev", rootSrcPath, rootDstPath); assertEquals("dev", agent.getStrolchConfiguration().getRuntimeConfiguration().getEnvironment()); } @Test public void shouldSetupByBoostrapFileEnvDev() { File rootSrcPath = new File("src/test/resources/configtest"); File rootDstPath = new File("target/bootstraptest/dev"); if (rootDstPath.exists() && !FileHelper.deleteFile(rootDstPath, true)) { throw new RuntimeException("Could not delete target " + rootDstPath); } if (!rootDstPath.mkdirs()) { throw new RuntimeException("Could not create target " + rootDstPath); } if (!FileHelper.copy(rootSrcPath.listFiles(), rootDstPath, false)) { throw new RuntimeException("Could not copy source " + rootSrcPath + " to " + rootDstPath); } File bootstrapFile = new File("src/test/resources/bootstraptest/StrolchBootstrap.xml"); StrolchAgent agent = new StrolchBootstrapper(RuntimeMock.getAppVersion()).setupByBoostrapFile("dev", bootstrapFile); assertEquals("dev", agent.getStrolchConfiguration().getRuntimeConfiguration().getEnvironment()); agent.destroy(); } @Test public void shouldSetupByBoostrapFileEnvTest() { File rootSrcPath = new File("src/test/resources/configtest"); File rootDstPath = new File("target/bootstraptest/test"); if (rootDstPath.exists() && !FileHelper.deleteFile(rootDstPath, true)) { throw new RuntimeException("Could not delete target " + rootDstPath); } if (!rootDstPath.mkdirs()) { throw new RuntimeException("Could not create target " + rootDstPath); } File configSrc = new File(rootSrcPath, "config"); File configDst = new File(rootDstPath, "config_other"); if (!configDst.mkdir()) { throw new RuntimeException("Could not create target " + configDst); } if (!FileHelper.copy(configSrc.listFiles(), configDst, false)) { throw new RuntimeException("Could not copy source " + configSrc + " to " + configDst); } File bootstrapFile = new File("src/test/resources/bootstraptest/StrolchBootstrap.xml"); StrolchAgent agent = new StrolchBootstrapper(RuntimeMock.getAppVersion()).setupByBoostrapFile("test.next", bootstrapFile); assertEquals("test", agent.getStrolchConfiguration().getRuntimeConfiguration().getEnvironment()); agent.destroy(); } }