From d0c5b36c11cdc482a4c40502568b795017cf9f22 Mon Sep 17 00:00:00 2001 From: Timofey Date: Mon, 8 Feb 2016 15:51:36 +0300 Subject: 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. --- tools/integration_tests_runner.py | 40 +++++++++++++++++++++++++++++---------- 1 file 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() -- cgit v1.2.3