[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21081] branches/soc-2009-jaguarandi/test: *added readme

André Pinto andresusanopinto at gmail.com
Mon Jun 22 19:20:35 CEST 2009


Revision: 21081
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21081
Author:   jaguarandi
Date:     2009-06-22 19:20:35 +0200 (Mon, 22 Jun 2009)

Log Message:
-----------
*added readme
*changed the way current machine is configured
*add sample css file to repository
*added sample scene with a sample config(.xml)
(xml config is not mandatory.. it uses config.default_case if no .xml with same basename is found)

Modified Paths:
--------------
    branches/soc-2009-jaguarandi/test/Test.py
    branches/soc-2009-jaguarandi/test/blendertest.py
    branches/soc-2009-jaguarandi/test/config.py

Added Paths:
-----------
    branches/soc-2009-jaguarandi/test/README
    branches/soc-2009-jaguarandi/test/case/
    branches/soc-2009-jaguarandi/test/case/sample/
    branches/soc-2009-jaguarandi/test/case/sample/simple.blend
    branches/soc-2009-jaguarandi/test/case/sample/simple.xml
    branches/soc-2009-jaguarandi/test/default_machine.xml
    branches/soc-2009-jaguarandi/test/html/
    branches/soc-2009-jaguarandi/test/html/style.css

Property Changed:
----------------
    branches/soc-2009-jaguarandi/test/Test.py
    branches/soc-2009-jaguarandi/test/blendertest.py
    branches/soc-2009-jaguarandi/test/config.py
    branches/soc-2009-jaguarandi/test/html.py
    branches/soc-2009-jaguarandi/test/persistent.py
    branches/soc-2009-jaguarandi/test/util.py

Added: branches/soc-2009-jaguarandi/test/README
===================================================================
--- branches/soc-2009-jaguarandi/test/README	                        (rev 0)
+++ branches/soc-2009-jaguarandi/test/README	2009-06-22 17:20:35 UTC (rev 21081)
@@ -0,0 +1,48 @@
+An updated documentation on this can be found on: 
+  http://wiki.blender.org/index.php/User:Jaguarandi/SummerOfCode2009/BlenderTest
+
+==Blender Test==
+With the purpose to easy the test of the SoC project and help finding optimizaton directions, a python script has been developped.
+
+A sample html output can be seen at: http://andresp.no-ip.org/soc2009/btest/html/render.html
+Source code: https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-jaguarandi/test
+
+
+===Concepts===
+This test script uses 4 concepts:
+
+====machine====
+current machine (configured on config.py)
+
+====build====
+a blender binary (*.bin) (given as argument)     
+
+====case====
+A .blend scene (*.blend) (given as argument)
+
+====test-run====
+A test-run is the result of running a build against a scene on a given machine
+test-run results are saved on:
+ <config.run_path>/<machine_hash>/<build_hash>/<case_hash>/result.xml
+ <config.run_path>/<machine_hash>/<build_hash>/<case_hash>/1.png
+and save information like: time, stderr, stdout, exit_code, image result
+
+
+===Usage===
+blendertest.py <action> <paths>
+
+*all .blend found while walking the paths are considered as a test case
+*all .bin found while walking the paths are considered builds
+
+action can be one of:
+ --update (run tests cases on the given builds/cases)
+ --html   (outputs a comparison table between the given builds/cases)
+
+as so running builds against test case can be as simple as:
+ blendertest.py --update <paths_with_cases> <paths_with_builds>
+ blendertest.py --update case/test249/render build/rev12345.bin
+
+to generate an html comparison use:
+ blendertest.py --html <path_with_cases> <paths_with_builds>
+ bendertest.py --html build/ case/ > html/all.html
+


Property changes on: branches/soc-2009-jaguarandi/test/README
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: branches/soc-2009-jaguarandi/test/Test.py
===================================================================
--- branches/soc-2009-jaguarandi/test/Test.py	2009-06-22 16:34:37 UTC (rev 21080)
+++ branches/soc-2009-jaguarandi/test/Test.py	2009-06-22 17:20:35 UTC (rev 21081)
@@ -37,7 +37,7 @@
 	def run(self, test):
 		#prepare cmdline
 		filename = os.path.join(test.path, self["filename"])
-		cmd = [ test["build"]["path"], "-b", self["path"], "-o", filename, "-F", "PNG", "-x", "0", "-f", "%d"%self["frame"]]
+		cmd = [ test["build"]["path"], "-b", self["scene"], "-o", filename, "-F", "PNG", "-x", "0", "-f", "%d"%self["frame"]]
 
 		if self.run_cmd(cmd, test) == 0:
 			test["result"] = TestRun.RESULT_OK


Property changes on: branches/soc-2009-jaguarandi/test/Test.py
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: branches/soc-2009-jaguarandi/test/blendertest.py
===================================================================
--- branches/soc-2009-jaguarandi/test/blendertest.py	2009-06-22 16:34:37 UTC (rev 21080)
+++ branches/soc-2009-jaguarandi/test/blendertest.py	2009-06-22 17:20:35 UTC (rev 21081)
@@ -24,7 +24,7 @@
 ENDC = "\033[0m"
 
 ### Build ###
-_valid_build = re.compile(r'.*\.bin$')
+_valid_build = re.compile(r'.*(\.bin|blender)$')
 def is_valid_build(arg):
 	return _valid_build.match( arg )
 	
@@ -36,6 +36,7 @@
 	conf["name"] = os.path.splitext(os.path.basename(path))[0]
 	conf["hash"] = util.get_hash(open(path, 'rb'))
 		
+#	print "Build:",conf
 	return conf
 
 ### Test Case ###	
@@ -44,13 +45,21 @@
 	return _valid_scene.match( arg )
 
 def load_case(path):
-	#TODO test the existence of a .xml file with diferent configuration for this test case
-	conf = dict(config.default_case_config)
-	
+	conf = dict()
+		
 	conf["path"] = path
+	conf["scene"] = path
 	conf["name"] = os.path.splitext(os.path.basename(path))[0]
 	conf["hash"] = util.get_hash(open(path, 'rb'))
 		
+	xml_conf = util.change_extension(path, ".xml")
+	if os.path.isfile(xml_conf):
+		conf["path"] = xml_conf
+		conf.update( persistent.load( open(xml_conf, "r" ) ) )
+	else:
+		conf.update( config.default_case_config )
+	
+#	print "Testcase:",conf
 	return conf
 
 


Property changes on: branches/soc-2009-jaguarandi/test/blendertest.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: branches/soc-2009-jaguarandi/test/case/sample/simple.blend
===================================================================
(Binary files differ)


Property changes on: branches/soc-2009-jaguarandi/test/case/sample/simple.blend
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/soc-2009-jaguarandi/test/case/sample/simple.xml
===================================================================
--- branches/soc-2009-jaguarandi/test/case/sample/simple.xml	                        (rev 0)
+++ branches/soc-2009-jaguarandi/test/case/sample/simple.xml	2009-06-22 17:20:35 UTC (rev 21081)
@@ -0,0 +1,43 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<marshal>
+  <dictionary id='testcase'>
+
+<!--
+If not defined the a hash based on a md5sum of the .blend content will be used
+
+    <string>hash</string>
+    <string>1B2M2Y8AsgTp</string>
+ -->
+
+<!--
+If not defined name will be the basename of the used scene
+    <string>name</string>
+    <string>default</string>
+ -->
+ 
+ 	<!-- type of test case -->
+    <string>type</string>
+    <string>Render</string>
+
+    <string>filename</string>
+    <string>#.png</string>
+
+    <string>frame</string>
+    <int>1</int>
+    
+    <string>description</string>
+    <string>This is the default scene in blender.</string>
+
+<!--
+You can define any other information.
+
+    <string>author</string>
+    <string>...</string>
+
+    <string>url</string>
+    <string>...</string>
+
+ -->
+
+  </dictionary>
+</marshal>

Modified: branches/soc-2009-jaguarandi/test/config.py
===================================================================
--- branches/soc-2009-jaguarandi/test/config.py	2009-06-22 16:34:37 UTC (rev 21080)
+++ branches/soc-2009-jaguarandi/test/config.py	2009-06-22 17:20:35 UTC (rev 21081)
@@ -1,7 +1,10 @@
 import os
+import sys
+import persistent
 
 run_path = "run"
 html_path = "html"
