[Python-checkins] cpython: Adds test.support.PGO and skips tests that are not useful for PGO.

steve.dower python-checkins at python.org
Tue Sep 6 22:38:39 EDT 2016


https://hg.python.org/cpython/rev/bb311f81a833
changeset:   103198:bb311f81a833
user:        Steve Dower <steve.dower at microsoft.com>
date:        Tue Sep 06 19:38:15 2016 -0700
summary:
  Adds test.support.PGO and skips tests that are not useful for PGO.

files:
  Lib/test/libregrtest/main.py                   |  2 ++
  Lib/test/support/__init__.py                   |  6 +++++-
  Lib/test/test_asyncore.py                      |  3 +++
  Lib/test/test_gdb.py                           |  1 +
  Lib/test/test_multiprocessing_fork.py          |  6 ++++++
  Lib/test/test_multiprocessing_forkserver.py    |  5 +++++
  Lib/test/test_multiprocessing_main_handling.py |  3 +++
  Lib/test/test_multiprocessing_spawn.py         |  5 +++++
  Lib/test/test_subprocess.py                    |  3 +++
  Makefile.pre.in                                |  2 +-
  Tools/msi/buildrelease.bat                     |  8 +++++---
  11 files changed, 39 insertions(+), 5 deletions(-)


diff --git a/Lib/test/libregrtest/main.py b/Lib/test/libregrtest/main.py
--- a/Lib/test/libregrtest/main.py
+++ b/Lib/test/libregrtest/main.py
@@ -473,6 +473,8 @@
         if self.ns.wait:
             input("Press any key to continue...")
 
+        support.PGO = self.ns.pgo
+
         setup_tests(self.ns)
 
         self.find_tests(tests)
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -105,7 +105,7 @@
     "check_warnings", "check_no_resource_warning", "EnvironmentVarGuard",
     "run_with_locale", "swap_item",
     "swap_attr", "Matcher", "set_memlimit", "SuppressCrashReport", "sortdict",
-    "run_with_tz",
+    "run_with_tz", "PGO",
     ]
 
 class Error(Exception):
@@ -878,6 +878,10 @@
 # Save the initial cwd
 SAVEDCWD = os.getcwd()
 
+# Set by libregrtest/main.py so we can skip tests that are not
+# useful for PGO
+PGO = False
+
 @contextlib.contextmanager
 def temp_dir(path=None, quiet=False):
     """Return a context manager that creates a temporary directory.
diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py
--- a/Lib/test/test_asyncore.py
+++ b/Lib/test/test_asyncore.py
@@ -11,6 +11,9 @@
 from test import support
 from io import BytesIO
 
+if support.PGO:
+    raise unittest.SkipTest("test is not helpful for PGO")
+
 try:
     import threading
 except ImportError:
diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py
--- a/Lib/test/test_gdb.py
+++ b/Lib/test/test_gdb.py
@@ -110,6 +110,7 @@
 
 BREAKPOINT_FN='builtin_id'
 
+ at support.skipIf(support.PGO, "not useful for PGO")
 class DebuggerTests(unittest.TestCase):
 
     """Test that the debugger can debug Python."""
diff --git a/Lib/test/test_multiprocessing_fork.py b/Lib/test/test_multiprocessing_fork.py
--- a/Lib/test/test_multiprocessing_fork.py
+++ b/Lib/test/test_multiprocessing_fork.py
@@ -1,6 +1,12 @@
 import unittest
 import test._test_multiprocessing
 
+from test import support
+
+if support.PGO:
+    raise unittest.SkipTest("test is not helpful for PGO")
+
+
 test._test_multiprocessing.install_tests_in_module_dict(globals(), 'fork')
 
 if __name__ == '__main__':
diff --git a/Lib/test/test_multiprocessing_forkserver.py b/Lib/test/test_multiprocessing_forkserver.py
--- a/Lib/test/test_multiprocessing_forkserver.py
+++ b/Lib/test/test_multiprocessing_forkserver.py
@@ -1,6 +1,11 @@
 import unittest
 import test._test_multiprocessing
 
+from test import support
+
+if support.PGO:
+    raise unittest.SkipTest("test is not helpful for PGO")
+
 test._test_multiprocessing.install_tests_in_module_dict(globals(), 'forkserver')
 
 if __name__ == '__main__':
diff --git a/Lib/test/test_multiprocessing_main_handling.py b/Lib/test/test_multiprocessing_main_handling.py
--- a/Lib/test/test_multiprocessing_main_handling.py
+++ b/Lib/test/test_multiprocessing_main_handling.py
@@ -16,6 +16,9 @@
     make_pkg, make_script, make_zip_pkg, make_zip_script,
     assert_python_ok)
 
+if support.PGO:
+    raise unittest.SkipTest("test is not helpful for PGO")
+
 # Look up which start methods are available to test
 import multiprocessing
 AVAILABLE_START_METHODS = set(multiprocessing.get_all_start_methods())
diff --git a/Lib/test/test_multiprocessing_spawn.py b/Lib/test/test_multiprocessing_spawn.py
--- a/Lib/test/test_multiprocessing_spawn.py
+++ b/Lib/test/test_multiprocessing_spawn.py
@@ -1,6 +1,11 @@
 import unittest
 import test._test_multiprocessing
 
+from test import support
+
+if support.PGO:
+    raise unittest.SkipTest("test is not helpful for PGO")
+
 test._test_multiprocessing.install_tests_in_module_dict(globals(), 'spawn')
 
 if __name__ == '__main__':
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -21,6 +21,9 @@
 except ImportError:
     threading = None
 
+if support.PGO:
+    raise unittest.SkipTest("test is not helpful for PGO")
+
 mswindows = (sys.platform == "win32")
 
 #
diff --git a/Makefile.pre.in b/Makefile.pre.in
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -235,7 +235,7 @@
 # The task to run while instrumented when building the profile-opt target.
 # We exclude unittests with -x that take a rediculious amount of time to
 # run in the instrumented training build or do not provide much value.
-PROFILE_TASK=-m test.regrtest --pgo -x test_asyncore test_gdb test_multiprocessing_fork test_multiprocessing_forkserver test_multiprocessing_main_handling test_multiprocessing_spawn test_subprocess
+PROFILE_TASK=-m test.regrtest --pgo
 
 # report files for gcov / lcov coverage report
 COVERAGE_INFO=	$(abs_builddir)/coverage.info
diff --git a/Tools/msi/buildrelease.bat b/Tools/msi/buildrelease.bat
--- a/Tools/msi/buildrelease.bat
+++ b/Tools/msi/buildrelease.bat
@@ -35,7 +35,7 @@
 set BUILDX64=
 set TARGET=Rebuild
 set TESTTARGETDIR=
-set PGO=
+set PGO=default
 
 
 :CheckOpts
@@ -55,6 +55,7 @@
 if "%1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts
 if "%1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts
 if "%1" EQU "--pgo" (set PGO=%~2) && shift && shift && goto CheckOpts
+if "%1" EQU "--skip-pgo" (set PGO=) && shift && goto CheckOpts
 
 if "%1" NEQ "" echo Invalid option: "%1" && exit /B 1
 
@@ -195,7 +196,7 @@
 
 :Help
 echo buildrelease.bat [--out DIR] [-x86] [-x64] [--certificate CERTNAME] [--build] [--skip-build]
-echo                  [--pgo COMMAND] [--skip-doc] [--download DOWNLOAD URL] [--test TARGETDIR]
+echo                  [--pgo COMMAND] [--skip-pgo] [--skip-doc] [--download DOWNLOAD URL] [--test TARGETDIR]
 echo                  [-h]
 echo.
 echo    --out (-o)          Specify an additional output directory for installers
@@ -204,7 +205,8 @@
 echo    --build (-b)        Incrementally build Python rather than rebuilding
 echo    --skip-build (-B)   Do not build Python (just do the installers)
 echo    --skip-doc (-D)     Do not build documentation
-echo    --pgo               Build x64 installers using PGO
+echo    --pgo               Specify PGO command for x64 installers
+echo    --skip-pgo          Build x64 installers using PGO
 echo    --download          Specify the full download URL for MSIs
 echo    --test              Specify the test directory to run the installer tests
 echo    -h                  Display this help information

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list