Esempio n. 1
0
	def ReadFromXml(self,Filename):
		""" This method reads a render result xml file and processes all data"""
		try:
			tree = ET.parse(Filename)
			root = tree.getroot()
			root = root.find("results")
			# Get all Blender versions
			for blender in root.findall('blender'):
				resultset = ResultSet.ResultSetClass()
				resultset.BuildInformation['builddate'] = blender.get('builddate')
				resultset.BuildInformation['commitdate'] = blender.get('commitdate')
				resultset.BuildInformation['committime'] = blender.get('committime')
				resultset.BuildInformation['release'] = blender.get('release')
				resultset.BuildInformation['hash'] = blender.get('hash')
				resultset.BuildInformation['platform'] = blender.get('platform')
				# Get all test results that have been rendered with this release
				for result in blender.findall("resultset"):
					entries = {}
					for entry in result:
						entries[entry.tag] = entry.text
					# print(entries)
					# Add them to the Resultset
					resultset.AddResult(entries)
				self.AddResultSet(resultset)
			return True
		except:
			print(sys.exc_info())
			return False
    def Render(self):
        # Loop trough all blender versions
        for (index, executable) in enumerate(self._executables):

            #Create a result container and create a new result set
            resultSet = ResultSet.ResultSetClass()

            # and get the build information
            resultSet.SetBuildInformation(
                BlenderUtils.GetBlenderVersionInformation(
                    self._executables[index]))

            # then render all files, one after another
            for renderTask in self._renderTasks:

                print(">> Rendering " + renderTask[0] +
                      " with Blender version " +
                      resultSet.BuildInformation["release"])

                # --engine CYCLES BLENDER_RENDER
                md5 = hashlib.md5(open(renderTask[0], 'rb').read()).hexdigest()
                imageoutput = "../images/results/" + md5 + "_" + resultSet.BuildInformation[
                    "hash"] + "_"

                for line in BlenderUtils.RunCommand(executable + " -b " +
                                                    renderTask[0] +
                                                    #" -o " + imageoutput +
                                                    " -F PNG  -x 1 -f " +
                                                    str(renderTask[1])):

                    #print(line.decode("utf-8"))

                    # And look if the result is available already
                    # btw. this is pretty weak - if "Saved:" is not recognized, the complete test result will vanish :(
                    if line.decode("utf-8").find('Saved: ') > -1:
                        consoleLine = line.decode("utf-8").split()
                        resultSet.AddResult({
                            "filename":
                            os.path.basename(renderTask[0]),
                            "rendertime":
                            consoleLine[3],
                            "savetime":
                            consoleLine[5].replace('(', '').replace(')', ''),
                            "md5":
                            md5,
                            "frame":
                            str(renderTask[1]).zfill(4)
                        })

            print(resultSet.Results)