+machine_path = "machine.xml"
 
 default_case_config	= {
 		"type":			"Render",
@@ -13,9 +16,21 @@
 
 machine = {
 		"hostname":		os.uname()[1],
-#		"cpu":			"Intel(R) Pentium(R) 4 CPU 2.80GHz",
 		"hash":			os.uname()[1]
 	}
 
-print "config.py: please configure your machine description and comment this line!"
+if os.path.isfile(machine_path):
+	machine = persistent.load( open(machine_path, "r") )
 
+	if "hash" not in machine:
+		machine["hash"] = os.uname()[1]
+	if "hostname" not in machine:
+		machine["hostname"] = os.uname()[1]
+	
+else:
+	print >>sys.stderr,"""
+	You can configure your machine description on the path ("""+machine_path+""").
+	Use the file (default_machine.xml) as template.
+	"""
+#	os._exit(-1)
+


Property changes on: branches/soc-2009-jaguarandi/test/config.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: branches/soc-2009-jaguarandi/test/default_machine.xml
===================================================================
--- branches/soc-2009-jaguarandi/test/default_machine.xml	                        (rev 0)
+++ branches/soc-2009-jaguarandi/test/default_machine.xml	2009-06-22 17:20:35 UTC (rev 21081)
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<marshal>
+  <dictionary id='i0'>
+<!--
+	If you dont define this, it will use your hostname as hash
+    <string>hash</string>
+    <string>unconfigured_hash</string>
+ -->    
+
+    <string>model</string>
+    <string>eeepc 1000</string>
+        
+    <string>cpu model</string>
+    <string>Intel(R) Atom(TM) CPU N270   @ 1.60GHz</string>
+
+<!--    
+	You can add any additional information, it will be included on run reports
+
+    <string>hostname</string>
+    <string>...</string>
+
+    <string>os</string>
+    <string>Debian GNU/Linux</string>
+    
+    <string>webpage</string>
+    <string>...</string>
+  -->
+    
+  </dictionary>
+</marshal>

Added: branches/soc-2009-jaguarandi/test/html/style.css
===================================================================
--- branches/soc-2009-jaguarandi/test/html/style.css	                        (rev 0)
+++ branches/soc-2009-jaguarandi/test/html/style.css	2009-06-22 17:20:35 UTC (rev 21081)
@@ -0,0 +1,98 @@
+body
+{
+	background: #000;
+	color: #eee;
+}
+
+img
+{
+	border: none;
+}
+table.comparison_scene tr td img
+{
+	width: 100px;
+	display:block;
+	margin: auto;
+}
+table.comparison_scene tr td
+{
+	text-align: center;
+}
+table.comparison_scene tr td.fail
+{
+	color: #000;
+	background: #eaa;
+}
+table.comparison_scene tr td.error
+{
+	color: #000;
+	background: #eaa;
+}
+table.comparison_scene tr td.ok
+{
+	color: #000;
+	background: #aea;
+}
+table.comparison_scene tr td.warning
+{
+	color: #000;
+	background: #eea;
+}
+table.comparison_scene tr td.not_available
+{
+	color: #000;
+	background: #bbb;
+}
+
+.cmp_equal
+{
+	font-weight: bolder;
+	color: #000;
+}
+.cmp_greater
+{
+	font-weight: bolder;
+	color: #0a0;
+}
+.cmp_less
+{
+	font-weight: bolder;
+	color: #a00;
+}
+
+.block
+{
+	display: block;
+}
+
+/* CSS for test_results */
+.test_run_result > pre
+{
+	border: solid 1px rgb(200,200,200);
+	background: rgb(70,70,70);
+	margin: 1em;
+	padding: 1px;
+	min-height: 1em;
+}
+
+.test_run_result > img
+{
+	display: block;
+	margin: auto;
+}
+
+.test_run_result h1
+{
+	text-align: center;
+}
+
+.test_run_result > dl dt
+{
+	margin-left: 1em;
+	font-weight: bolder;	
+}
+
+.test_run_result > dl dd
+{
+	margin-left: 2em;
+}


Property changes on: branches/soc-2009-jaguarandi/test/html.py
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: branches/soc-2009-jaguarandi/test/persistent.py
___________________________________________________________________
Name: svn:eol-style
   + native


Property changes on: branches/soc-2009-jaguarandi/test/util.py
___________________________________________________________________
Name: svn:eol-style
   + native





More information about the Bf-blender-cvs mailing list