Mercurial > hg > ThermostatQA
changeset 187:877b403e8344
Extended support for packaged thermostat
changes:
Makefile:
src/org/thermostat/qa2/framework/ThermostatQAConfig.java:
src/org/thermostat/qa2/framework/services/ThermostatStorage.java:
src/org/thermostat/qa2/framework/services/ThermostatAgent.java:
src/org/thermostat/qa2/framework/services/ThermostatGui.java:
src/org/thermostat/qa2/framework/services/ThermostatService.java:
src/org/thermostat/qa2/tests/AgentWebStorageTest.java:
src/org/thermostat/qa2/tests/CliClientDBModificationsSmokeTest.java:
- Added more (changed) configuration options
src/org/thermostat/qa2/framework/services/BackupService.java:
src/org/thermostat/qa2/framework/utils/ThermostatUtilities.java:
- Using sudo to backup and overwrite root-owned thermostat configuration files.
src/org/thermostat/qa2/framework/services/Tomcat.java
- Added support for running native tomcat.
src/org/thermostat/qa2/framework/TestRunner.java:
src/org/thermostat/qa2/reporter/Generator.java:
- Fixed bug in reporter (when test ends with error).
author | Zdenek Zambersky <zzambers@redhat.com> |
---|---|
date | Fri, 10 Jul 2015 14:21:09 +0200 |
parents | 7bc828291ea4 |
children | 2f4f704ba819 |
files | Makefile src/org/thermostat/qa2/framework/TestRunner.java src/org/thermostat/qa2/framework/ThermostatQAConfig.java src/org/thermostat/qa2/framework/services/BackupService.java src/org/thermostat/qa2/framework/services/ThermostatAgent.java src/org/thermostat/qa2/framework/services/ThermostatGui.java src/org/thermostat/qa2/framework/services/ThermostatService.java src/org/thermostat/qa2/framework/services/ThermostatStorage.java src/org/thermostat/qa2/framework/services/Tomcat.java src/org/thermostat/qa2/framework/utils/ThermostatUtilities.java src/org/thermostat/qa2/reporter/Generator.java src/org/thermostat/qa2/reporter/LogParser.java src/org/thermostat/qa2/tests/CliClientDBModificationsSmokeTest.java |
diffstat | 13 files changed, 152 insertions(+), 102 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile Fri May 22 01:23:01 2015 +0200 +++ b/Makefile Fri Jul 10 14:21:09 2015 +0200 @@ -45,6 +45,8 @@ THERMOSTAT_DIR=$(BUILD_DIR)/thermostat THERMOSTAT_HOME_DIR=$(THERMOSTAT_DIR)/distribution/target/image THERMOSTAT_WEB_DEPLOY_DIR=$(TOMCAT_DIR)/webapps/thermostat +THERMOSTAT_PACKAGED=false +THERMOSTAT_WEBSTORAGE_PORT=8080 # refers to thermostat against which compatibility is tested THERMOSTAT_OTHER_VERSION=1.2 @@ -126,17 +128,14 @@ mkdir -p $(LOGS_DIR)/$(DATE) USER_THERMOSTAT_HOME=$(THERMOSTAT_USER_DIR) \ $(JAVA) -cp $(CLASSES_DIR) \ - -Dtomcat.home=$(TOMCAT_DIR) \ + -Dthermostat.user.home=$(THERMOSTAT_USER_DIR) \ + -Dthermostat.version=$(THERMOSTAT_VERSION) \ -Dthermostat.home=$(THERMOSTAT_HOME_DIR) \ - -Dthermostat.user.home=$(THERMOSTAT_USER_DIR) \ - -Dthermostat.executable.name=thermostat \ - -Dthermostat.executable.path=$(THERMOSTAT_HOME_DIR)/bin \ - -Dthermostat.webapp.path=$(THERMOSTAT_DIR)/web/war/target \ - -Dthermostat.version=$(THERMOSTAT_VERSION) \ - -Dscreenshot.source=$(SCREENSHOT_SOURCE) \ - -Dclean.after.gui.test=true \ - -Dgnome-keyring.config.path=$(GNOME_KEYRING_USER_DATA_DIR) \ - -Dbackup.path=$(BUILD_DIR)/backup \ + -Dthermostat.packaged=$(THERMOSTAT_PACKAGED) \ + -Dthermostat.webstorage.port=$(THERMOSTAT_WEBSTORAGE_PORT) \ + -Dtomcat.home=$(TOMCAT_DIR) \ + -Dgnome-keyring.config.dir=$(GNOME_KEYRING_USER_DATA_DIR) \ + -Dbackup.dir=$(BUILD_DIR)/backup \ org.thermostat.qa2.framework.TestRunner org.thermostat.qa2.tests.$@ 2>&1 | tee $(LOGS_DIR)/$(DATE)/$@.log .PHONY: run-compatibility-tests @@ -151,17 +150,16 @@ mkdir -p $(LOGS_DIR)/compatibility/$(THERMOSTAT_OTHER_VERSION)/$(DATE) USER_THERMOSTAT_HOME=$(THERMOSTAT_USER_DIR) \ $(JAVA) -cp $(CLASSES_DIR) \ - -Dtomcat.home=$(TOMCAT_DIR) \ - -Dthermostat.home=$(THERMOSTAT_HOME_DIR) \ -Dthermostat.user.home=$(THERMOSTAT_USER_DIR) \ - -Dthermostat.executable.path=$(THERMOSTAT_HOME_DIR)/bin \ -Dthermostat.version=$(THERMOSTAT_VERSION) \ - -Dthermostat.webapp.path=$(THERMOSTAT_DIR)/web/war/target \ - -Dthermostat.other.home=$(THERMOSTAT_OTHER_HOME_DIR) \ + -Dthermostat.home=$(THERMOSTAT_HOME_DIR) \ + -Dthermostat.packaged=$(THERMOSTAT_PACKAGED) \ -Dthermostat.other.version=$(THERMOSTAT_OTHER_VERSION) \ - -Dthermostat.other.webapp.path=$(THERMOSTAT_OTHER_DIR)/web/war/target \ - -Dgnome-keyring.config.path=$(GNOME_KEYRING_USER_DATA_DIR) \ - -Dbackup.path=$(BUILD_DIR)/backup \ + -Dthermostat.other.home=$(THERMOSTAT_OTHER_HOME_DIR) \ + -Dthermostat.webstorage.port=$(THERMOSTAT_WEBSTORAGE_PORT) \ + -Dtomcat.home=$(TOMCAT_DIR) \ + -Dgnome-keyring.config.dir=$(GNOME_KEYRING_USER_DATA_DIR) \ + -Dbackup.dir=$(BUILD_DIR)/backup \ org.thermostat.qa2.framework.TestRunner org.thermostat.qa2.tests.compatibility.$@ 2>&1 | tee $(LOGS_DIR)/compatibility/$(THERMOSTAT_OTHER_VERSION)/$(DATE)/$@.log .PHONY: testwarning @@ -222,8 +220,8 @@ cp -r $(FLOTR_DIR) $(REPORT_DIR) $(JAVA) -cp $(CLASSES_DIR) \ -Dthermostat.version=$(THERMOSTAT_VERSION) \ - -Dlogs.path=$(LOGS_DIR) \ - -Dreports.path=$(REPORT_DIR) \ + -Dlogs.dir=$(LOGS_DIR) \ + -Dreports.dir=$(REPORT_DIR) \ org.thermostat.qa2.reporter.Reporter report-compatibility-tests: $(CLASSES_DIR) flotr @@ -233,8 +231,8 @@ $(JAVA) -cp $(CLASSES_DIR) \ -Dthermostat.version=$(THERMOSTAT_VERSION) \ -Dthermostat.other.version=$(THERMOSTAT_OTHER_VERSION) \ - -Dlogs.path=$(LOGS_DIR)/compatibility/$(THERMOSTAT_OTHER_VERSION)/ \ - -Dreports.path=$(REPORT_DIR)/compatibility/$(THERMOSTAT_OTHER_VERSION) \ + -Dlogs.dir=$(LOGS_DIR)/compatibility/$(THERMOSTAT_OTHER_VERSION)/ \ + -Dreports.dir=$(REPORT_DIR)/compatibility/$(THERMOSTAT_OTHER_VERSION) \ org.thermostat.qa2.reporter.Reporter javadoc:
--- a/src/org/thermostat/qa2/framework/TestRunner.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/framework/TestRunner.java Fri Jul 10 14:21:09 2015 +0200 @@ -146,7 +146,7 @@ ++passedCount; break; case FAILED: - System.out.println("FAILED: " + testName + ": FAILED null"); + System.out.println("FAILED: " + testName); if (t != null) { t.printStackTrace(System.out); }
--- a/src/org/thermostat/qa2/framework/ThermostatQAConfig.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/framework/ThermostatQAConfig.java Fri Jul 10 14:21:09 2015 +0200 @@ -44,7 +44,7 @@ public static String tomcatHome; public static int mongoPort = 27518; public static int agentPort = 12000; - public static int webStoragePort = 8080; + public static int webStoragePort; public static String gnomeKeyringConfigDir; public static String backupDir; public static String logsDir; @@ -63,7 +63,7 @@ public static String thermostatHome; public static String thermostatUserHome; public static String thermostatVersion; - public static String thermostatWebAppDir; + public static boolean thermostatPackaged; ////////////////////// // other thermostat // @@ -76,20 +76,26 @@ static { tomcatHome = System.getProperty("tomcat.home"); - thermostatHome = System.getProperty("thermostat.home"); thermostatUserHome = System.getProperty("thermostat.user.home"); thermostatVersion = System.getProperty("thermostat.version"); - thermostatWebAppDir = System.getProperty("thermostat.webapp.path"); + thermostatHome = System.getProperty("thermostat.home"); - thermostatOtherHome = System.getProperty("thermostat.other.home"); - thermostatOtherVersion = System.getProperty("thermostat.other.version"); - thermostatOtherWebAppDir = System.getProperty("thermostat.other.webapp.path"); + String webPortVal = System.getProperty("thermostat.webstorage.port"); + if (webPortVal != null) { + webStoragePort = Integer.parseInt(webPortVal); + } - gnomeKeyringConfigDir = System.getProperty("gnome-keyring.config.path"); - backupDir = System.getProperty("backup.path"); + thermostatOtherVersion = System.getProperty("thermostat.other.version"); + thermostatOtherHome = System.getProperty("thermostat.other.home"); + + gnomeKeyringConfigDir = System.getProperty("gnome-keyring.config.dir"); + backupDir = System.getProperty("backup.dir"); - logsDir = System.getProperty("logs.path"); - reportDir = System.getProperty("reports.path"); + logsDir = System.getProperty("logs.dir"); + reportDir = System.getProperty("reports.dir"); + + String packaged = System.getProperty("thermostat.packaged"); + thermostatPackaged = packaged != null && packaged.toLowerCase().equals("true"); } static String getPatternsDir() { @@ -123,16 +129,7 @@ } public static String getWebAppPath(String target) { - String dir = getTargetAsBoolean(target) ? thermostatWebAppDir : thermostatOtherWebAppDir; - File dirFile = new File(dir); - File[] files = dirFile.listFiles(); - for (File f : files) { - String name = f.getName(); - if (name.toLowerCase().endsWith(".war")) { - return dir + File.separator + name.substring(0, name.length() - 4); - } - } - throw new IllegalArgumentException("web app not found"); + return getThermostatHome(target) + File.separator + "webapp"; } public static String getThermostatHome(String target) { @@ -156,13 +153,29 @@ } public static String getThermostatExecutablePath(String target) { - return getThermostatHome(target) + File.separator + "bin" + File.separator + "thermostat"; + return getThermostatBinDir(target) + File.separator + "thermostat"; + } + + public static String getThermostatBinDir(String target) { + return getThermostatHome(target) + File.separator + "bin"; + } + + public static String getThermostatEtcDir(String target) { + return getThermostatHome(target) + File.separator + "etc"; } public static String getThermostatOutputTextsDir() { return "." + File.separator + "outputtexts" + File.separator + thermostatVersion; } + public static boolean isThermostatPackaged(String target) { + return getTargetAsBoolean(target) ? thermostatPackaged : false; + } + + public static String getBackupDir() { + return backupDir; + } + public static boolean isCompatibilityTesting() { return thermostatOtherVersion != null; }
--- a/src/org/thermostat/qa2/framework/services/BackupService.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/framework/services/BackupService.java Fri Jul 10 14:21:09 2015 +0200 @@ -46,6 +46,7 @@ String[] files; ArrayList<String> backupFiles = new ArrayList(); String backupDir; + boolean asRoot = false; public BackupService(String file) { this(new String[]{file}); @@ -64,6 +65,10 @@ public String getServiceName() throws Exception { return "Backup service: " + Arrays.toString(files); } + + public void setRunAsRoot(boolean asRoot){ + this.asRoot = asRoot; + } @Override public void startServiceImpl() throws Exception { @@ -71,7 +76,11 @@ for (String file : files) { if (new File(file).exists()) { String backupPath = FileUtilities.getUniqueFile(backupDir + File.separator + FileUtilities.getFileName(file)); - ProcessUtilities.run("cp", "-arT", "--", file, backupPath); + if (asRoot) { + ProcessUtilities.run("sudo", "-n", "cp", "-arT", "--", file, backupPath); + } else { + ProcessUtilities.run("cp", "-arT", "--", file, backupPath); + } backupFiles.add(backupPath); } } @@ -80,8 +89,13 @@ @Override public void stopServiceImpl() throws Exception { for (int i = 0; i < backupFiles.size(); ++i) { - ProcessUtilities.run("rm", "-rf", "--", files[i]); - ProcessUtilities.run("mv", "--", backupFiles.get(i), files[i]); + if (asRoot) { + ProcessUtilities.run("sudo", "-n", "rm", "-rf", "--", files[i]); + ProcessUtilities.run("sudo", "-n", "mv", "--", backupFiles.get(i), files[i]); + } else { + ProcessUtilities.run("rm", "-rf", "--", files[i]); + ProcessUtilities.run("mv", "--", backupFiles.get(i), files[i]); + } } setRunning(false); }
--- a/src/org/thermostat/qa2/framework/services/ThermostatAgent.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/framework/services/ThermostatAgent.java Fri Jul 10 14:21:09 2015 +0200 @@ -30,7 +30,6 @@ */ package org.thermostat.qa2.framework.services; -import java.io.File; import org.thermostat.qa2.framework.ThermostatQAConfig; import org.thermostat.qa2.framework.utils.CommonUtilities; @@ -45,11 +44,11 @@ } public ThermostatAgent(String targetThermostat) { - this(ThermostatQAConfig.getThermostatHome(targetThermostat), ThermostatQAConfig.getThermostatUserHome(targetThermostat)); + this(ThermostatQAConfig.getThermostatExecutablePath(targetThermostat), ThermostatQAConfig.getThermostatUserHome(targetThermostat)); } - public ThermostatAgent(String thermostatHome, String thermostatUserHome) { - super(thermostatHome + File.separator + "bin" + File.separator + "thermostat", "agent"); + public ThermostatAgent(String thermostatExecutable, String thermostatUserHome) { + super(thermostatExecutable, "agent"); addEnvVariable("USER_THERMOSTAT_HOME", thermostatUserHome); }
--- a/src/org/thermostat/qa2/framework/services/ThermostatGui.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/framework/services/ThermostatGui.java Fri Jul 10 14:21:09 2015 +0200 @@ -30,7 +30,6 @@ */ package org.thermostat.qa2.framework.services; -import java.io.File; import org.thermostat.qa2.framework.NativeProcess; import org.thermostat.qa2.framework.ThermostatQAConfig; import org.thermostat.qa2.framework.utils.CommonUtilities; @@ -46,11 +45,11 @@ } public ThermostatGui(String targetThermostat) { - this(ThermostatQAConfig.getThermostatHome(targetThermostat), ThermostatQAConfig.getThermostatUserHome(targetThermostat)); + this(ThermostatQAConfig.getThermostatExecutablePath(targetThermostat), ThermostatQAConfig.getThermostatUserHome(targetThermostat)); } - public ThermostatGui(String thermostatHome, String thermostatUserHome) { - super(thermostatHome + File.separator + "bin" + File.separator + "thermostat", "gui", "-J-Dawt.useSystemAAFontSettings=false", "-J-Dswing.aatext=false"); + public ThermostatGui(String thermostatExecutable, String thermostatUserHome) { + super(thermostatExecutable, "gui", "-J-Dawt.useSystemAAFontSettings=false", "-J-Dswing.aatext=false"); addEnvVariable("USER_THERMOSTAT_HOME", thermostatUserHome); }
--- a/src/org/thermostat/qa2/framework/services/ThermostatService.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/framework/services/ThermostatService.java Fri Jul 10 14:21:09 2015 +0200 @@ -30,7 +30,6 @@ */ package org.thermostat.qa2.framework.services; -import java.io.File; import org.thermostat.qa2.framework.ThermostatQAConfig; /** @@ -44,11 +43,11 @@ } public ThermostatService(String targetThermostat) { - this(ThermostatQAConfig.getThermostatHome(targetThermostat), ThermostatQAConfig.getThermostatUserHome(targetThermostat)); + this(ThermostatQAConfig.getThermostatExecutablePath(targetThermostat), ThermostatQAConfig.getThermostatUserHome(targetThermostat)); } - public ThermostatService(String thermostatHome, String thermostatUserHome) { - super(thermostatHome + File.separator + "bin" + File.separator + "thermostat", "service"); + public ThermostatService(String thermostatExecutable, String thermostatUserHome) { + super(thermostatExecutable, "service"); addEnvVariable("USER_THERMOSTAT_HOME", thermostatUserHome); }
--- a/src/org/thermostat/qa2/framework/services/ThermostatStorage.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/framework/services/ThermostatStorage.java Fri Jul 10 14:21:09 2015 +0200 @@ -30,7 +30,6 @@ */ package org.thermostat.qa2.framework.services; -import java.io.File; import java.io.IOException; import java.util.List; import org.thermostat.qa2.framework.NativeProcess; @@ -43,7 +42,7 @@ */ public class ThermostatStorage extends AbstractService { - public String thermostatHome; + public String thermostatExecutable; public String thermostatUserHome; public ThermostatStorage() { @@ -51,11 +50,11 @@ } public ThermostatStorage(String targetThermostat) { - this(ThermostatQAConfig.getThermostatHome(targetThermostat), ThermostatQAConfig.getThermostatUserHome(targetThermostat)); + this(ThermostatQAConfig.getThermostatExecutablePath(targetThermostat), ThermostatQAConfig.getThermostatUserHome(targetThermostat)); } - public ThermostatStorage(String thermostatHome, String thermostatUserHome) { - this.thermostatHome = thermostatHome; + public ThermostatStorage(String thermostatExecutable, String thermostatUserHome) { + this.thermostatExecutable = thermostatExecutable; this.thermostatUserHome = thermostatUserHome; } @@ -70,7 +69,7 @@ @Override public void startServiceImpl() throws Exception { setRunning(true); - startProcess = new NativeProcess(thermostatHome + File.separator + "bin" + File.separator + "thermostat", "storage", "--start"); + startProcess = new NativeProcess(thermostatExecutable, "storage", "--start"); startProcess.setLabel(getServiceName()); startProcess.setEnvironmentVariable("USER_THERMOSTAT_HOME", thermostatUserHome); //if (startStdoutBuffering) { @@ -89,7 +88,7 @@ @Override public void stopServiceImpl() throws Exception { setRunning(false); - stopProcess = new NativeProcess(thermostatHome + File.separator + "bin" + File.separator + "thermostat", "storage", "--stop"); + stopProcess = new NativeProcess(thermostatExecutable, "storage", "--stop"); stopProcess.setLabel(getServiceName()); stopProcess.setEnvironmentVariable("USER_THERMOSTAT_HOME", thermostatUserHome); if (stopStdoutBuffering) {
--- a/src/org/thermostat/qa2/framework/services/Tomcat.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/framework/services/Tomcat.java Fri Jul 10 14:21:09 2015 +0200 @@ -41,19 +41,23 @@ public class Tomcat extends AbstractService { String tomcatHome; - String thermostatHome; + String thermostatEtcDir; + boolean packaged = false; public Tomcat() { this("tested"); } public Tomcat(String targetThermostat) { - this(ThermostatQAConfig.tomcatHome, ThermostatQAConfig.getThermostatHome(targetThermostat)); + this(ThermostatQAConfig.tomcatHome, ThermostatQAConfig.getThermostatEtcDir(targetThermostat)); + if (targetThermostat.equals("tested") && ThermostatQAConfig.thermostatPackaged) { + packaged = true; + } } - public Tomcat(String tomcatHome, String thermostatHome) { + public Tomcat(String tomcatHome, String thermostatEtcDir) { this.tomcatHome = tomcatHome; - this.thermostatHome = thermostatHome; + this.thermostatEtcDir = thermostatEtcDir; } @Override @@ -68,11 +72,16 @@ @Override public void startServiceImpl() throws Exception { setRunning(true); - NativeProcess process = new org.thermostat.qa2.framework.NativeProcess(tomcatHome + File.separator + "bin" + File.separator + "startup.sh"); + NativeProcess process; + if (packaged) { + process = new org.thermostat.qa2.framework.NativeProcess("sudo", "-n", "systemctl", "start", "tomcat@thermostat"); + } else { + process = new org.thermostat.qa2.framework.NativeProcess(tomcatHome + File.separator + "bin" + File.separator + "startup.sh"); + if (thermostatEtcDir != null) { + process.setEnvironmentVariable("JAVA_OPTS", "-Djava.security.auth.login.config=" + thermostatEtcDir + File.separator + "thermostat_jaas.conf"); + } + } process.setLabel(getServiceName()); - if (thermostatHome != null) { - process.setEnvironmentVariable("JAVA_OPTS", "-Djava.security.auth.login.config=" + thermostatHome + File.separator + "etc" + File.separator + "thermostat_jaas.conf"); - } process.start(); process.waitFor(); waitForListeningPort(webPort, timeout); @@ -82,7 +91,12 @@ @Override public void stopServiceImpl() throws Exception { setRunning(false); - NativeProcess process = new org.thermostat.qa2.framework.NativeProcess(tomcatHome + File.separator + "bin" + File.separator + "shutdown.sh"); + NativeProcess process; + if (packaged) { + process = new org.thermostat.qa2.framework.NativeProcess("sudo", "-n", "systemctl", "stop", "tomcat@thermostat"); + } else { + process = new org.thermostat.qa2.framework.NativeProcess(tomcatHome + File.separator + "bin" + File.separator + "shutdown.sh"); + } process.setLabel(getServiceName()); process.start(); process.waitFor();
--- a/src/org/thermostat/qa2/framework/utils/ThermostatUtilities.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/framework/utils/ThermostatUtilities.java Fri Jul 10 14:21:09 2015 +0200 @@ -52,7 +52,6 @@ /* 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 { - String thermostatHome = ThermostatQAConfig.getThermostatHome(setupTarget); String thermostatUserHome = ThermostatQAConfig.getThermostatUserHome(setupTarget); if (new File(thermostatUserHome).exists()) { if (backupUserHome) { @@ -61,15 +60,15 @@ } ProcessUtilities.run("rm", "-rf", "--", thermostatUserHome); } - runThermostatSetup(thermostatHome, thermostatUserHome); + runThermostatSetup(ThermostatQAConfig.getThermostatBinDir(setupTarget), thermostatUserHome); } - public static void runThermostatSetup(String thermostatHome, String thermostatUserHome) throws Exception { + public static void runThermostatSetup(String executableDir, String thermostatUserHome) throws Exception { NativeProcess process; CommonUtilities.printHeading("Running Thermostat setup ..."); - String setupPath1 = thermostatHome + File.separator + "bin" + File.separator + "thermostat-devsetup"; - String setupPath2 = thermostatHome + File.separator + "bin" + File.separator + "thermostat-setup"; - String setupPath3 = thermostatHome + File.separator + "bin" + File.separator + "thermostat-setup-user-home"; + String setupPath1 = executableDir + File.separator + "thermostat-devsetup"; + String setupPath2 = executableDir + File.separator + "thermostat-setup"; + String setupPath3 = executableDir + File.separator + "thermostat-setup-user-home"; if (new File(setupPath1).exists()) { process = new NativeProcess(setupPath1); } else if (new File(setupPath2).exists()) { @@ -78,7 +77,7 @@ } else if (new File(setupPath3).exists()) { process = new NativeProcess(setupPath3); } else { - throw new Exception("script to setup thermostat cannot be found in: " + thermostatHome + File.separator + "bin"); + throw new Exception("script to setup thermostat cannot be found in: " + executableDir); } process.setLabel("Thermostat setup"); process.setEnvironmentVariable("USER_THERMOSTAT_HOME", thermostatUserHome); @@ -90,15 +89,16 @@ it does not modify existing storage (database), it can also start backup services if reqested */ public static void setupStorage(String setupTarget, boolean web, boolean badAgentLogin, boolean badClientLogin, boolean agentSaveOnExit, boolean backupThermostatConfig, boolean backupUserHome) throws Exception { - if (web) { + boolean packedThermostat = ThermostatQAConfig.isThermostatPackaged(setupTarget); + if (web && !packedThermostat) { deployThermostatWebApp(setupTarget); - String tomcatHome = ThermostatQAConfig.getTomcatHome(); CommonUtilities.printHeading("Cleaning up tomcat logs"); ProcessUtilities.shellRun("rm -rf -- \"" + tomcatHome + File.separator + "logs" + File.separator + "\"" + "*"); } if (backupThermostatConfig) { - BackupService backupService = new BackupService(ThermostatQAConfig.getThermostatHome(setupTarget) + File.separator + "etc"); + BackupService backupService = new BackupService(ThermostatQAConfig.getThermostatEtcDir(setupTarget)); + backupService.setRunAsRoot(packedThermostat); backupService.start(); } if (backupUserHome) { @@ -143,13 +143,27 @@ CommonUtilities.printHeading("Copying thermostat config files ..."); webStorage = web; String thermostatUserConfigDir = ThermostatQAConfig.getThermostatUserHome(setupTarget) + File.separator + "etc"; - String thermostatConfigDir = ThermostatQAConfig.getThermostatHome(setupTarget) + File.separator + "etc"; + String thermostatConfigDir = ThermostatQAConfig.getThermostatEtcDir(setupTarget); FileUtilities.printLineListToFile(thermostatUserConfigDir + File.separator + "agent.auth", getAgentAuth(badAgentLogin)); FileUtilities.printLineListToFile(thermostatUserConfigDir + File.separator + "agent.properties", getAgentProperties(web, saveOnExit)); FileUtilities.printLineListToFile(thermostatUserConfigDir + File.separator + "client.properties", getClientProperties(web, badClientLogin)); - FileUtilities.printLineListToFile(thermostatConfigDir + File.separator + "thermostat-users.properties", getThermostatUsers()); - FileUtilities.printLineListToFile(thermostatConfigDir + File.separator + "thermostat-roles.properties", getThermostatRoles()); + boolean needsRoot = ThermostatQAConfig.isThermostatPackaged(setupTarget); + String usersFile = thermostatConfigDir + File.separator + "thermostat-users.properties"; + String rolesFile = thermostatConfigDir + File.separator + "thermostat-roles.properties"; + if (needsRoot) { + String usersTmpFile = FileUtilities.getUniqueFile(ThermostatQAConfig.getBackupDir() + File.separator + "thermostat-users.properties"); + String rolesTmpFile = FileUtilities.getUniqueFile(ThermostatQAConfig.getBackupDir() + File.separator + "thermostat-roles.properties"); + + FileUtilities.printLineListToFile(usersTmpFile, getThermostatUsers()); + FileUtilities.printLineListToFile(rolesTmpFile, getThermostatRoles()); + + ProcessUtilities.run("sudo", "-n", "mv", "-f", usersTmpFile, usersFile); + ProcessUtilities.run("sudo", "-n", "mv", "-f", rolesTmpFile, rolesFile); + } else { + FileUtilities.printLineListToFile(usersFile, getThermostatUsers()); + FileUtilities.printLineListToFile(rolesFile, getThermostatRoles()); + } } public static final String storageTemplatesDir = "templates" + File.separator + "storage-config"; @@ -245,11 +259,11 @@ if (new File(deployedAppPath).exists()) { ProcessUtilities.shellRun("rm -rf " + deployedAppPath); } - String path = ThermostatQAConfig.getWebAppPath(setupTarget); - String name = new File(path).getName(); + String webAppPath = ThermostatQAConfig.getWebAppPath(setupTarget); + String name = new File(webAppPath).getName(); - ProcessUtilities.shellRun("cp -r " + path + " " + deployDir); - ProcessUtilities.shellRun("mv " + deployDir + File.separator + new File(path).getName() + " " + deployedAppPath); + ProcessUtilities.shellRun("cp -r " + webAppPath + " " + deployDir); + ProcessUtilities.shellRun("mv " + deployDir + File.separator + name + " " + deployedAppPath); } /* Starts thermostat shell executes requested command in it,
--- a/src/org/thermostat/qa2/reporter/Generator.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/reporter/Generator.java Fri Jul 10 14:21:09 2015 +0200 @@ -47,7 +47,7 @@ * @author Zdeněk Žamberský */ public class Generator { - + public static final String testsNamePattern = "${TESTS_NAME}"; public static final String resultsUrlPattern = "${RESULTS_URL}"; @@ -177,13 +177,15 @@ } output.add("]]></pre>"); } - output.add("<h5>log:</h5>"); List<String> log = method.getLog(); - output.add("<pre class='stack-trace'><![CDATA[" + ((log != null && log.size() > 0) ? log.get(0) : "")); - for (int i = 1; i < log.size(); ++i) { - output.add(log.get(i)); + if (log != null) { + output.add("<h5>log:</h5>"); + output.add("<pre class='stack-trace'><![CDATA[" + ((log != null && log.size() > 0) ? log.get(0) : "")); + for (int i = 1; i < log.size(); ++i) { + output.add(log.get(i)); + } + output.add("]]></pre>"); } - output.add("]]></pre>"); output.add("</div>"); output.add("</td></tr>"); }
--- a/src/org/thermostat/qa2/reporter/LogParser.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/reporter/LogParser.java Fri Jul 10 14:21:09 2015 +0200 @@ -86,7 +86,7 @@ } TestMethodResult testMethod = new TestMethodResult(methodName, result); - if (result == FAILED || beforeMethod) { + if (result == FAILED || result == ERROR || beforeMethod) { String reason = getReason(methodLine); List<String> stackTrace = new ArrayList(); for (;;) {
--- a/src/org/thermostat/qa2/tests/CliClientDBModificationsSmokeTest.java Fri May 22 01:23:01 2015 +0200 +++ b/src/org/thermostat/qa2/tests/CliClientDBModificationsSmokeTest.java Fri Jul 10 14:21:09 2015 +0200 @@ -30,7 +30,6 @@ */ package org.thermostat.qa2.tests; -import java.io.File; import java.util.List; import static org.thermostat.qa2.framework.Assert.*; import org.thermostat.qa2.framework.NativeProcess; @@ -65,7 +64,7 @@ mongo.writeln("quit()"); mongo.waitFor(); - String[] thermostatCmds = {ThermostatQAConfig.thermostatHome + File.separator + "bin" + File.separator + "thermostat", "shell"}; + String[] thermostatCmds = {ThermostatQAConfig.getThermostatExecutablePath(), "shell"}; Shell thermostat = new Shell(thermostatCmds); thermostat.setEnvironmentVariable("USER_THERMOSTAT_HOME", ThermostatQAConfig.getThermostatUserHome()); thermostat.setStdOutMode(NativeProcess.MODE_LOG_AND_BUFFER);