From c21f1d34a3d1212970c742c8d88de34017657261 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Jan 15 2018 21:30:52 +0000 Subject: Faster SCM tests. Fixes #832. The slow tests there are hobbled by this `retry(...)` decorator with hardcoded timeouts. We want those to be relatively long in prod and relatively short in test and dev. --- diff --git a/conf/config.py b/conf/config.py index c34d01a..89f7d26 100644 --- a/conf/config.py +++ b/conf/config.py @@ -109,6 +109,9 @@ class TestConfiguration(BaseConfiguration): # Global network-related values, in seconds NET_TIMEOUT = 3 NET_RETRY_INTERVAL = 1 + # SCM network-related values, in seconds + SCM_NET_TIMEOUT = 3 + SCM_NET_RETRY_INTERVAL = 1 KOJI_CONFIG = './conf/koji.conf' KOJI_PROFILE = 'staging' diff --git a/module_build_service/config.py b/module_build_service/config.py index 8c664d0..245a112 100644 --- a/module_build_service/config.py +++ b/module_build_service/config.py @@ -354,6 +354,14 @@ class Config(object): 'type': int, 'default': 30, 'desc': 'Global network retry interval for read/write operations, in seconds.'}, + 'scm_net_timeout': { + 'type': int, + 'default': 60, + 'desc': 'Network timeout for SCM operations, in seconds.'}, + 'scm_net_retry_interval': { + 'type': int, + 'default': 15, + 'desc': 'Network retry interval for SCM operations, in seconds.'}, 'no_auth': { 'type': bool, 'default': False, diff --git a/module_build_service/scm.py b/module_build_service/scm.py index 6399771..182a4bb 100644 --- a/module_build_service/scm.py +++ b/module_build_service/scm.py @@ -34,7 +34,7 @@ import tempfile import shutil import datetime -from module_build_service import log +from module_build_service import log, conf from module_build_service.errors import ( Forbidden, ValidationError, UnprocessableEntity, ProgrammingError) import module_build_service.utils @@ -129,7 +129,10 @@ class SCM(object): return None @staticmethod - @module_build_service.utils.retry(timeout=60, interval=15, wait_on=UnprocessableEntity) + @module_build_service.utils.retry( + timeout=conf.scm_net_timeout, + interval=conf.scm_net_retry_interval, + wait_on=UnprocessableEntity) def _run(cmd, chdir=None, log_stdout=False): proc = sp.Popen(cmd, stdout=sp.PIPE, stderr=sp.PIPE, cwd=chdir) stdout, stderr = proc.communicate()