Daniel P. Berrangé <berra...@redhat.com> writes:

> The build/tests/functional subdirectories are consuming huge amounts
> of disk space.
>
> Split the location for scratch files into a 'scratch' sub-directory,
> separate from log files, and delete it upon completion of each test.
> The new env variable QEMU_TEST_KEEP_SCRATCH can be set to preserve
> this scratch dir for debugging access if required.
>
> Signed-off-by: Daniel P. Berrangé <berra...@redhat.com>
> ---
>  docs/devel/testing/functional.rst      |  6 ++++++
>  tests/functional/qemu_test/testcase.py | 14 +++++++++-----
>  2 files changed, 15 insertions(+), 5 deletions(-)
>
> diff --git a/docs/devel/testing/functional.rst 
> b/docs/devel/testing/functional.rst
> index bf6f1bb81e..6b5d0c5b98 100644
> --- a/docs/devel/testing/functional.rst
> +++ b/docs/devel/testing/functional.rst
> @@ -65,6 +65,12 @@ to the QEMU binary that should be used for the test, for 
> example::
>    $ export QEMU_TEST_QEMU_BINARY=$PWD/qemu-system-x86_64
>    $ python3 ../tests/functional/test_file.py
>  
> +The test framework will automatically purge any scratch files created during
> +the tests. If needing to debug a failed test, it is possible to keep these
> +files around on disk by setting ```QEMU_TEST_KEEP_SCRATCH=1``` as an env
> +variable.  Any preserved files will be deleted the next time the test is run
> +without this variable set.
> +
>  Overview
>  --------
>  
> diff --git a/tests/functional/qemu_test/testcase.py 
> b/tests/functional/qemu_test/testcase.py
> index 411978b5ef..b9418e2ac0 100644
> --- a/tests/functional/qemu_test/testcase.py
> +++ b/tests/functional/qemu_test/testcase.py
> @@ -13,8 +13,9 @@
>  
>  import logging
>  import os
> -import subprocess
>  import pycotap
> +import shutil
> +import subprocess
>  import sys
>  import unittest
>  import uuid
> @@ -40,11 +41,12 @@ def setUp(self, bin_prefix):
>          self.assertIsNotNone(self.qemu_bin, 'QEMU_TEST_QEMU_BINARY must be 
> set')
>          self.arch = self.qemu_bin.split('-')[-1]
>  
> -        self.workdir = os.path.join(BUILD_DIR, 'tests/functional', self.arch,
> -                                    self.id())
> +        self.outputdir = os.path.join(BUILD_DIR, 'tests', 'functional',
> +                                      self.arch, self.id())

I don't think you need save self.outputdir as only self.logdir is used
by the other functions.

> +        self.workdir = os.path.join(self.outputdir, 'scratch')
>          os.makedirs(self.workdir, exist_ok=True)
>  
> -        self.logdir = self.workdir
> +        self.logdir = self.outputdir
>          self.log_filename = os.path.join(self.logdir, 'base.log')
>          self.log = logging.getLogger('qemu-test')
>          self.log.setLevel(logging.DEBUG)
> @@ -56,6 +58,8 @@ def setUp(self, bin_prefix):
>          self.log.addHandler(self._log_fh)
>  
>      def tearDown(self):
> +        if "QEMU_TEST_KEEP_SCRATCH" not in os.environ:
> +            shutil.rmtree(self.workdir)
>          self.log.removeHandler(self._log_fh)
>  
>      def main():
> @@ -108,7 +112,7 @@ def setUp(self):
>  
>          console_log = logging.getLogger('console')
>          console_log.setLevel(logging.DEBUG)
> -        self.console_log_name = os.path.join(self.workdir, 'console.log')
> +        self.console_log_name = os.path.join(self.logdir, 'console.log')
>          self._console_log_fh = logging.FileHandler(self.console_log_name,
>                                                     mode='w')
>          self._console_log_fh.setLevel(logging.DEBUG)

Otherwise:

Reviewed-by: Alex Bennée <alex.ben...@linaro.org>


-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro

Reply via email to