uitest/mass-testing/calc.py |    2 
 uitest/mass-testing/run.py  |  150 ++++++++++++++++++++++++++------------------
 2 files changed, 94 insertions(+), 58 deletions(-)

New commits:
commit f631db9e5e83706ed2678fb4db737700dd623a1b
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Mon Apr 22 22:38:28 2019 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Apr 22 22:38:28 2019 +0200

    mass-uitesting: Get focus after closing preview
    
    otherwise, it fails at times

diff --git a/uitest/mass-testing/calc.py b/uitest/mass-testing/calc.py
index 7aaa190..7217c3a 100755
--- a/uitest/mass-testing/calc.py
+++ b/uitest/mass-testing/calc.py
@@ -88,6 +88,8 @@ class massTesting(UITestCase):
             self.xUITest.executeCommand(".uno:PrintPreview")  #open print 
preview
             self.xUITest.executeCommand(".uno:ClosePreview")  # close print 
preview
 
+            self.xUITest.getTopFocusWindow()
+
         self.ui_test.close_doc()
 
     def test_hide_column_and_undo(self):
commit 7eeaee26607180f22b4a374c9ee6747a6ec15401
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Mon Apr 22 22:33:07 2019 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Apr 22 22:33:07 2019 +0200

    mass-uitesting: ignore empty lines

diff --git a/uitest/mass-testing/run.py b/uitest/mass-testing/run.py
index db5aa0a..20bb101 100755
--- a/uitest/mass-testing/run.py
+++ b/uitest/mass-testing/run.py
@@ -143,24 +143,27 @@ def run_tests_and_get_results(liboPath, listFiles, 
isDebug, isResume):
             importantInfo = ''
             isFailure = False
             for line in outputLines:
-                line = line.decode("utf-8")
+                line = line.decode("utf-8").strip()
+
+                if not line:
+                    continue
 
                 if isDebug:
                     print(line)
 
-                if 'skipped' == line.strip().lower():
+                if 'skipped' == line.lower():
                     logger.info("SKIP: " + fileName + " : " + importantInfo)
                     results['skip'] += 1
                     break
 
-                if 'Execution time' in line.strip():
+                if 'Execution time' in line:
 
-                    importantInfo = line.strip().split('for ')[1]
+                    importantInfo = line.split('for ')[1]
 
                     #Extend timeout
                     timeout = time.time() + timeoutTime
 
-                elif importantInfo and 'error' == line.strip().lower() or 
'fail' == line.strip().lower():
+                elif importantInfo and 'error' == line.lower() or 'fail' == 
line.lower():
                     isFailure = True
 
             if importantInfo:
commit 38a10c2f739f4630317acbdadf53905fd9d6e0e2
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Mon Apr 22 22:22:21 2019 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Apr 22 22:22:21 2019 +0200

    mass-uitesting: use a variable here

diff --git a/uitest/mass-testing/run.py b/uitest/mass-testing/run.py
index 98304ed..db5aa0a 100755
--- a/uitest/mass-testing/run.py
+++ b/uitest/mass-testing/run.py
@@ -120,8 +120,9 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug, 
isResume):
         # Do not block on process.stdout
         fcntl.fcntl(process.stdout.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
 
-        # Kill the process if the test can't be executed in 20 seconds
-        timeout = time.time() + 20
+        # Kill the process if the test can't be executed in 'timeoutTime' 
seconds
+        timeoutTime = 20
+        timeout = time.time() + timeoutTime
         while True:
             time.sleep(1)
 
@@ -157,7 +158,7 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug, 
isResume):
                     importantInfo = line.strip().split('for ')[1]
 
                     #Extend timeout
-                    timeout = time.time() + 20
+                    timeout = time.time() + timeoutTime
 
                 elif importantInfo and 'error' == line.strip().lower() or 
'fail' == line.strip().lower():
                     isFailure = True
commit c4571964fd2814490d4539cb9ba305a0611da41a
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Mon Apr 22 22:15:59 2019 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Apr 22 22:15:59 2019 +0200

    mass-uitesting: handle failures correctly

diff --git a/uitest/mass-testing/run.py b/uitest/mass-testing/run.py
index 5408fcf..98304ed 100755
--- a/uitest/mass-testing/run.py
+++ b/uitest/mass-testing/run.py
@@ -122,11 +122,9 @@ def run_tests_and_get_results(liboPath, listFiles, 
isDebug, isResume):
 
         # Kill the process if the test can't be executed in 20 seconds
         timeout = time.time() + 20
-        isFailure = False
         while True:
             time.sleep(1)
 
-
             if time.time() > timeout:
                 logger.info("TIMEOUT: " + fileName)
                 results['timeout'] += 1
@@ -142,6 +140,7 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug, 
isResume):
                 pass
 
             importantInfo = ''
+            isFailure = False
             for line in outputLines:
                 line = line.decode("utf-8")
 
@@ -161,14 +160,16 @@ def run_tests_and_get_results(liboPath, listFiles, 
isDebug, isResume):
                     timeout = time.time() + 20
 
                 elif importantInfo and 'error' == line.strip().lower() or 
