def _getBenchmarkRuns(info, meta, outdir): dir_name = os.path.join( outdir, getFilename(meta["platform"]), getFilename(meta["framework"]), getFilename(meta["net_name"]), getFilename(meta["metric"]), getFilename(meta["identifier"]), ) assert "regression_commits" in info, "regression_commits field is missing from info" dirs = [] for entry in info["regression_commits"]: one_dir = os.path.jon( dir_name, getDirectory(entry["commit"], entry["commit_time"]) ) if not os.path.isdir(one_dir): continue last_run = _getLatestRun(one_dir) if last_run is None: continue dirs.append(last_run) return dirs
def _buildProgram(self, platform, repo_info): directory = "/" + \ getDirectory(repo_info['commit'], repo_info['commit_time']) dst = getArgs().exec_dir + "/" + getArgs().framework + "/" + \ platform + "/" + directory + getArgs().framework + \ "_benchmark" repo_info["program"] = dst if not _runIndividual() and os.path.isfile(dst): return True else: return self._buildProgramPlatform(repo_info, dst, platform)
def report(self, content): data = content[self.DATA] if data is None or len(data) == 0: getLogger().info("No data to write") return meta = content[self.META] net_name = meta["net_name"] netdir = getFilename(net_name) platform_name = meta[self.PLATFORM] platformdir = getFilename(platform_name) framework_name = meta["framework"] frameworkdir = getFilename(framework_name) metric_name = meta["metric"] metric_dir = getFilename(metric_name) id_dir = getFilename(meta["identifier"]) ts = float(meta["commit_time"]) commit = meta["commit"] datedir = getDirectory(commit, ts) dirname = os.path.join( self.local_reporter, platformdir, frameworkdir, netdir, metric_dir, id_dir, datedir, ) i = 0 while os.path.exists(os.path.join(dirname, str(i))): i = i + 1 dirname = os.path.join(dirname, str(i)) os.makedirs(dirname) for d in data: filename = os.path.join(dirname, getFilename(d) + ".txt") content_d = json.dumps(data[d], indent=2, sort_keys=True) with open(filename, "w") as file: file.write(content_d) filename = os.path.join(dirname, getFilename(self.META) + ".txt") with open(filename, "w") as file: content_meta = json.dumps(meta, indent=2, sort_keys=True) file.write(content_meta) pname = platform_name if "platform_hash" in meta: pname = pname + " ({})".format(meta["platform_hash"]) getLogger().info("Writing file for {}: {}".format(pname, dirname))
def report(self, content): data = content[self.DATA] if data is None or len(data) == 0: getLogger().info("No data to write") return meta = content[self.META] net_name = meta['net_name'] netdir = getFilename(net_name) + "/" platform_name = meta[self.PLATFORM] platformdir = getFilename(platform_name) + "/" framework_name = meta["framework"] frameworkdir = getFilename(framework_name) + "/" metric_name = meta['metric'] metric_dir = getFilename(metric_name) + "/" id_dir = getFilename(meta["identifier"]) + "/" ts = float(meta['commit_time']) commit = meta['commit'] datedir = getDirectory(commit, ts) dirname = platformdir + frameworkdir + netdir + metric_dir + id_dir + datedir dirname = getArgs().local_reporter + "/" + dirname i = 0 while os.path.exists(dirname + str(i)): i = i + 1 dirname = dirname + str(i) + "/" os.makedirs(dirname) for d in data: filename = dirname + getFilename(d) + ".txt" content_d = json.dumps(data[d], indent=2, sort_keys=True) with open(filename, 'w') as file: file.write(content_d) filename = dirname + getFilename(self.META) + ".txt" with open(filename, 'w') as file: content_meta = json.dumps(meta, indent=2, sort_keys=True) file.write(content_meta) pname = platform_name if "platform_hash" in meta: pname = pname + " ({})".format(meta["platform_hash"]) getLogger().info("Writing file for {}: {}".format(pname, dirname))
def _buildProgram(self, platform, repo_info): directory = getDirectory(repo_info['commit'], repo_info['commit_time']) program = getArgs().framework + "_benchmark" if os.name == "nt": program = program + ".exe" elif platform.startswith("ios"): program = program + ".ipa" dst = os.path.join(getArgs().exec_dir, getArgs().framework, platform, directory, program) repo_info["program"] = dst repo_info["programs"] = {"program": {"location": dst}} filedir = os.path.dirname(dst) if not _runIndividual() and os.path.isfile(dst): return True else: result = self._buildProgramPlatform(repo_info, dst, platform) for fn in os.listdir(filedir): if fn != program: repo_info["programs"][fn] = { "location": os.path.join(filedir, fn) } return result