diff options
author | Timofey <t.danshin@corp.mail.ru> | 2016-02-08 15:51:36 +0300 |
---|---|---|
committer | Sergey Yershov <yershov@corp.mail.ru> | 2016-03-23 16:16:59 +0300 |
commit | d0c5b36c11cdc482a4c40502568b795017cf9f22 (patch) | |
tree | ad6db89c68f31af8fe2e75d0bf410afe2626fd10 | |
parent | 004b63425fbaab6bb0a02ad4ade111cd5fa19d82 (diff) |
Create temp. folders for certain tests
Some tests fail when running in parallel because they compete for certain resources. To eliminate that situation we now create temporary folders for those tests and pass those folders as parameters.
-rw-r--r-- | tools/integration_tests_runner.py | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/tools/integration_tests_runner.py b/tools/integration_tests_runner.py index 2bcf234cf5..280938bf7f 100644 --- a/tools/integration_tests_runner.py +++ b/tools/integration_tests_runner.py @@ -1,12 +1,15 @@ from __future__ import print_function + +import logging +import multiprocessing from optparse import OptionParser +from os import path +import shutil import subprocess -import multiprocessing +import tempfile from threading import Lock from threading import Thread import traceback -import logging -from os import path from Queue import Queue @@ -17,17 +20,20 @@ from run_desktop_tests import tests_on_disk __author__ = 't.danshin' +TEMPFOLDER_TESTS = ["search_integration_tests"] + + class IntegrationRunner: def __init__(self): self.process_cli() self.proc_count = multiprocessing.cpu_count() - logging.info("Number of processors is: {}".format(self.proc_count)) + logging.info("Number of processors is: {nproc}".format(nproc=self.proc_count)) self.file_lock = Lock() - self.tests = Queue() + def run_tests(self): for exec_file in self.runlist: tests = self.get_tests_from_exec_file(exec_file, "--list_tests")[0] @@ -58,17 +64,31 @@ class IntegrationRunner: return test_file, test = self.tests.get() - self.exec_test(test_file, test) + self.exec_test(test_file, test, clean_env=(test_file in TEMPFOLDER_TESTS)) + except: logging.error(traceback.format_exc()) + return + + def exec_test(self, test_file, test, clean_env=False): + keys = '--filter={test}'.format(test=test) + if clean_env: + tmpdir = tempfile.mkdtemp() + logging.debug("Temp dir: {tmpdir}".format(tmpdir=tmpdir)) + + out, err, result = self.get_tests_from_exec_file(test_file, keys) + + if clean_env: + try: + shutil.rmtree(tmpdir) + except: + logging.error("Failed to remove tempdir {tmpdir}".format(tmpdir=tmpdir)) - def exec_test(self, test_file, test): - out, err, result = self.get_tests_from_exec_file(test_file, '--filter={test}'.format(test=test)) with self.file_lock: - self.file.write("BEGIN: {}\n".format(test_file)) + self.file.write("BEGIN: {file}\n".format(file=test_file)) self.file.write(str(err)) - self.file.write("\nEND: {} | result: {}\n\n".format(test_file, result)) + self.file.write("\nEND: {file} | result: {res}\n\n".format(file=test_file, res=result)) self.file.flush() |