# # Run the production tests for a LOFAR station subrack # import sys from optparse import OptionParser import cli import testlog ################################################################################ # Parse command line for subrack ID # # -v 0 : only PASSED or FAILED # -v 1 : overall title # -v 11 : result per test # -v 21 : title per test op = OptionParser(usage = 'usage: python3 %prog [options]', version = '%prog 0.1') op.add_option('-v', type = 'int', dest = 'verbosity', help = 'Verbosity level', default = 11) op.add_option('-b', type = 'int', dest = 'batch_nr', help = 'Provide subrack batch number that will be used for the log file name', default = None) op.add_option('-s', type = 'int', dest = 'serial_nr', help = 'Provide subrack serial number that will be used for the log file name', default = None) opts, args = op.parse_args() # - Option checks and/or reformatting if opts.batch_nr == None: op.error('Option -b must specify a subrack batch number') if opts.serial_nr == None: op.error('Option -s must specify a subrack serial number') ################################################################################ # Define subrack testlog class for pass/fail and logging vlev = opts.verbosity testId = '' appLev = False logName = '/opt/stationtest/data/SUBR-%05d-%05d.dat' % (opts.batch_nr, opts.serial_nr) cli.command('rm -f /opt/stationtest/data/SUBR-%05d-%05d.dat', appLev) sr = testlog.Testlog(vlev, testId, logName) sr.setResult('PASSED') sr.setId('Subrack - ') sr.appendLog(11, '') sr.appendLog(1, 'Subrack production test %s' % logName) sr.appendLog(11, '') ################################################################################ sr.setId('RSP version - ') sr.appendLog(21, '') sr.appendLog(21, '### Verify LCU - RSP ethernet link by getting the RSP version info') sr.appendLog(21, '') res = cli.command('./rsp_version.sh') if res.find('wrong') == -1: sr.appendLog(11, '>>> RSP version test went OK') else: sr.appendLog(11, '>>> RSP version test went wrong') sr.appendLog(11, 'CLI:') sr.appendLog(11, res, 1, 1, 1) sr.appendLog(11, 'Result:') sr.appendFile(11, 'rsp_version.log') sr.appendLog(11, 'Expected:') sr.appendFile(11, 'gold/rsp_version.gold') sr.setResult('FAILED') ################################################################################ sr.setId('TBB version - ') sr.appendLog(21, '') sr.appendLog(21, '### Verify LCU - TBB ethernet link by getting the TBB version info') sr.appendLog(21, '') res = cli.command('./tbb_version.sh') if res.find('wrong') == -1: sr.appendLog(11, '>>> TBB version test went OK') else: sr.appendLog(11, '>>> TBB version test went wrong') sr.appendLog(11, 'CLI:') sr.appendLog(11, res, 1, 1, 1) sr.appendLog(11, 'Result:') sr.appendFile(11, 'tbb_version.log') sr.appendLog(11, 'Expected:') sr.appendFile(11, 'gold/tbb_version.gold') sr.setResult('FAILED') ################################################################################ sr.setId('TBB size check - ') sr.appendLog(21, '') sr.appendLog(21, '### Verify the size of the TBB memory modules') sr.appendLog(21, '') res = cli.command('./tbb_size.sh') if res.find('wrong') == -1: sr.appendLog(11, '>>> TBB size test went OK') else: sr.appendLog(11, '>>> TBB size test went wrong') sr.appendLog(11, 'CLI:') sr.appendLog(11, res, 1, 1, 1) sr.appendLog(11, 'Result:') sr.appendFile(11, 'tbb_size.log') sr.appendLog(11, 'Expected:') sr.appendFile(11, 'gold/tbb_size.gold') sr.setResult('FAILED') ################################################################################ sr.setId('TBB memory check - ') sr.appendLog(21, '') sr.appendLog(21, '### Verify TBB memory modules on the TBB') sr.appendLog(21, '') res = cli.command('./tbb_memory.sh') if res.find('wrong') == -1: sr.appendLog(11, '>>> TBB memory test went OK') else: sr.appendLog(11, '>>> TBB memory test went wrong') sr.appendLog(11, 'CLI:') sr.appendLog(11, res, 1, 1, 1) sr.appendLog(11, 'Result:') sr.appendFile(11, 'tbb_memory.log') sr.appendLog(11, 'Expected:') sr.appendFile(11, 'gold/tbb_memory.gold') sr.setResult('FAILED') ################################################################################ sr.setId('SPU status - ') sr.appendLog(21, '') sr.appendLog(21, '### Verify the RSP - SPU I2C interface by reading the SPU sensor data') sr.appendLog(21, '') res = cli.command('python3 i2c_spu.py') res = cli.command('python3 i2c_spu.py') if res.find('wrong') == -1: sr.appendLog(11, '>>> RSP - SPU I2c interface test went OK') else: sr.appendLog(11, '>>> RSP - SPU I2c interface test went wrong') sr.appendLog(11, 'CLI:') sr.appendLog(11, res, 1, 1, 1) sr.appendLog(11, 'Result:') sr.appendFile(11, 'spustat.log') sr.setResult('FAILED') ################################################################################ sr.setId('TD status - ') sr.appendLog(21, '') sr.appendLog(21, '### Verify the RSP - TD I2C interface by reading the TD sensor data') sr.appendLog(21, '') res = cli.command('python3 i2c_td.py') if res.find('wrong') == -1: sr.appendLog(11, '>>> RSP - TD I2c interface test went OK') else: sr.appendLog(11, '>>> RSP - TD I2c interface test went wrong') sr.appendLog(11, 'CLI:') sr.appendLog(11, res, 1, 1, 1) sr.appendLog(11, 'Result:') sr.appendFile(11, 'tdstat.log') sr.setResult('FAILED') ################################################################################ sr.setId('RCU-RSP - ') sr.appendLog(21, '') sr.appendLog(21, '### Verify the RCU -> RSP LVDS interfaces by capturing pseudo random data on RSP') sr.appendLog(21, '') res = cli.command('python3 verify.py --brd rsp0,rsp1,rsp2,rsp3 --fpga blp0,blp1,blp2,blp3 --pol x,y --rep 1 -v 11 --te tc/prsg.py') if res.find('FAILED') == -1: sr.appendLog(11, '>>> RCU-RSP interface test went OK') sr.appendFile(21, 'tc/prsg.log') else: sr.appendLog(11, '>>> RCU-RSP interface test went wrong') sr.appendLog(11, 'CLI:') sr.appendLog(11, res, 1, 1, 1) sr.appendFile(11, 'tc/prsg.log') sr.setResult('FAILED') ################################################################################ # sr.setId('RCU-RSP-TBB - ') # sr.appendLog(21,'') # sr.appendLog(21,'### Verify the RCU - RSP - TBB LVDS interfaces by capturing pseudo random data on TBB') # sr.appendLog(21,'') # res = cli.command('./tbb_prbs_tester.sh') # if res.find('wrong')==-1: # sr.appendLog(11,'>>> RCU - RSP - TBB LVDS interfaces test went OK') # else: # sr.appendLog(11,'>>> RCU - RSP - TBB LVDS interfaces went wrong') # sr.appendLog(11,'CLI:') # sr.appendLog(11,res,1,1,1) # sr.setResult('FAILED') ################################################################################ # End of the subrack test sr.setId('Subrack - ') dt = sr.getRunTime() sr.appendLog(2, 'Duration: %02dm:%02ds' % (dt // 60 % 60, dt % 60)) sr.appendLog(0, sr.getResult()) sr.closeLog()