Mercurial > hg > ThermostatQA
changeset 202:b82b8bc167ed
Fixed thermostat setup
author | Zdenek Zambersky <zzambers@redhat.com> |
---|---|
date | Tue, 22 Sep 2015 18:43:48 +0200 |
parents | 2d312f47b00a |
children | a74aa91ab44c |
files | src/org/thermostat/qa2/framework/TestRunner.java src/org/thermostat/qa2/framework/ThermostatQAConfig.java src/org/thermostat/qa2/framework/utils/ThermostatUtilities.java |
diffstat | 3 files changed, 84 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/org/thermostat/qa2/framework/TestRunner.java Wed Aug 26 14:57:04 2015 +0200 +++ b/src/org/thermostat/qa2/framework/TestRunner.java Tue Sep 22 18:43:48 2015 +0200 @@ -194,10 +194,6 @@ String setupTarget = setupTargetA.value(); - // setup thermostat - if (setupThermostat) { - ThermostatUtilities.setupThermostat(setupTarget, true); - } // setup storage if (setupStorage) { String storageType = setupStorageA.type(); @@ -205,8 +201,9 @@ boolean badAgentLogin = setupStorageA.badAgentLogin(); boolean badClientLogin = setupStorageA.badClientLogin(); boolean agentSaveOnExit = setupStorageA.agentSaveOnExit(); - ThermostatUtilities.setupStorage(setupTarget, web, badAgentLogin, badClientLogin, agentSaveOnExit, true, false); + ThermostatUtilities.setupThermostat(setupTarget, web, badAgentLogin, badClientLogin, agentSaveOnExit, true, false); } + // start storage if (startStorage) { String storageType = setupStorageA.type();
--- a/src/org/thermostat/qa2/framework/ThermostatQAConfig.java Wed Aug 26 14:57:04 2015 +0200 +++ b/src/org/thermostat/qa2/framework/ThermostatQAConfig.java Tue Sep 22 18:43:48 2015 +0200 @@ -186,12 +186,20 @@ return mongoLogin; } + public static Login getAgentLogin(boolean web) { + return web ? agentLogin : mongoLogin; + } + public static Login getAgentLogin() { - return ThermostatUtilities.isWebStorageConfigured() ? agentLogin : mongoLogin; + return getAgentLogin(ThermostatUtilities.isWebStorageConfigured()); + } + + public static Login getClientLogin(boolean web) { + return web ? clientLogin : mongoLogin; } public static Login getClientLogin() { - return ThermostatUtilities.isWebStorageConfigured() ? clientLogin : mongoLogin; + return getClientLogin(ThermostatUtilities.isWebStorageConfigured()); } public static Login getCommandChannelLogin() {
--- a/src/org/thermostat/qa2/framework/utils/ThermostatUtilities.java Wed Aug 26 14:57:04 2015 +0200 +++ b/src/org/thermostat/qa2/framework/utils/ThermostatUtilities.java Tue Sep 22 18:43:48 2015 +0200 @@ -49,6 +49,78 @@ */ public class ThermostatUtilities { + public static void setupThermostat(String setupTarget, boolean web, boolean badAgentLogin, boolean badClientLogin, boolean agentSaveOnExit, boolean backupThermostatConfig, boolean backupUserHome) throws Exception { + String thermostatHome = ThermostatQAConfig.getThermostatHome(setupTarget); + String thermostatUserHome = ThermostatQAConfig.getThermostatUserHome(setupTarget); + boolean needsRoot = ThermostatQAConfig.isThermostatPackaged(setupTarget); + + if (backupThermostatConfig) { + BackupService backupService = new BackupService(ThermostatQAConfig.getThermostatEtcDir(setupTarget)); + backupService.setRunAsRoot(needsRoot); + backupService.start(); + } + + if (new File(thermostatUserHome).exists()) { + if (backupUserHome) { + BackupService backupService = new BackupService(thermostatUserHome); + backupService.start(); + } + ProcessUtilities.run("rm", "-rf", "--", thermostatUserHome); + } + + CommonUtilities.printHeading("Running Thermostat setup ..."); + String binDir = ThermostatQAConfig.getThermostatBinDir(setupTarget); + String setupPath = binDir + File.separator + "thermostat-setup"; + NativeProcess process; + Login mongoLogin = ThermostatQAConfig.getMongoLogin(); + Login clientLogin = ThermostatQAConfig.getClientLogin(true); + Login agentLogin = ThermostatQAConfig.getAgentLogin(true); + + process = new NativeProcess("bash", "-c", "echo -e \"yes\\n" + + mongoLogin.getUsername() + "\\n" + + mongoLogin.getPassword() + "\\n" + mongoLogin.getPassword() + "\\n" + + clientLogin.getUsername() + "\\n" + + clientLogin.getPassword() + "\\n" + clientLogin.getPassword() + "\\n" + + agentLogin.getUsername() + "\\n" + + agentLogin.getPassword() + "\\n" + agentLogin.getPassword() + + "\\n\" | " + setupPath); + process.setLabel("Thermostat setup"); + process.setEnvironmentVariable("USER_THERMOSTAT_HOME", thermostatUserHome); + process.start(); + process.waitFor(); + + Login agentBadLogin = badAgentLogin ? ThermostatQAConfig.getAgentBadLogin() : ThermostatQAConfig.getAgentLogin(web); + String agentAuthFile = thermostatUserHome + File.separator + "etc" + File.separator + "agent.auth"; + changeConfigProperty(agentAuthFile, "username", agentBadLogin.getUsername()); + changeConfigProperty(agentAuthFile, "password", agentBadLogin.getPassword()); + + String clientPropertiesFile = thermostatUserHome + File.separator + "etc" + File.separator + "client.properties"; + changeConfigProperty(clientPropertiesFile, "connection-url", ThermostatQAConfig.getStroageUrl(web)); + + Login clientBadLogin = badClientLogin ? ThermostatQAConfig.getClientBadLogin() : ThermostatQAConfig.getClientLogin(web); + changeConfigProperty(clientPropertiesFile, "username", clientBadLogin.getUsername()); + changeConfigProperty(clientPropertiesFile, "password", clientBadLogin.getPassword()); + + String agentPropertiesFile = thermostatHome + File.separator + "etc" + File.separator + "agent.properties"; + changeConfigProperty(agentPropertiesFile, "SAVE_ON_EXIT", agentSaveOnExit ? "true" : "false", needsRoot); + changeConfigProperty(agentPropertiesFile, "DB_URL", ThermostatQAConfig.getStroageUrl(web), needsRoot); + + webStorage = web; + } + + public static void changeConfigProperty(String file, String name, String value) throws Exception { + changeConfigProperty(file, name, value, false); + } + + public static void changeConfigProperty(String file, String name, String value, boolean root) throws Exception { + ProcessUtilities.shellRun((root ? "sudo -n " : "") + "sed -i 's/" + escapeForSed(name) + "=.*/" + escapeForSed(name) + "=" + escapeForSed(value) + "/g' " + file); + } + + public static String escapeForSed(String string) { + String result = string.replace("/", "\\/"); + return result; + } + /* runs thermostat setup (creates thermostat user home dir (database)), backup service (on thermostat user home) is started before if requested */ public static void setupThermostat(String setupTarget, boolean backupUserHome) throws Exception {