package integration_tests.tests_framework; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import org.junit.After; import org.junit.Before; import codeine.jsons.global.GlobalConfigurationJson; import codeine.jsons.global.MysqlConfigurationJson; import codeine.jsons.project.ProjectJson; import codeine.utils.JsonFileUtils; import codeine.utils.network.InetUtils; import codeine.utils.os_process.ProcessExecuter; import com.google.inject.Guice; import com.google.inject.Injector; public abstract class TestsSuite { private final Logger log = Logger.getLogger(TestsSuite.class); private Injector injector; private TestSuiteConfiguration conf; private GlobalConfigurationJson codeineConf; static { BasicConfigurator.configure(); } @Before public void init() { injector = Guice.createInjector(new CodeineIntegrationTestModule()); String confFile = System.getenv("CODEINE_INTEGRATION_CONF_JSON"); log.info("cheking work dir "); executeAndPrint("pwd"); if (null == confFile) { confFile = "codeine.integration.conf.json"; } log.info("confFile is " + confFile); conf = getJsonFileUtils().getConfFromFile(confFile, TestSuiteConfiguration.class); // openTar(); configure(); configureProjects(); startProcessess(); } private void startProcessess() { // kill mysql // change it to use the new server executeAndPrint(testsConf().scripts_dir() + "/start_processes_2.pl " + testsConf().dist_dir() + " " + testsConf().mysql_work_dir()); } private void executeAndPrint(String cmd) { log.info(ProcessExecuter.executeSuccess(cmd)); } private void configure() { codeineConf = new GlobalConfigurationJson(InetUtils.getLocalHost().getHostName()); MysqlConfigurationJson mysql = new MysqlConfigurationJson( InetUtils.getLocalHost().getHostName(), 17171, conf.mysql_work_dir(), conf.mysql_lib()); codeineConf.mysql().add(mysql); codeineConf.web_server_port(19191); getJsonFileUtils().setContent(testsConf().conf_file(), codeineConf); } private void configureProjects() { ProjectJson project = getProjectConfiguration(); getJsonFileUtils().setContent(testsConf().projects_dir() + "/" + project.name() + "/project.conf.json", project); } protected abstract ProjectJson getProjectConfiguration(); private JsonFileUtils getJsonFileUtils() { JsonFileUtils jsonFileUtils = injector().getInstance(JsonFileUtils.class); return jsonFileUtils; } public TestSuiteConfiguration testsConf() { return conf; } public GlobalConfigurationJson codeineConf() { return codeineConf; } private Injector injector() { return injector; } // private void openTar() { //// String version = VERSION; //// String dir = DIR; //// String tar = dir + "/codeine_" + version + ".tar.gz"; //// String r = ProcessExecuter.executeSuccess("tar -xzf " + tar + " --directory=" + dir + "/integration_test/out"); // } @After public void after() { //stop all processes? } }