Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

testAppReport.py

00001 #!/usr/local/bin/python
00002 #
00003 #                               Copyright 2002
00004 #                                     by
00005 #                        The Board of Trustees of the
00006 #                     Leland Stanford Junior University.
00007 #                            All rights reserved.
00008 #
00009 
00010 __facility__ = "Online"
00011 __abstract__ = "V&V test for rcTestReport class"
00012 __author__   = "R. Claus <Claus@SLAC.Stanford.edu> SLAC - GLAST LAT I&T/Online"
00013 __date__     = "11/21/2002"
00014 __version__  = "$Revision: 1.1 $"
00015 __credits__  = "SLAC"
00016 
00017 import LATTE.copyright_SLAC
00018 
00019 import logging       as     log
00020 from   LATTE.runcontrol.rcTransitions import rcTransitions
00021 from   LATTE.runcontrol.rcTestReport  import rcTestReport
00022 import time
00023 import os
00024 
00025 #  Example application implementation.
00026 #  Note that the name of the class must be userApplication.
00027 #  Look at rcTransitions for names of other transition methods that can be used.
00028 class userApplication(rcTransitions):
00029   "Implementation class for a user application"
00030   def __init__(self, rc, userId, debug):
00031     rcTransitions.__init__(self, rc, userId, debug)
00032     log.debug("userApplication.__init__()")
00033     self.tr = rcTestReport()
00034 
00035   def getName(self):
00036     return __name__
00037 
00038   def setup(self):
00039     log.debug("userApplication.setup()")
00040     # A state transition can be rejected by not returning None
00041     return None
00042 
00043   def startRun(self):
00044     log.debug("userApplication.startRun()")
00045     # A state transition can be rejected by not returning None
00046     self.rc.doStop()
00047     return None
00048 
00049   def stopRun(self):
00050     log.debug("userApplication.stopRun()")
00051     self.setCompletionStatus(self.COMPL_STATUS_PASSED)
00052     self.createTestReport()
00053     # The STOP_RUN transition can not be rejected
00054 
00055   def createTestReport(self):
00056     tr = self.tr
00057     tr.initReport(title='CAL System Test Procedure')
00058     tr.addHTML("""
00059       <STYLE TYPE="text/css">
00060         H1 { font-size: x-large; color: red }
00061         H2 { font-size: large; color: blue }
00062         H3 { font-size: medium; color: blue }
00063       </STYLE>
00064     """)
00065     tr.addHeading('CALF_SUPP_P02')
00066     tr.addHeading('System Test Procedure Report')
00067     tr.addHeading('Sat May 31, 2003 18:01:46 Eastern Daylight Time')
00068     versions = tr.addSection('Versions')
00069     tr.addSectionItem(versions, 'Release', 'P01-06-00')
00070     verTable = tr.addSectionTable(versions, border='1', width='25%')
00071     tr.addTableHeader(verTable, '<i>Module</i>', 'left')
00072     tr.addTableHeader(verTable, '<i>Version</i>', 'right')
00073     tr.beginTableRow(verTable)
00074     tr.addTableData('GAEM', align='left')
00075     tr.addTableData('2.0.1.0', align='right')
00076     tr.beginTableRow(verTable)
00077     tr.addTableData('GGLT', align='left')
00078     tr.addTableData('1.3.1.0', align='right')
00079     tr.addSectionItem(versions, 'Verification failed on', 'cmdCli, evtCli')
00080     assocFiles = tr.addSection('Associated Files')
00081     tr.addSectionItem(assocFiles,
00082                       'Snapshot File',
00083                       '../snapshots/030531180141_calf_supp_p02.xml',
00084                       'http://archsys/snapshots/030531180141_calf_supp_p02.xml'
00085                     )
00086     tr.addSectionItem(assocFiles,
00087                       'Event File',
00088                       '../Event Collections/030531180141_calf_supp_p02.ced',
00089                       'http://archsys/Event Collections/030531180141_calf_supp_p02.ced'
00090                     )
00091 
00092     runp = tr.addSection('Run Parameters')
00093     tr.addSectionItem(runp, 'Number of Charge Injection events per setting', '500')
00094     tr.addSectionItem(runp, 'Charge Injection setting', '100')
00095     tr.addSectionItem(runp, 'Tack Delay Setting(timed readout delay)', '56')
00096     tr.addSectionItem(runp, 'CAL Bias DAC setting', '0x15800')
00097     tr.addSectionItem(runp, 'LE Gain setting', '5')
00098     tr.addSectionItem(runp, 'LE Gain setting', '13')
00099     tr.addSectionImage(runp, 'Test Image', './CALreport.png')
00100     laset = tr.addSection('Log Accept DAC Settings')
00101     dsTable = tr.addSectionTable(laset, border='1', width='100%')
00102     for hdr in ('Row', 'Lg0', 'Lg1', 'Lg2', 'Lg3', 'Lg4', 'Lg5', 'Lg6', 'Lg7', 'Lg8', 'Lg9', 'Lg10', 'Lg11'):
00103       tr.addTableHeader(dsTable, hdr, align='left')
00104     for data in [('X0' ,17,0,0,13,16,20,23,16,2,0,3,18),
00105                 ('X0+',18,28,15,16,8,6,16,7,11,32,0,6)
00106                 ]:
00107       tr.beginTableRow(dsTable)
00108       for d in data:
00109         tr.addTableData(d, align='left', width='7%')
00110     corNrgThr = tr.addSection('Corresponding Energy Thresholds(Mev)')
00111     ntTable = tr.addSectionTable(corNrgThr, border='1', width='100%')
00112     for hdr in ('Row', 'Lg0', 'Lg1', 'Lg2', 'Lg3', 'Lg4', 'Lg5', 'Lg6', 'Lg7', 'Lg8', 'Lg9', 'Lg10', 'Lg11'):
00113       tr.addTableHeader(ntTable, hdr, align='left')
00114     for data in [('X0' ,0.76,1.58,1.71,0.58,0.62,0.57,0.48,0.78,0.58,1.82,0.44,1.01),
00115                 ('X0+',0.75,0.66,1.14,0.65,0.36,0.63,0.62,0.93,0.61,0.58,3.83,0.50)
00116                 ]:
00117       tr.beginTableRow(ntTable)
00118       for d in data:
00119         if d > 1.0:
00120           d = '<b>' + str(d) + '</b>'
00121         else:
00122           d = str(d)
00123         tr.addTableData("<u>"+d+"</u>", align='left', width='7%')
00124     tr.addHTML('<b>BOLD</b> indicates energy thresholds above 1 Mev', section=corNrgThr)
00125     sumPage = tr.addSection('Summary Page', insert=0)
00126     tr.addSectionItem(sumPage, 'Test Description', 'Determine nominal log accept DAC settings')
00127     tr.addSectionItem(sumPage, 'Operator', 'johnson')
00128     tr.addSectionItem(sumPage, 'Schema', 'EM AFEE boards SN# X-001, X-002, Y-001, Y-002')
00129     tr.addSectionItem(sumPage, 'Configuration', 'calf_supp_p02.xml version:0.1')
00130     tr.addSectionItem(sumPage, 'Test Start Time', 'Sat May 31, 2003 18:01:46 Eastern Daylight Time')
00131     tr.addSectionItem(sumPage, 'Test End Time', 'Sat May 31, 2003 18:04:12 Eastern Daylight Time')
00132     tr.addSectionItem(sumPage, 'Test Start AFEEoTo Temp', '25.13C')
00133     tr.addSectionItem(sumPage, 'Test Stop AFEEoTo Temp', '25.17C')
00134     tr.addSectionItem(sumPage, 'Status', 'PASSED')
00135     tr.addSectionItem(sumPage, 'Notes', '')
00136     tr.insertSection(sumPage, versions)
00137     log.debug("Generating test report...")
00138     testReportFile = os.path.join(self.prefs["reportdir"],
00139                                   'testAppReport_%s.html' % self.runId)
00140     tr.transformToFile(os.path.expandvars('$ONLINE_ROOT/LATTE/repos/reportStyle.xsl'),
00141                                           testReportFile)
00142     self.addExportedFile(testReportFile)
00143 
00144 
00145 
00146 # Standalone mode:
00147 if __name__ == "__main__":
00148   from LATTE.runcontrol.RunControlCommon import RunControlCommon
00149 
00150   rcCommon = RunControlCommon()
00151   rcCommon.initialize()
00152   rcCommon.setLoggingLevel("INFO")
00153   rcCommon.connect()
00154   ua = userApplication(None, 321, rcCommon)
00155   ua.rcSetup()
00156   ua.rcStartRun()
00157   ua.wait()
00158   ua.rcStopRun()
00159   ua.rcTeardown()

Generated on Fri Jul 21 13:26:33 2006 for LATTE R04-12-00 by doxygen 1.4.3