Преглед изворни кода

HPCC-8284 Regression Suite - Moved pathing of regression suite run

Moved pathing to standard locations by default.
- /var/lib/HPCCSystems/regression
- /var/log/HPCCSystems/regression

Added debug logging of used directories.

Added Error for suiteDir not defined with notice to set in regress.json
or with --suiteDir option.

Signed-off-by: Philip Schwartz <philip.schwartz@lexisnexis.com>
Philip Schwartz пре 12 година
родитељ
комит
2c2deb73c5

+ 1 - 0
testing/regress/hpcc/common/error.py

@@ -23,6 +23,7 @@ ERROR = {
     "1002": "Command timed out.",
     "2000": "Value must be of Type Suite or ECLFile.",
     "2001": "ECL Directory does not exist.",
+    "2002": "suiteDir not set. Set in regress.json or use --suiteDir",
     "3000": "Return is null",
     "3001": "Return diff does not match."
 }

+ 34 - 18
testing/regress/hpcc/regression/regress.py

@@ -23,6 +23,7 @@ import sys
 import time
 
 from ..common.config import Config
+from ..common.error import Error
 from ..common.logger import Logger
 from ..common.report import Report, Tee
 from ..regression.suite import Suite
@@ -31,43 +32,58 @@ from ..util.ecl.command import ECLcmd
 
 
 class Regression:
-    def __init__(self, config="regress.json", level="info"):
+    def __init__(self, config="regress.json", level='info', suiteDir=None):
         self.config = Config(config).configObj
         self.suites = {}
         self.log = Logger(level)
+        if not suiteDir:
+            self.suiteDir = self.config.suiteDir
+            if not self.suiteDir:
+                raise Error("2002")
+        else:
+            self.suiteDir = suiteDir
+        self.regressionDir = self.config.regressionDir
+        self.logDir = self.config.logDir
+        self.setupDir = os.path.join(self.suiteDir, self.config.setupDir)
+        self.dir_ec = os.path.join(self.suiteDir, self.config.eclDir)
+        self.dir_ex = os.path.join(self.suiteDir, self.config.keyDir)
+        self.dir_a = os.path.join(self.regressionDir, self.config.archiveDir)
+        self.dir_r = os.path.join(self.regressionDir, self.config.resultDir)
+        logging.debug("Suite Dir      : %s", suiteDir)
+        logging.debug("Regression Dir : %s", self.regressionDir)
+        logging.debug("Result Dir     : %s", self.dir_r)
+        logging.debug("Log Dir        : %s", self.logDir)
+        logging.debug("ECL Dir        : %s", self.dir_ec)
+        logging.debug("Key Dir        : %s", self.dir_ex)
+        logging.debug("Setup Dir      : %s", self.setupDir)
+        logging.debug("Archive Dir    : %s", self.dir_a)
 
     def setLogLevel(self, level):
         self.log.setLevel(level)
 
     def bootstrap(self):
-        archives = os.path.join(self.config.baseDir, self.config.archiveDir)
-        results = os.path.join(self.config.baseDir, self.config.resultDir)
-        self.createDirectory(archives)
-        self.createDirectory(results)
+        self.createDirectory(self.regressionDir)
+        self.createDirectory(self.dir_a)
+        self.createDirectory(self.dir_r)
+        self.createDirectory(self.logDir)
         self.setup = self.Setup()
         for cluster in self.config.Clusters:
             self.createSuite(cluster)
+        os.chdir(self.regressionDir)
 
     def createDirectory(self, dir_n):
         if not os.path.isdir(dir_n):
             os.makedirs(dir_n)
 
     def createSuite(self, cluster):
-        dir_ec = os.path.join(self.config.baseDir, self.config.eclDir)
-        dir_a = os.path.join(self.config.baseDir, self.config.archiveDir)
-        dir_ex = os.path.join(self.config.baseDir, self.config.keyDir)
-        dir_r = os.path.join(self.config.baseDir, self.config.resultDir)
-        self.suites[cluster] = Suite(cluster, dir_ec, dir_a, dir_ex, dir_r)
+        self.suites[cluster] = Suite(cluster, self.dir_ec,
+                                     self.dir_a, self.dir_ex, self.dir_r)
 
     def Setup(self):
