X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/39236c6e673c41db228275375ab7fdb0f837b292..5ba3f43ea354af8ad55bea84372a2bc834d8757c:/tools/lldbmacros/plugins/speedtracer.py diff --git a/tools/lldbmacros/plugins/speedtracer.py b/tools/lldbmacros/plugins/speedtracer.py old mode 100644 new mode 100755 index 8d9d9e2e1..085223291 --- a/tools/lldbmacros/plugins/speedtracer.py +++ b/tools/lldbmacros/plugins/speedtracer.py @@ -1,5 +1,5 @@ -# A basic Plugin that creates performance reports from zprint output -import urllib, urllib2 +import json, urllib, urllib2 +from urllib2 import Request, urlopen, HTTPError kern_version = None def plugin_init(kernel_target, config, lldb_obj, isConnected): @@ -19,25 +19,27 @@ def plugin_execute(command_name, result_output): outstr = '' further_cmds = [] submitvars = {} - submitvars['type']="text" - submitvars['log']=result_output + submitvars['log_content']=result_output - submiturl = "http://speedtracer.apple.com/trace/analyze?format=xml" + submiturl = "https://speedtracer.apple.com/api/v2/trace" encoded_data = urllib.urlencode(submitvars) - request = urllib2.Request(submiturl, encoded_data, {"Accept":"application/xml"}) - response = urllib2.urlopen(request) - - status = response.info()['status'] - if status == 201 or status == '201': - outstr += "CrashTracer data found at " + response.info()['location'] - newurl = response.info()['location'] - import webbrowser - webbrowser.open(newurl) - status = True - else: - outstr += "unknown response from server \n" + str(response.info()) + request = urllib2.Request(submiturl, encoded_data) + request.add_header("Accept", "application/json") + request.add_header("X-ST-GroupName", "core-os") + try: + response = urllib2.urlopen(request) + response_str = response.read() + j = json.loads(response_str) + outstr += "\nspeedtracer output:\n\n" + stacks = j.get("symbolicated_log") + if stacks: + outstr += stacks + else: + outstr += json.dumps(j) + except HTTPError as e: + outstr += "speedtracer replied with\n" + str(e.info()) status = False - + return (status, outstr, further_cmds) def plugin_cleanup():