Listing all installed packages on a system is a costly
operation on an average desktop system, and hardcoded
into autotest behavior, making the life of people
developing tests unnecessarily painful. So, make it
configurable to toggle package listing, defaulting to
False, so test developers don't have to use it, and
reccommend it for server side setups.

Signed-off-by: Lucas Meneghel Rodrigues <[email protected]>
---
 client/bin/base_sysinfo.py |   38 +++++++++++++++++++++++---------------
 global_config.ini          |    2 ++
 2 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/client/bin/base_sysinfo.py b/client/bin/base_sysinfo.py
index fa42a76..a195c95 100644
--- a/client/bin/base_sysinfo.py
+++ b/client/bin/base_sysinfo.py
@@ -1,8 +1,13 @@
 import os, shutil, re, glob, subprocess, logging, gzip
 
-from autotest_lib.client.common_lib import log
+from autotest_lib.client.common_lib import log, global_config
 from autotest_lib.client.bin import utils, package
 
+GLOBAL_CONFIG = global_config.global_config
+
+_LOG_INSTALLED_PACKAGES = GLOBAL_CONFIG.get_config_value('CLIENT',
+                                                       
'log_installed_packages',
+                                                       type=bool, 
default=False)
 
 _DEFAULT_COMMANDS_TO_LOG_PER_TEST = []
 _DEFAULT_COMMANDS_TO_LOG_PER_BOOT = [
@@ -238,16 +243,18 @@ class base_sysinfo(object):
         for log in (self.test_loggables | self.boot_loggables):
             log.run(logdir)
 
-        # also log any installed packages
-        installed_path = os.path.join(logdir, "installed_packages")
-        installed_packages = "\n".join(package.list_all()) + "\n"
-        utils.open_write_close(installed_path, installed_packages)
+        if _LOG_INSTALLED_PACKAGES:
+            # also log any installed packages
+            installed_path = os.path.join(logdir, "installed_packages")
+            installed_packages = "\n".join(package.list_all()) + "\n"
+            utils.open_write_close(installed_path, installed_packages)
 
 
     @log.log_and_ignore_errors("pre-test sysinfo error:")
     def log_before_each_test(self, test):
         """ Logging hook called before a test starts. """
-        self._installed_packages = package.list_all()
+        if _LOG_INSTALLED_PACKAGES:
+            self._installed_packages = package.list_all()
         if os.path.exists("/var/log/messages"):
             stat = os.stat("/var/log/messages")
             self._messages_size = stat.st_size
@@ -286,15 +293,16 @@ class base_sysinfo(object):
         keyval = self.log_test_keyvals(test_sysinfodir)
         test.write_test_keyval(keyval)
 
-        # log any changes to installed packages
-        old_packages = set(self._installed_packages)
-        new_packages = set(package.list_all())
-        added_path = os.path.join(test_sysinfodir, "added_packages")
-        added_packages = "\n".join(new_packages - old_packages) + "\n"
-        utils.open_write_close(added_path, added_packages)
-        removed_path = os.path.join(test_sysinfodir, "removed_packages")
-        removed_packages = "\n".join(old_packages - new_packages) + "\n"
-        utils.open_write_close(removed_path, removed_packages)
+        if _LOG_INSTALLED_PACKAGES:
+            # log any changes to installed packages
+            old_packages = set(self._installed_packages)
+            new_packages = set(package.list_all())
+            added_path = os.path.join(test_sysinfodir, "added_packages")
+            added_packages = "\n".join(new_packages - old_packages) + "\n"
+            utils.open_write_close(added_path, added_packages)
+            removed_path = os.path.join(test_sysinfodir, "removed_packages")
+            removed_packages = "\n".join(old_packages - new_packages) + "\n"
+            utils.open_write_close(removed_path, removed_packages)
 
 
     @log.log_and_ignore_errors("pre-test siteration sysinfo error:")
diff --git a/global_config.ini b/global_config.ini
index 6a1d535..cb954eb 100644
--- a/global_config.ini
+++ b/global_config.ini
@@ -58,6 +58,8 @@ drop_caches_between_iterations: True
 # Specify an alternate location to store the test results
 #output_dir: /var/log/autotest/
 output_dir:
+# Log installed packages (recommended setting to True on server setups)
+log_installed_packages = False
 
 [SERVER]
 # Hostname of the autotest RPC server. You should set a different hostname
-- 
1.7.7.4

_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to