-        setup = os.path.join(self.config.baseDir, self.config.setupDir)
-        dir_a = os.path.join(self.config.baseDir, self.config.archiveDir)
-        dir_ex = os.path.join(self.config.baseDir, self.config.keyDir)
-        dir_r = os.path.join(self.config.baseDir, self.config.resultDir)
-        return Suite('setup', setup, dir_a, dir_ex, dir_r)
+        return Suite('setup', self.setupDir, self.dir_a, self.dir_ex,
+                     self.dir_r)
 
     def runSuite(self, name, suite):
-        logDir = os.path.join(self.config.baseDir, self.config.logDir)
         server = self.config.ip
         report = Report(name)
         curTime = time.strftime("%y-%m-%d-%H-%M")
@@ -76,7 +92,7 @@ class Regression:
             cluster = 'hthor'
         else:
             cluster = name
-        log = os.path.join(logDir, logName)
+        log = os.path.join(self.logDir, logName)
         self.log.addHandler(log, 'DEBUG')
         logging.warn("Suite: %s" % name)
         logging.warn("Queries: %s" % repr(len(suite.getSuite())))
@@ -102,4 +118,4 @@ class Regression:
                     logging.error("Fail %s" % wuid)
                     logging.error("URL %s" % url)
             cnt += 1
-        report.display()
+        report.display(log)

+ 1 - 0
testing/regress/hpcc/regression/suite.py

@@ -19,6 +19,7 @@
 
 import os
 from ..util.ecl.file import ECLFile
+from ..common.error import Error
 
 
 class Suite:

+ 26 - 14
testing/regress/regress

@@ -20,9 +20,11 @@
 '''
 
 import argparse
+import logging
 
 from hpcc.regression.regress import Regression
 
+
 if __name__ == "__main__":
     prog = "regress"
     description = 'HPCC Platform Regression suite'
@@ -34,6 +36,8 @@ if __name__ == "__main__":
     parser.add_argument('--loglevel', help="Set the log level.",
                         nargs='?', default="info",
                         choices=['info', 'debug'])
+    parser.add_argument('--suiteDir', '-s', help="suiteDir to use.",
+                        nargs='?')
     subparsers = parser.add_subparsers(help='sub-command help')
     parser_list = subparsers.add_parser('list', help='list help')
     parser_list.add_argument('clusters', help="Print clusters from config.",
@@ -43,17 +47,25 @@ if __name__ == "__main__":
                             nargs='?', default='setup')
     args = parser.parse_args()
 
-    regress = Regression(args.config, args.loglevel)
-    if 'clusters' in args:
-        Clusters = ['setup']
-        for cluster in regress.config.Clusters:
-            Clusters.append(str(cluster))
-        print "Avaliable Clusters: "
-        for i in Clusters:
-            print i
-    if 'cluster' in args:
-        regress.bootstrap()
-        if 'setup' in args.cluster:
-            regress.runSuite('setup', regress.setup)
-        else:
-            regress.runSuite(args.cluster, regress.suites[args.cluster])
+    suiteDir = ""
+    if 'suiteDir' in args:
+        suiteDir = args.suiteDir
+    try:
+        regress = Regression(args.config, args.loglevel, suiteDir)
+        if 'clusters' in args:
+            Clusters = ['setup']
+            for cluster in regress.config.Clusters:
+                Clusters.append(str(cluster))
+            print "Avaliable Clusters: "
+            for i in Clusters:
+                print i
+        if 'cluster' in args:
+            regress.bootstrap()
+            if 'setup' in args.cluster:
+                regress.runSuite('setup', regress.setup)
+            else:
+                regress.runSuite(args.cluster, regress.suites[args.cluster])
+    except Exception as e:
+        logging.critical(e)
+    except KeyboardInterrupt:
+        logging.critical("Keyboard Interrupt Caught.")

+ 5 - 4
testing/regress/regress.json

@@ -5,13 +5,14 @@
         "password": "regress",
         "roxie": "127.0.0.1:9876",
         "server": "127.0.0.1:8010",
+        "suiteDir": "",
         "eclDir": "ecl",
         "setupDir": "ecl/setup",
         "keyDir": "ecl/key",
-        "archiveDir": "regression/archives",
-        "resultDir": "regression/results",
-        "logDir": "regression",
-        "baseDir": ".",
+        "archiveDir": "archives",
+        "resultDir": "results",
+        "regressionDir": "/var/lib/HPCCSystems/regression",
+        "logDir": "/var/log/HPCCSystems/regression",
         "Clusters": [
             "hthor",
             "thor",