[Piglit] [PATCH 4/7] Modify the Test class in core.py to use ThreadPools.

U. Artie Eoff ullysses.a.eoff at intel.com
Mon Feb 7 18:54:58 PST 2011


Modify Test class to use ThreadPools in its doRun method.  All
tests now execute in the default ThreadPool named 'base'.
A Test instance can be configured to run in a different (named)
ThreadPool instance by setting its poolName member variable to
that name.
---
 framework/core.py |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/framework/core.py b/framework/core.py
index d363a34..0e0aca9 100644
--- a/framework/core.py
+++ b/framework/core.py
@@ -33,6 +33,8 @@ import time
 import traceback
 from log import log
 from cStringIO import StringIO
+from threads import ThreadPools
+import threading
 
 __all__ = [
 	'Environment',
@@ -289,13 +291,18 @@ class Test:
 	ignoreErrors = []
 	sleep = 0
 
-	def __init__(self):
-		pass
+	def __init__(self, poolName = "base"):
+		self.poolName = poolName
 
 	def run(self):
 		raise NotImplementedError
 
 	def doRun(self, env, path):
+		if ThreadPools().lookup(self.poolName) is None:
+			ThreadPools().create(self.poolName)
+		ThreadPools().put(self.__doRunWork, args = (env, path,), name = self.poolName)
+
+	def __doRunWork(self, env, path):
 		# Exclude tests that don't match the filter regexp
 		if len(env.filter) > 0:
 			if not True in map(lambda f: f.search(path) != None, env.filter):
@@ -380,6 +387,7 @@ class TestProfile:
 	def run(self, env):
 		time_start = time.time()
 		self.tests.doRun(env, '')
+		ThreadPools().joinAll()
 		time_end = time.time()
 		print >>env.file, "time:",(time_end-time_start)
 
-- 
1.7.3.4



More information about the Piglit mailing list