-# 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):
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():