Cleanup kube_config temp files between test runs
In my local tests running tox the tmp files of each test case get deleted after the run. However kube_config maintains a static list of temporary files it knows about and tries to re-use them in subsequent test runs which causes the test to fail [1]. Fix this by telling kube_config to cleanup its temporary files in the cleanup phase. [1] Trace Traceback (most recent call last): File "/home/tobias/src/nodepool/nodepool/tests/unit/test_builder.py", line 239, in test_image_rotation_invalid_external_name build001, image001 = self._test_image_rebuild_age(expire=172800) File "/home/tobias/src/nodepool/nodepool/tests/unit/test_builder.py", line 186, in _test_image_rebuild_age self.useBuilder(configfile) File "/home/tobias/src/nodepool/nodepool/tests/__init__.py", line 539, in useBuilder BuilderFixture(configfile, cleanup_interval, securefile) File "/home/tobias/src/nodepool/.tox/py37/lib/python3.7/site-packages/testtools/testcase.py", line 756, in useFixture reraise(*exc_info) File "/home/tobias/src/nodepool/.tox/py37/lib/python3.7/site-packages/testtools/_compat3x.py", line 16, in reraise raise exc_obj.with_traceback(exc_tb) File "/home/tobias/src/nodepool/.tox/py37/lib/python3.7/site-packages/testtools/testcase.py", line 731, in useFixture fixture.setUp() File "/home/tobias/src/nodepool/nodepool/tests/__init__.py", line 318, in setUp self.builder.start() File "/home/tobias/src/nodepool/nodepool/builder.py", line 1304, in start self._config = self._getAndValidateConfig() File "/home/tobias/src/nodepool/nodepool/builder.py", line 1279, in _getAndValidateConfig config = nodepool_config.loadConfig(self._config_path) File "/home/tobias/src/nodepool/nodepool/config.py", line 246, in loadConfig driver.reset() File "/home/tobias/src/nodepool/nodepool/driver/openshift/__init__.py", line 29, in reset config.load_kube_config(persist_config=True) File "/home/tobias/src/nodepool/.tox/py37/lib/python3.7/site-packages/kubernetes/config/kube_config.py", line 540, in load_kube_config loader.load_and_set(config) File "/home/tobias/src/nodepool/.tox/py37/lib/python3.7/site-packages/kubernetes/config/kube_config.py", line 422, in load_and_set self._load_cluster_info() File "/home/tobias/src/nodepool/.tox/py37/lib/python3.7/site-packages/kubernetes/config/kube_config.py", line 385, in _load_cluster_info file_base_path=self._config_base_path).as_file() File "/home/tobias/src/nodepool/.tox/py37/lib/python3.7/site-packages/kubernetes/config/kube_config.py", line 112, in as_file raise ConfigException("File does not exists: %s" % self._file) kubernetes.config.config_exception.ConfigException: File does not exists: /tmp/tmplafutg0j/tmpmiti10bn Ran 2 tests in 4.524s (+0.175s) FAILED (id=20, failures=1) Change-Id: Idce8ca9bed49162874af24b224e573121e250385
This commit is contained in:
parent
2e8f286c4f
commit
4131d7da59
|
@ -17,6 +17,7 @@
|
|||
|
||||
import glob
|
||||
import itertools
|
||||
import kubernetes.config.kube_config
|
||||
import logging
|
||||
import os
|
||||
import random
|
||||
|
@ -189,6 +190,16 @@ class BaseTestCase(testtools.TestCase):
|
|||
LoggingPopenFactory))
|
||||
self.setUpFakes()
|
||||
|
||||
self.addCleanup(self._cleanup)
|
||||
|
||||
def _cleanup(self):
|
||||
# This is a hack to cleanup kubernetes temp files during test runs.
|
||||
# The kube_config maintains a global dict of temporary files. During
|
||||
# running the tests those can get deleted during the cleanup phase of
|
||||
# the tests without kube_config knowing about this so forcefully tell
|
||||
# kube_config to clean this up.
|
||||
kubernetes.config.kube_config._cleanup_temp_files()
|
||||
|
||||
def setUpFakes(self):
|
||||
clouds_path = os.path.join(os.path.dirname(__file__),
|
||||
'fixtures', 'clouds.yaml')
|
||||
|
|
Loading…
Reference in New Issue