'fail' == line.strip().lower():
-                    logger.info("FAIL: " + fileName + " : " + importantInfo)
-                    results['fail'] += 1
                     isFailure = True
 
-            # No error found between the Execution time line and the end of 
stdout
-            if importantInfo and not isFailure:
-                logger.info("PASS: " + fileName + " : " + str(importantInfo))
-                results['pass'] += 1
+            if importantInfo:
+                if isFailure:
+                    logger.info("FAIL: " + fileName + " : " + importantInfo)
+                    results['fail'] += 1
+                else:
+                    # No error found between the Execution time line and the 
end of stdout
+                    logger.info("PASS: " + fileName + " : " + 
str(importantInfo))
+                    results['pass'] += 1
 
             if process.poll() is not None:
                 break
commit a31d3edc854f6f5164ee433d79608a5b4801c4fc
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Mon Apr 22 22:04:50 2019 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Apr 22 22:06:33 2019 +0200

    mass-uitesting: Add resume parameter

diff --git a/uitest/mass-testing/run.py b/uitest/mass-testing/run.py
index c266ff2..5408fcf 100755
--- a/uitest/mass-testing/run.py
+++ b/uitest/mass-testing/run.py
@@ -62,7 +62,7 @@ def get_file_names(component, filesPath):
 
     return auxNames
 
-def run_tests_and_get_results(liboPath, listFiles, isDebug):
+def run_tests_and_get_results(liboPath, listFiles, isDebug, isResume):
 
     #Create directory for the user profile
     profilePath = '/tmp/libreoffice/4/'
@@ -84,19 +84,21 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug):
     #Keep track of the files run
     filesRun = {}
 
-    pklFile = './logs/' + component + '.pkl'
-    if os.path.exists(pklFile):
-        with open(pklFile, 'rb') as pickle_in:
-            filesRun = pickle.load(pickle_in)
+    if isResume:
+        pklFile = './logs/' + component + '.pkl'
+        if os.path.exists(pklFile):
+            with open(pklFile, 'rb') as pickle_in:
+                filesRun = pickle.load(pickle_in)
 
-    if sourceHash not in filesRun:
-        filesRun[sourceHash] = []
+        if sourceHash not in filesRun:
+            filesRun[sourceHash] = []
 
     for fileName in listFiles:
 
-        if fileName in filesRun[sourceHash]:
-            print("SKIP: " + fileName)
-            continue
+        if isResume:
+            if fileName in filesRun[sourceHash]:
+                print("SKIP: " + fileName)
+                continue
 
         # Replace the profile file with
         # 1. DisableMacrosExecution = True
@@ -124,6 +126,7 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug):
         while True:
             time.sleep(1)
 
+
             if time.time() > timeout:
                 logger.info("TIMEOUT: " + fileName)
                 results['timeout'] += 1
@@ -139,7 +142,6 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug):
                 pass
 
             importantInfo = ''
-
             for line in outputLines:
                 line = line.decode("utf-8")
 
@@ -171,11 +173,11 @@ def run_tests_and_get_results(liboPath, listFiles, 
isDebug):
             if process.poll() is not None:
                 break
 
+        if isResume:
+            filesRun[sourceHash].append(fileName)
 
-        filesRun[sourceHash].append(fileName)
-
-        with open(pklFile, 'wb') as pickle_out:
-            pickle.dump(filesRun, pickle_out)
+            with open(pklFile, 'wb') as pickle_out:
+                pickle.dump(filesRun, pickle_out)
 
     totalTests = sum(results.values())
     if totalTests > 0:
