Explorar el Código

HPCC-8446 Added ability to run single query in regress

Moved call to run a query out of runSuite.
Moved calls to create report and display report out of runSuite.
Added cli options to run a single query against a cluster.

Signed-off-by: Philip Schwartz <philip.schwartz@lexisnexis.com>
Philip Schwartz hace 12 años
padre
commit
54e7d3e3c7
Se han modificado 2 ficheros con 52 adiciones y 26 borrados
  1. 36 24
      testing/regress/hpcc/regression/regress.py
  2. 16 2
      testing/regress/regress

+ 36 - 24
testing/regress/hpcc/regression/regress.py

@@ -83,39 +83,51 @@ class Regression:
         return Suite('setup', self.setupDir, self.dir_a, self.dir_ex,
                      self.dir_r)
 
-    def runSuite(self, name, suite):
-        server = self.config.ip
+    def buildLogging(self, name):
         report = Report(name)
         curTime = time.strftime("%y-%m-%d-%H-%M")
         logName = name + "." + curTime + ".log"
+        log = os.path.join(self.logDir, logName)
+        self.log.addHandler(log, 'DEBUG')
+        return (report, log)
+
+    @staticmethod
+    def displayReport(report):
+        report[0].display(report[1])
+
+    def runSuite(self, name, suite):
+        report = self.buildLogging(name)
         if name == "setup":
             cluster = 'hthor'
         else:
             cluster = name
-        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())))
         cnt = 1
         for query in suite.getSuite():
-            logging.warn("%s. Test: %s" % (repr(cnt), query.ecl))
-            ECLCC().makeArchive(query)
-            res = ECLcmd().runCmd("run", cluster, query, report,
-                                  server=server, username=self.config.username,
-                                  password=self.config.password)
-            wuid = query.getWuid()
-            if wuid:
-                url = "http://" + self.config.server
-                url += "/WsWorkunits/WUInfo?Wuid="
-                url += wuid
-            if res:
-                logging.info("Pass %s" % wuid)
-                logging.info("URL %s" % url)
-            else:
-                if not wuid:
-                    logging.error("Fail No WUID")
-                else:
-                    logging.error("Fail %s" % wuid)
-                    logging.error("URL %s" % url)
+            self.runQuery(cluster, query, report, cnt)
             cnt += 1
-        report.display(log)
+        Regression.displayReport(report)
+
+    def runQuery(self, cluster, query, report, cnt=1):
+        logging.warn("%s. Test: %s" % (repr(cnt), query.ecl))
+        ECLCC().makeArchive(query)
+        res = ECLcmd().runCmd("run", cluster, query, report[0],
+                              server=self.config.ip,
+                              username=self.config.username,
+                              password=self.config.password)
+        wuid = query.getWuid()
+        if wuid:
+            url = "http://" + self.config.server
+            url += "/WsWorkunits/WUInfo?Wuid="
+            url += wuid
+        if res:
+            logging.info("Pass %s" % wuid)
+            logging.info("URL %s" % url)
+        else:
+            if not wuid:
+                logging.error("Fail No WUID")
+            else:
+                logging.error("Fail %s" % wuid)
+                logging.error("URL %s" % url)

+ 16 - 2
testing/regress/regress

@@ -21,9 +21,10 @@
 
 import argparse
 import logging
+import os
 
 from hpcc.regression.regress import Regression
-
+from hpcc.util.ecl.file import ECLFile
 
 if __name__ == "__main__":
     prog = "regress"
@@ -45,6 +46,11 @@ if __name__ == "__main__":
     parser_run = subparsers.add_parser('run', help='run help')
     parser_run.add_argument('cluster', help="Run the cluster suite.",
                             nargs='?', default='setup')
+    parser_query = subparsers.add_parser('query', help='query help')
+    parser_query.add_argument('query', help="Run a single query.",
+                              nargs='?')
+    parser_query.add_argument('cluster', help="Cluster for single query run.",
+                            nargs='?', default='setup')
     args = parser.parse_args()
 
     suiteDir = ""
@@ -59,7 +65,15 @@ if __name__ == "__main__":
             print "Avaliable Clusters: "
             for i in Clusters:
                 print i
-        if 'cluster' in args:
+        if 'query' in args:
+            ecl = os.path.join(regress.dir_ec, args.query)
+            eclfile = ECLFile(ecl, regress.dir_a, regress.dir_ex,
+                              regress.dir_r)
+            if not eclfile.testSkip(args.cluster)['skip']:
+                report = regress.buildLogging(args.query)
+                regress.runQuery(args.cluster, eclfile, report)
+                Regression.displayReport(report)
+        elif 'cluster' in args:
             regress.bootstrap()
             if 'setup' in args.cluster:
                 regress.runSuite('setup', regress.setup)