"""
Interface to the testreporter xml. This class inherits from GenericXML.py
"""
#pylint: disable=import-error
from six.moves import urllib
import six
from CIME.XML.standard_module_setup import *
from CIME.XML.generic_xml import GenericXML
from CIME.utils import expect,get_model
[docs]class TestReporter(GenericXML):
def __init__(self):
"""
initialize an object
"""
expect(get_model() == 'cesm', "testreport is only meant to populate the CESM test database." )
self.root = None
GenericXML.__init__(self, root_name_override="testrecord", read_only=False, infile="TestRecord.xml")
[docs] def add_result(self,test_name,test_status):
#
# Add a test result to the XML structure.
#
tlelem = self.make_child("tests", {"testname":test_name})
for attrib_name, text in [ ("casestatus", None),
("comment", test_status["COMMENT"]),
("compare", test_status["BASELINE"]),
("memcomp", test_status["MEMCOMP"]),
("memleak", test_status["MEMLEAK"]),
("nlcomp", test_status["NLCOMP"]),
("status", test_status["STATUS"]),
("tputcomp", test_status["TPUTCOMP"]) ]:
self.make_child("category", attributes={"name": attrib_name}, text=text, root=tlelem)
[docs] def push2testdb(self):
#
# Post test result XML to CESM test database
#
xmlstr = self.get_raw_record()
username=six.moves.input("Username:")
os.system("stty -echo")
password=six.moves.input("Password:")
os.system("stty echo")
params={'username':username,'password':password,'testXML':xmlstr}
url="https://csegweb.cgd.ucar.edu/testdb/cgi-bin/processXMLtest.cgi"
params = urllib.parse.urlencode(params)
f = urllib.request.urlopen(url, params)
#
# Print any messages from the post command
#
print(f.read())
print(f.code)