Rev 4851: (vila) osutils.local_concurrency() can be overridden from command-line in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Wed Dec 2 08:39:15 GMT 2009
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 4851 [merge]
revision-id: pqm at pqm.ubuntu.com-20091202083913-4nczjgrq71pkk0st
parent: pqm at pqm.ubuntu.com-20091201233004-szqeoqkyrkyihzk2
parent: v.ladeuil+lp at free.fr-20091202075616-vfe9yaehofp04fim
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2009-12-02 08:39:13 +0000
message:
(vila) osutils.local_concurrency() can be overridden from command-line
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/commands.py bzr.py-20050309040720-d10f4714595cf8c3
bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/osutils.py osutils.py-20050309040759-eeaff12fbf77ac86
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_osutils.py test_osutils.py-20051201224856-e48ee24c12182989
=== modified file 'NEWS'
--- a/NEWS 2009-12-01 05:35:52 +0000
+++ b/NEWS 2009-12-02 07:56:16 +0000
@@ -245,6 +245,13 @@
memory consumption (50%) and garbage collector overhead (40% faster) for
many operations.
+* A new ``--concurrency`` option has been added as well as an associated
+ BZR_CONCURRENCY environment variable to specify the number of
+ processes that can be run concurrently when running ``bzr selftest``. The
+ command-line option overrides the environment variable if both are
+ specified. If none is specified. the number of processes is obtained
+ from the OS as before. (Matt Nordhoff, Vincent Ladeuil)
+
Bug Fixes
*********
=== modified file 'bzrlib/commands.py'
--- a/bzrlib/commands.py 2009-11-04 22:32:13 +0000
+++ b/bzrlib/commands.py 2009-12-02 07:56:16 +0000
@@ -940,6 +940,9 @@
--coverage
Generate line coverage report in the specified directory.
+
+ --concurrency
+ Specify the number of processes that can be run concurrently (selftest).
"""
argv = list(argv)
trace.mutter("bzr arguments: %r", argv)
@@ -970,6 +973,9 @@
opt_no_aliases = True
elif a == '--builtin':
opt_builtin = True
+ elif a == '--concurrency':
+ os.environ['BZR_CONCURRENCY'] = argv[i + 1]
+ i += 1
elif a == '--coverage':
opt_coverage_dir = argv[i + 1]
i += 1
=== modified file 'bzrlib/help_topics/__init__.py'
--- a/bzrlib/help_topics/__init__.py 2009-11-26 04:58:09 +0000
+++ b/bzrlib/help_topics/__init__.py 2009-12-02 07:56:16 +0000
@@ -313,6 +313,7 @@
--builtin Use the built-in version of a command, not the plugin version.
This does not suppress other plugin effects.
--no-plugins Do not process any plugins.
+--concurrency Number of processes that can be run concurrently (selftest).
--profile Profile execution using the hotshot profiler.
--lsprof Profile execution using the lsprof profiler.
@@ -584,6 +585,7 @@
BZR_SSH Path to SSH client, or one of paramiko, openssh, sshcorp, plink.
BZR_LOG Location of .bzr.log (use '/dev/null' to suppress log).
BZR_LOG (Win32) Location of .bzr.log (use 'NUL' to suppress log).
+BZR_CONCURRENCY Number of processes that can be run concurrently (selftest).
================ =================================================================
"""
=== modified file 'bzrlib/osutils.py'
--- a/bzrlib/osutils.py 2009-11-30 12:24:55 +0000
+++ b/bzrlib/osutils.py 2009-12-02 07:56:16 +0000
@@ -1981,13 +1981,16 @@
anything goes wrong.
"""
global _cached_local_concurrency
+
if _cached_local_concurrency is not None and use_cache:
return _cached_local_concurrency
- try:
- concurrency = _local_concurrency()
- except (OSError, IOError):
- concurrency = None
+ concurrency = os.environ.get('BZR_CONCURRENCY', None)
+ if concurrency is None:
+ try:
+ concurrency = _local_concurrency()
+ except (OSError, IOError):
+ pass
try:
concurrency = int(concurrency)
except (TypeError, ValueError):
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py 2009-11-30 20:33:06 +0000
+++ b/bzrlib/tests/__init__.py 2009-12-02 07:56:16 +0000
@@ -1524,6 +1524,7 @@
'BZR_PROGRESS_BAR': None,
'BZR_LOG': None,
'BZR_PLUGIN_PATH': None,
+ 'BZR_CONCURRENCY': None,
# Make sure that any text ui tests are consistent regardless of
# the environment the test case is run in; you may want tests that
# test other combinations. 'dumb' is a reasonable guess for tests
=== modified file 'bzrlib/tests/test_osutils.py'
--- a/bzrlib/tests/test_osutils.py 2009-11-30 12:24:55 +0000
+++ b/bzrlib/tests/test_osutils.py 2009-12-02 07:56:16 +0000
@@ -1855,10 +1855,32 @@
class TestConcurrency(tests.TestCase):
+ def setUp(self):
+ super(TestConcurrency, self).setUp()
+ orig = osutils._cached_local_concurrency
+ def restore():
+ osutils._cached_local_concurrency = orig
+ self.addCleanup(restore)
+
def test_local_concurrency(self):
concurrency = osutils.local_concurrency()
self.assertIsInstance(concurrency, int)
+ def test_local_concurrency_environment_variable(self):
+ os.environ['BZR_CONCURRENCY'] = '2'
+ self.assertEqual(2, osutils.local_concurrency(use_cache=False))
+ os.environ['BZR_CONCURRENCY'] = '3'
+ self.assertEqual(3, osutils.local_concurrency(use_cache=False))
+ os.environ['BZR_CONCURRENCY'] = 'foo'
+ self.assertEqual(1, osutils.local_concurrency(use_cache=False))
+
+ def test_option_concurrency(self):
+ os.environ['BZR_CONCURRENCY'] = '1'
+ self.run_bzr('rocks --concurrency 42')
+ # Command line overrides envrionment variable
+ self.assertEquals('42', os.environ['BZR_CONCURRENCY'])
+ self.assertEquals(42, osutils.local_concurrency(use_cache=False))
+
class TestFailedToLoadExtension(tests.TestCase):
More information about the bazaar-commits
mailing list