@@ -199,6 +201,8 @@ if __name__ == '__main__':
     parser.add_argument(
             '--debug', action='store_true', help="Flag to print output")
     parser.add_argument(
+            '--resume', action='store_true', help="Flag to resume previous 
runs")
+    parser.add_argument(
             '--component', required=True, help="The component to be used. 
Options: " + \
                     " ".join("[" + x + "]" for x in extensions.keys()))
 
@@ -227,6 +231,6 @@ if __name__ == '__main__':
 
     listFiles = get_file_names(component, filesPath)
 
-    run_tests_and_get_results(liboPath, listFiles, argument.debug)
+    run_tests_and_get_results(liboPath, listFiles, argument.debug, 
argument.resume)
 
 # vim: set shiftwidth=4 softtabstop=4 expandtab:
commit 399377505af0bfa1f711d1a7274e390528634718
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Mon Apr 22 17:43:22 2019 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Apr 22 22:01:58 2019 +0200

    mass-uitesting: timeout by test

diff --git a/uitest/mass-testing/run.py b/uitest/mass-testing/run.py
index 6e3aeb6..c266ff2 100755
--- a/uitest/mass-testing/run.py
+++ b/uitest/mass-testing/run.py
@@ -13,6 +13,8 @@ import signal
 import logging
 from shutil import copyfile
 import pickle
+import time
+import fcntl
 
 extensions = {
     'writer' : [ "odt", "doc", "docx", "rtf" ],
@@ -68,10 +70,11 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug):
     if not os.path.exists(userPath):
         os.makedirs(userPath)
 
-    totalPass = 0
-    totalFail = 0
-    totalTimeout = 0
-    totalSkip = 0
+    results = {
+        'pass' : 0,
+        'fail' : 0,
+        'timeout' : 0,
+        'skip' : 0}
 
     sofficePath = liboPath + "instdir/program/soffice"
     process = Popen([sofficePath, "--version"], stdout=PIPE, stderr=PIPE)
@@ -104,62 +107,84 @@ def run_tests_and_get_results(liboPath, listFiles, 
isDebug):
         #TODO: Find a better way to pass fileName parameter
         os.environ["TESTFILENAME"] = fileName
 
-        with Popen(["python3.5",
+        process = Popen(["python3.5",
                     liboPath + "uitest/test_main.py",
                     "--debug",
                     "--soffice=path:" + sofficePath,
                     "--userdir=file://" + profilePath,
                     "--file=" + component + ".py"], stdin=PIPE, stdout=PIPE, 
stderr=PIPE,
-                    preexec_fn=os.setsid) as process:
-            try:
-                outputLines = 
process.communicate(timeout=60)[0].decode('utf-8').splitlines()
-                importantInfo = ''
-                for line in outputLines:
-                    if isDebug:
-                        print(line)
-
-                    if 'skipped' == line.strip().lower():
-                        logger.info("SKIP: " + fileName + " : " + 
importantInfo)
-                        totalSkip += 1
-                        break
-
-                    if 'Execution time' in line:
-                        # No error found between one Execution time line and 
the other
-                        if importantInfo:
-                            logger.info("PASS: " + fileName + " : " + 
importantInfo)
-                            totalPass += 1
-
-                        importantInfo = line.strip().split('for ')[1]
-
-                    elif importantInfo and 'error' == line.strip().lower() or 
'fail' == line.strip().lower():
-                        logger.info("FAIL: " + fileName + " : " + 
importantInfo)
-                        totalFail += 1
-                        importantInfo = ''
-
-                if importantInfo:
-                    # No error found between the last Execution time line and 
the end
-                    logger.info("PASS: " + fileName + " : " + importantInfo)
-                    totalPass += 1
-
-            except TimeoutExpired:
+                    preexec_fn=os.setsid)
+
+        # Do not block on process.stdout
+        fcntl.fcntl(process.stdout.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
+
+        # Kill the process if the test can't be executed in 20 seconds
+        timeout = time.time() + 20
+        isFailure = False
+        while True:
+            time.sleep(1)
+
+            if time.time() > timeout:
                 logger.info("TIMEOUT: " + fileName)
-                totalTimeout += 1
+                results['timeout'] += 1
+
+                # kill popen process
+                os.killpg(process.pid, signal.SIGKILL)
+                break
+
+            try:
+                outputLines = process.stdout.readlines()
+
+            except IOError:
+                pass
+
+            importantInfo = ''
+
+            for line in outputLines:
+                line = line.decode("utf-8")
+
+                if isDebug:
+                    print(line)
+
+                if 'skipped' == line.strip().lower():
+                    logger.info("SKIP: " + fileName + " : " + importantInfo)
+                    results['skip'] += 1
+                    break
+
+                if 'Execution time' in line.strip():
+
+                    importantInfo = line.strip().split('for ')[1]
+
+                    #Extend timeout
+                    timeout = time.time() + 20
+
+                elif importantInfo and 'error' == line.strip().lower() or 
'fail' == line.strip().lower():
+                    logger.info("FAIL: " + fileName + " : " + importantInfo)
+                    results['fail'] += 1
+                    isFailure = True
+
+            # No error found between the Execution time line and the end of 
stdout
+            if importantInfo and not isFailure:
+                logger.info("PASS: " + fileName + " : " + str(importantInfo))
+                results['pass'] += 1
+
+            if process.poll() is not None:
+                break
 
-                os.killpg(process.pid, signal.SIGINT) # send signal to the 
process group
 
         filesRun[sourceHash].append(fileName)
 
         with open(pklFile, 'wb') as pickle_out:
             pickle.dump(filesRun, pickle_out)
 
-    totalTests = totalPass + totalTimeout + totalSkip + totalFail
+    totalTests = sum(results.values())
     if totalTests > 0:
         logger.info("")
         logger.info("Total Tests: " + str(totalTests))
-        logger.info("\tPASS: " + str(totalPass))
-        logger.info("\tSKIP: " + str(totalSkip))
-        logger.info("\tTIMEOUT: " + str(totalTimeout))
-        logger.info("\tFAIL: " + str(totalFail))
+        logger.info("\tPASS: " + str(results['pass']))
+        logger.info("\tSKIP: " + str(results['skip']))
+        logger.info("\tTIMEOUT: " + str(results['timeout']))
+        logger.info("\tFAIL: " + str(results['fail']))
         logger.info("")
     else:
         print("No test run!")
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to