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)