⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 report.py

📁 xen 3.2.2 源码
💻 PY
字号:
#!/usr/bin/python""" Report.py - Handles the coordination of xm-test xml-reporting modules Copyright (C) International Business Machines Corp., 2005 Author: Dan Smith <danms@us.ibm.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; under version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA"""import OSReportimport ProgReportimport ResultReportimport utilsimport sysimport osimport xml.dom.minidomimport httplibimport urllibimport refrom urlparse import urlparseclass XmTestReport:    def __init__(self, files):        self.files = files    def __getContactInfo(self):        if os.access("contact_info", os.R_OK):            c = file("contact_info")            line = c.readline()            line = line.strip()            return line        else:            return "nobody@nowhere.com"    def __stringify(self, fileName):        f = file(fileName)        str = f.read()        f.close()        return str    def __str__(self):        string  = "<testname>xm-test</testname>\n"        string += "<user>%s</user>\n" % self.__getContactInfo()        for f in self.files:            string += self.__stringify(f)        return string# Taken from example in Python Cookbookdef encodeForm(fieldList):    body = []    boundary = "-------XmTestReportingXML"    for name in fieldList.keys():        body.append('--' + boundary)        body.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (name, "%s.txt" % name))        body.append('Content-Type: text/plain')        body.append('')        body.append(fieldList[name])    body.append('')    body.append("--" + boundary + "--")    body.append('')    textBody = "\r\n".join(body)    return 'multipart/form-data; boundary=%s' % boundary, textBodydef postResults(report_server, results):    if not re.match('http://', report_server):        report_server = 'http://'+report_server    (report_host,report_url) = urlparse(report_server)[1:3]    conn = httplib.HTTPConnection(report_host)    type, body = encodeForm({"log" : results})    headers = {"content-type" : type}    # DEBUG OUTPUT    # print "BODY\n%s\nBODY\n" % body    # print "%s\n" % type    # print headers        conn.request("POST", report_url, body, headers)        resp = conn.getresponse()    data = resp.read()    if resp.status == 200:        print >>sys.stderr, "Your results have been submitted successfully!"    else:        print >>sys.stderr, "Unable to submit results:"        print >>sys.stderr, "[http://%s%s] said %i: %s" % (report_host,                                                           report_url,                                                           resp.status,                                                           resp.reason)        print >>sys.stderr, dataif __name__ == "__main__":    if len(sys.argv) <= 1:        print "Usage: Report.py [opt] <outputfiles...>"        print "Where:"        print "-d    : don't submit, just dump XML"        print "-D    : do submit and dump XML"        sys.exit(1)    submit = True    dump = False    files = []    report_server = sys.argv[1]    for a in sys.argv[2:]:        if a == "-d":            submit = False            dump = True        elif a == "-D":            dump = True            submit = True        else:            if not os.access(a, os.R_OK):                print "Unable to access file: %s" % a                sys.exit(1)            else:                files.append(a)    report = XmTestReport(files)    xmlout = "<xml>\n%s</xml>\n" % report    if dump:        print xmlout    if submit:        postResults(report_server, xmlout)    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -