On Mon, Nov 18, 2024 at 01:10:14PM +0100, Thomas Huth wrote:
> On 18/11/2024 11.57, Peter Maydell wrote:
> > I just ran out of disk space on my dev machine, because:
> > 
> > $ du -h build/clang/tests/functional/
> > [...]
> > 11G     build/clang/tests/functional/
> 
> That's indeed a lot. I only got 6.9G in my build tree for all targets ... I
> guess there are some stale files lying around, so as a temporary mitigation,
> just try to delete that folder (it should get recreated the next time you
> run the tests).
> 
> > The new functional tests seem to be eating disk space.
> > 
> > Even the build tree I have that's just arm targets is 7.1GB.
> > 
> > Could you have a look at what's happening here?
> 
> I am aware of the problem and got it on my TODO list already... I think we
> best should set the "workdir" to a temporary folder that we can remove once
> the test has finished, that will automatically delete all binary assets that
> the test created during its runtime.

workdir also stores the logs currently, which we want to preserve, but we
can just move assets to a sub-tree instead. Something approx like this:

@@ -40,11 +42,11 @@ 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())
-        os.makedirs(self.workdir, exist_ok=True)
+        self.outputdir = Path(BUILD_DIR, 'tests', 'functional', self.arch, 
self.id())
+        self.workdir = Path(self.outputdir, 'scratch')
+        self.workdir.mkdir(parents=True, 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 not "QEMU_TEST_SKIP_RMTREE" in os.environ:
+            shutil.rmtree(self.workdir)
         self.log.removeHandler(self._log_fh)
 
     def main():


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Reply via email to