def process_Request(self, post): """get links from the graphserver response""" links = "" for line in post.splitlines(): if line.find("RETURN\t") > -1: line = line.replace("RETURN\t", "") links += line + '\n' logging.debug("process_Request line: %s", line) if not links: raise utils.TalosError("send failed, graph server says:\n%s" % post) return links
def construct_results(self, vals, testname, **info): """ return results string appropriate to graphserver - vals: list of 2-tuples: [(val, page) - kwargs: info necessary for self.info_format interpolation see https://wiki.mozilla.org/Buildbot/Talos/DataFormat """ info['testname'] = testname info_format = self.info_format responsiveness = self.responsiveness_test(testname) _type = 'VALUES' average = None if responsiveness: _type = 'AVERAGE' average = self.responsiveness_Metric([val for (val, page) in vals]) elif testname.startswith('v8_7'): _type = 'AVERAGE' average = self.v8_Metric(vals) elif testname.startswith('kraken'): _type = 'AVERAGE' average = self.JS_Metric(vals) elif testname.startswith('tcanvasmark'): _type = 'AVERAGE' average = self.CanvasMark_Metric(vals) # ensure that we have all of the info data available missing = [i for i in info_format if i not in info] if missing: raise utils.TalosError("Missing keys: %s" % missing) info = ','.join([str(info[key]) for key in info_format]) # write the data buffer = StringIO() buffer.write("START\n") buffer.write("%s\n" % _type) buffer.write('%s\n' % info) if average is not None: # write some kind of average buffer.write("%s\n" % average) else: for i, (val, page) in enumerate(vals): try: buffer.write("%d,%.2f,%s\n" % (i, float(val), page)) except ValueError: logging.info( "We expected a numeric value and recieved '%s' instead" % val ) pass buffer.write("END") return buffer.getvalue()
post_file.post_multipart(server, path, files=[("filename", "data_string", data_string)]))) break except utils.TalosError, e: msg = str(e) except Exception, e: msg = str(e) times += 1 time.sleep(wait_time) wait_time *= 2 else: raise utils.TalosError( "Graph server unreachable (%d attempts)\n%s" % (self.retries, msg)) # add TBPL output self.add_tbpl_output(links, tbpl_output, server, scheme) def add_tbpl_output(self, links, tbpl_output, server, scheme): """ add graphserver links such that TBPL can parse them. graphserver returns a response like: 'tsvgr\tgraph.html#tests=[[224,113,14]]\ntsvgr\t2965.75\tgraph.html #tests=[[224,113,14]]\n' for each ts posted (tsvgr, in this case) """