Rev 7: Make the bench suite be parameterised. in http://people.ubuntu.com/~robertc/baz2.0/plugins/piss/trunk

Robert Collins robertc at robertcollins.net
Sun Aug 19 07:46:10 BST 2007


At http://people.ubuntu.com/~robertc/baz2.0/plugins/piss/trunk

------------------------------------------------------------
revno: 7
revision-id: robertc at robertcollins.net-20070819064600-0zp9lp3jubju05g0
parent: robertc at robertcollins.net-20070503051846-ye6016zuffkelvk2
committer: Robert Collins <robertc at robertcollins.net>
branch nick: trunk
timestamp: Sun 2007-08-19 16:46:00 +1000
message:
  Make the bench suite be parameterised.
modified:
  benchmarks/__init__.py         __init__.py-20070501062416-23ztx65da4ul4oxv-6
  benchmarks/bench_import.py     bench_import.py-20070501062416-23ztx65da4ul4oxv-7
=== modified file 'benchmarks/__init__.py'
--- a/benchmarks/__init__.py	2007-05-01 09:00:31 +0000
+++ b/benchmarks/__init__.py	2007-08-19 06:46:00 +0000
@@ -19,8 +19,12 @@
 
 """The real deal benchmarks."""
 
-
-from bzrlib.tests.TestUtil import TestLoader, TestSuite
+from bzrlib.tests import (
+    adapt_modules,
+    TestLoader,
+    TestScenarioApplier,
+    TestSuite,
+    )
 
 
 def bench_suite():
@@ -28,4 +32,20 @@
         'bzrlib.plugins.piss.benchmarks.bench_import',
         ]
     loader = TestLoader()
-    return loader.loadTestsFromModuleNames(module_names)
+    applier = TestScenarioApplier()
+    applier.scenarios = []
+    # manual generation of scenarios:
+    # decoration
+    for decorated in (False, True):
+        for functions in (0, 10, 100, 1000, 10000):
+            scenario_name_bits = []
+            scenario = {}
+            if decorated:
+                scenario_name_bits.append('decorated')
+            scenario['decorated'] = decorated
+            scenario_name_bits.append('%d functions' % functions)
+            scenario['functions'] = functions
+            applier.scenarios.append((','.join(scenario_name_bits), scenario))
+    result = TestSuite()
+    adapt_modules(module_names, applier, loader, result)
+    return result

=== modified file 'benchmarks/bench_import.py'
--- a/benchmarks/bench_import.py	2007-05-03 05:18:46 +0000
+++ b/benchmarks/bench_import.py	2007-08-19 06:46:00 +0000
@@ -39,39 +39,8 @@
         self.import_and_forget('tiny_piss')
         self.time(self.import_and_forget, 'tiny_piss')
 
-    def test_import_tiny_module(self):
-        self.time_importing_module(0)
-
-    def test_import_10_functions(self):
-        self.time_importing_module(10)
-
-    def test_import_100_functions(self):
-        self.time_importing_module(100)
-
-    def test_import_1000_functions(self):
-        self.time_importing_module(1000)
-
-    def test_import_10000_functions(self):
-        self.time_importing_module(10000)
-
-    def test_import_10_decorated_functions(self):
-        self.time_importing_module(10, True)
-
-    def test_import_100_decorated_functions(self):
-        self.time_importing_module(100, True)
-
-    def test_import_1000_decorated_functions(self):
-        self.time_importing_module(1000, True)
-
-    def test_import_10000_decorated_functions(self):
-        self.time_importing_module(10000, True)
-
-    def test_import_tiny_package(self):
-        self.add_cwd_to_path()
-        # import once to generate a .pyc - the common case.
-        self.creator.build_package('tiny_piss')
-        self.import_and_forget('tiny_piss')
-        self.time(self.import_and_forget, 'tiny_piss')
+    def test_import_parameterised(self):
+        self.time_importing_module(self.functions, decorated=self.decorated)
 
     def add_cwd_to_path(self):
         sys.path.append(os.getcwd())



More information about the bazaar-commits mailing list