Commit d8cb3c26 authored by Christopher Turner's avatar Christopher Turner

Refactoring plugged and unplugged tests

There is now a base class for LVDS and TTL.
parent ac73b647
......@@ -6,7 +6,6 @@ import socket
import time
import os, sys, argparse
import logging
from tests import *
class RunTests(object):
......@@ -61,7 +60,7 @@ class RunTests(object):
self.file_logger.info('-- {:<7} {} {}'.format(
name.upper(),
config[1],
''.join(['-']*22)))
''.join(['-']*32)))
tst = test_cls(self.cmdsock, config[1])
cls_list.append(tst)
tst.run()
......@@ -69,9 +68,9 @@ class RunTests(object):
self.print_summary(cls_list)
def print_summary(self, cls_list):
self.console_logger.info('-- SUMMARY {}'.format(''.join(['-'] * 24)))
self.console_logger.info('-- SUMMARY {}'.format(''.join(['-'] * 34)))
self.console_logger.info(
'{:<15}{:<11}{:<10}'.format('TEST', 'NUMBER', 'ERRORS'))
'{:<12}{:<12}{:<11}{:<10}'.format('TEST', 'TYPE', 'BLOCK', 'ERRORS'))
self.console_logger.info('{}'.format(''.join(['-'] * 35)))
for cls in cls_list:
summary = cls.get_summary()
......
#!/bin/env dls-python
import PandATest
from collections import OrderedDict
class Encoder(PandATest.PandATest):
def __init__(self, *args, **kwargs):
super(Encoder, self).__init__(*args, **kwargs)
self.test_type = 'Unplugged'
def test_code(self):
#(cmd, (expected result, +- bound of result))
setup_quad_commands = OrderedDict([
('INENC{}.BYPASS=On'.format(self.blocknum), ('OK', 0)),
('OUTENC{}.BYPASS=On'.format(self.blocknum), ('OK', 0)),
('INENC{}.PROTOCOL=Quadrature'.format(self.blocknum), ('OK', 0)),
('OUTENC{}.PROTOCOL=Quadrature'.format(self.blocknum), ('OK', 0))
])
setup_ssi_commands = OrderedDict([
('INENC{}.PROTOCOL=SSI'.format(self.blocknum), ('OK', 0)),
('OUTENC{}.PROTOCOL=SSI'.format(self.blocknum), ('OK', 0))
])
#SET FOR QUADRATURE
for cmd, expected in setup_quad_commands.items():
response = self.send_cmd(cmd)
self.test_result.append(
self.check_response(response, expected[0], cmd, expected[1]))
self.outputs = ['A', 'B', 'Z']
self.inputs = self.outputs
self.ch_connect = {
self.outputs[0]: -1,
self.outputs[1]: -1,
self.outputs[2]: -1,
}
default_val = 1
self.toggle_val('OUTENC', '', 'INENC', '', default_val)
#SET FOR SSI
for cmd, expected in setup_ssi_commands.items():
response = self.send_cmd(cmd)
self.test_result.append(
self.check_response(response, expected[0], cmd, expected[1]))
# #TOGGLE SSI FIELDS
self.outputs = ['CLK']
self.inputs = self.outputs
self.ch_connect = {
self.outputs[0]: -1,
}
self.toggle_val('INENC', '', 'OUTENC', '', default_val)
self.outputs = ['DATA']
self.inputs = self.outputs
self.ch_connect = {
self.outputs[0]: -1,
}
self.toggle_val('OUTENC', '', 'INENC', '', default_val)
def toggle_val(self, out_param, out_field, in_param, in_field, default):
for outp in self.outputs:
for val in [1, 0]:
out_cmd = '{}{}.{}={}'.format(
out_param, self.blocknum, outp, self.toggle_cmd[val])
self.set_output(out_cmd)
in_cmd = '{}{}.{}?'.format(in_param, self.blocknum, '{}')
self.toggle_check(
in_cmd, outp, self.ch_connect[outp], default, val)
#!/bin/env dls-python
import PandATest
import Lvds
import Ttl
import Encoder
"""
LVDS and TTL Loop Back (LB) tests combined
"""
class LoopBack(PandATest.PandATest):
def __init__(self, *args, **kwargs):
super(LoopBack, self).__init__(*args, **kwargs)
# LVDS LOOP BACK
self.lp = Lvds.Lvds(*args, **kwargs)
self.lp.outputs = [1, 2]
self.lp.inputs = [1, 2]
self.lp.ch_connect = {
self.lp.outputs[0]: self.lp.inputs[0],
self.lp.outputs[1]: self.lp.inputs[1]
}
self.lp.default_val = 0
self.lp.unplugged = False
# TTL LOOP BACK
self.tp = Ttl.Ttl(*args, **kwargs)
self.tp.outputs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
self.tp.inputs = [1, 2, 3, 4, 5, 6]
self.tp.ch_connect = {
self.tp.outputs[0]: self.tp.inputs[0],
self.tp.outputs[1]: self.tp.inputs[1],
self.tp.outputs[2]: self.tp.inputs[2],
self.tp.outputs[3]: self.tp.inputs[3],
self.tp.outputs[4]: self.tp.inputs[4],
self.tp.outputs[5]: self.tp.inputs[5],
self.tp.outputs[6]: self.tp.inputs[0],
self.tp.outputs[7]: self.tp.inputs[1],
self.tp.outputs[8]: self.tp.inputs[2],
self.tp.outputs[9]: self.tp.inputs[3]
}
self.tp.default_val = 0
#ENCODER LOOP BACK
self.enc1 = Encoder.Encoder(*args, **kwargs)
self.enc1.blocknum = 1
self.enc2 = Encoder.Encoder(*args, **kwargs)
self.enc2.blocknum = 2
self.enc3 = Encoder.Encoder(*args, **kwargs)
self.enc3.blocknum = 3
self.enc4 = Encoder.Encoder(*args, **kwargs)
self.enc4.blocknum = 4
def test_code(self):
self.logger.info('---- {} {}'.format('LVDS LOOP BACK',''.join(['-']*28)))
self.lp.test_code()
self.logger.info('---- {} {}'.format('TTL LOOP BACK',''.join(['-']*28)))
self.tp.test_code()
self.logger.info('---- {} {} {} {}'.format('ENCODER',
self.enc1.blocknum,
'LOOP BACK',
''.join(['-']*28)
))
self.enc1.test_code()
self.logger.info('---- {} {} {} {}'.format('ENCODER',
self.enc2.blocknum,
'LOOP BACK',
''.join(['-']*28)
))
self.enc2.test_code()
self.logger.info('---- {} {} {} {}'.format('ENCODER',
self.enc3.blocknum,
'LOOP BACK',
''.join(['-']*28)
))
self.enc3.test_code()
self.logger.info('---- {} {} {} {}'.format('ENCODER',
self.enc4.blocknum,
'LOOP BACK',
''.join(['-']*28)
))
self.enc4.test_code()
def get_summary(self):
tests = [self.lp, self.tp, self.enc1, self.enc2, self.enc3, self.enc4]
summary = []
for test in tests:
summary.append("{:<12}{:<12}{:<10} ERRORS: {}".format(
test.__class__.__name__,
test.unplugged_string[test.unplugged],
test.blocknum,
test.test_result.count(0)))
return summary
def get_user_input(self):
inputy = '.'
while inputy not in ['']:
print "Loopback connectors connected, OK ? [return]"
inputy = raw_input()
#!/bin/env dls-python
import PandATest
class Lvds(PandATest.PandATest):
def __init__(self, *args, **kwargs):
super(Lvds, self).__init__(*args, **kwargs)
self.inputs = [1, 2]
self.outputs = [1, 2]
self.ch_connect = {
self.outputs[0]: -1,
self.outputs[1]: -1
}
self.default_val = 1
def get_user_input(self):
inputy = '.'
msg = "Loopback connectors for LVDS NOT connected, OK ? [return]"
if not self.unplugged:
msg = "Loopback connectors for LVDS connected, OK ? [return]"
while inputy not in ['']:
print msg
inputy = raw_input()
def test_code(self):
self.toggle_val('LVDSOUT', 'VAL', 'LVDSIN', 'VAL', self.default_val)
......@@ -16,13 +16,13 @@ class LvdsLoopBack(PandATest.PandATest):
self.outputs[0]: self.inputs[0],
self.outputs[1]: self.inputs[1]
}
self.default_val = 0
def get_user_input(self):
inputy = '.'
while inputy not in ['']:
print "Loopback connecters for LVDS connected, OK ? [return]"
print "Loopback connectors for LVDS connected, OK ? [return]"
inputy = raw_input()
def test_code(self):
default_val = 0
self.toggle_val('LVDSOUT', 'VAL', 'LVDSIN', 'VAL', default_val)
\ No newline at end of file
self.toggle_val('LVDSOUT', 'VAL', 'LVDSIN', 'VAL', self.default_val)
\ No newline at end of file
......@@ -16,13 +16,13 @@ class LvdsUnplugged(PandATest.PandATest):
self.outputs[0]: -1,
self.outputs[1]: -1
}
self.default_val = 1
def get_user_input(self):
inputy = '.'
while inputy not in ['']:
print "Loopback connecters for LVDS NOT connected, OK ? [return]"
print "Loopback connectors for LVDS NOT connected, OK ? [return]"
inputy = raw_input()
def test_code(self):
default_val = 1
self.toggle_val('LVDSOUT', 'VAL', 'LVDSIN', 'VAL', default_val)
self.toggle_val('LVDSOUT', 'VAL', 'LVDSIN', 'VAL', self.default_val)
......@@ -8,6 +8,7 @@ class PandATest(object):
self.logger = self.setup_logging()
self.test_result = []
self.blocknum = blocknum
self.test_type = ""
self.ok_string = {
0: "..NOT OK",
1: "..OK"
......@@ -16,6 +17,11 @@ class PandATest(object):
0: 'BITS.ZERO',
1: 'BITS.ONE'
}
self.unplugged_string = {
False : 'Loop Back',
True : 'Unplugged'
}
self.unplugged = False
def setup_logging(self):
name = '.'.join([self.__class__.__name__])
......@@ -42,8 +48,10 @@ class PandATest(object):
def get_summary(self):
error_count = self.test_result.count(0)
summary = ["{:<15}{:<10} ERRORS: {}".format(
unplugged_msg = self.unplugged_string[self.unplugged]
summary = ["{:<12}{:<12}{:<10} ERRORS: {}".format(
self.__class__.__name__,
unplugged_msg,
self.blocknum,
error_count)
]
......
#!/bin/env dls-python
import PandATest
import LvdsLoopBack
import TtlLoopBack
"""
LVDS and TTL Loop Back (LB) tests combined
"""
class Plugged(PandATest.PandATest):
def __init__(self, *args, **kwargs):
super(Plugged, self).__init__(*args, **kwargs)
self.lp = LvdsLoopBack.LvdsLoopBack(*args, **kwargs)
self.tp = TtlLoopBack.TtlLoopBack(*args, **kwargs)
def test_code(self):
self.logger.info('LVDS PLUGGED')
self.lp.test_code()
self.logger.info('TTL PLUGGED')
self.tp.test_code()
def get_summary(self):
summary = ["{:<15}{:<10} ERRORS: {}".format(
self.lp.__class__.__name__,
self.blocknum,
self.lp.test_result.count(0)),
"{:<15}{:<10} ERRORS: {}".format(
self.tp.__class__.__name__,
self.blocknum,
self.tp.test_result.count(0)),
]
return summary
def get_user_input(self):
inputy = '.'
while inputy not in ['']:
print "Loopback connectors connected, OK ? [return]"
inputy = raw_input()
\ No newline at end of file
#!/bin/env dls-python
import PandATest
class Ttl(PandATest.PandATest):
def __init__(self, *args, **kwargs):
super(Ttl, self).__init__(*args, **kwargs)
self.outputs = [1,2,3,4,5,6,7,8,9,10]
self.inputs = [1,2,3,4,5,6]
self.ch_connect = {
self.outputs[0]: -1,
self.outputs[1]: -1,
self.outputs[2]: -1,
self.outputs[3]: -1,
self.outputs[4]: -1,
self.outputs[5]: -1,
self.outputs[6]: -1,
self.outputs[7]: -1,
self.outputs[8]: -1,
self.outputs[9]: -1,
}
self.default_val = 0
def get_user_input(self):
inputy = '.'
while inputy not in ['']:
print "Loopback connecters for TTL NOT connected, OK ? [return]"
inputy = raw_input()
def test_code(self):
self.toggle_val('TTLOUT', 'VAL', 'TTLIN', 'VAL', self.default_val)
\ No newline at end of file
#!/bin/env dls-python
import PandATest
import LvdsUnplugged
import TtlUnplugged
import Lvds
import Ttl
import EncoderUnplugged as Encoder
"""
LVDS and TTL Unplugged tests
......@@ -12,25 +13,89 @@ class Unplugged(PandATest.PandATest):
def __init__(self, *args, **kwargs):
super(Unplugged, self).__init__(*args, **kwargs)
self.lu = LvdsUnplugged.LvdsUnplugged(*args, **kwargs)
self.tu = TtlUnplugged.TtlUnplugged(*args, **kwargs)
# LVDS UNPLUGGED
self.lu = Lvds.Lvds(*args, **kwargs)
self.lu .inputs = [1, 2]
self.lu .outputs = [1, 2]
self.lu .ch_connect = {
self.lu .outputs[0]: -1,
self.lu .outputs[1]: -1
}
self.default_val = 1
self.lu.unplugged = True
#TTL UNPLUGGED
self.tu = Ttl.Ttl(*args, **kwargs)
self.tu.outputs = [1,2,3,4,5,6,7,8,9,10]
self.tu.inputs = [1,2,3,4,5,6]
self.tu.ch_connect = {
self.tu.outputs[0]: -1,
self.tu.outputs[1]: -1,
self.tu.outputs[2]: -1,
self.tu.outputs[3]: -1,
self.tu.outputs[4]: -1,
self.tu.outputs[5]: -1,
self.tu.outputs[6]: -1,
self.tu.outputs[7]: -1,
self.tu.outputs[8]: -1,
self.tu.outputs[9]: -1,
}
self.tu.default_val = 0
self.tu.unplugged = True
#ENCODER UNPLUGGED
self.enc1 = Encoder.Encoder(*args, **kwargs)
self.enc1.blocknum = 1
self.enc1.unplugged = True
self.enc2 = Encoder.Encoder(*args, **kwargs)
self.enc2.blocknum = 2
self.enc2.unplugged = True
self.enc3 = Encoder.Encoder(*args, **kwargs)
self.enc3.blocknum = 3
self.enc3.unplugged = True
self.enc4 = Encoder.Encoder(*args, **kwargs)
self.enc4.blocknum = 4
self.enc4.unplugged = True
def test_code(self):
self.logger.info('LVDS UNPLUGGED')
self.logger.info('---- {} {}'.format('LVDS UNPLUGGED',''.join(['-']*28)))
self.lu.test_code()
self.logger.info('TTL UNPLUGGED')
self.logger.info('---- {} {}'.format('TTL UNPLUGGED',''.join(['-']*28)))
self.tu.test_code()
self.logger.info('---- {} {} {} {}'.format('ENCODER',
self.enc1.blocknum,
'UNPLUGGED',
''.join(['-']*28)
))
self.enc1.test_code()
self.logger.info('---- {} {} {} {}'.format('ENCODER',
self.enc2.blocknum,
'UNPLUGGED',
''.join(['-']*28)
))
self.enc2.test_code()
self.logger.info('---- {} {} {} {}'.format('ENCODER',
self.enc3.blocknum,
'UNPLUGGED',
''.join(['-']*28)
))
self.enc3.test_code()
self.logger.info('---- {} {} {} {}'.format('ENCODER',
self.enc4.blocknum,
'UNPLUGGED',
''.join(['-']*28)
))
self.enc4.test_code()
def get_summary(self):
summary = ["{:<15}{:<10} ERRORS: {}".format(
self.lu.__class__.__name__,
self.blocknum,
self.lu.test_result.count(0)),
"{:<15}{:<10} ERRORS: {}".format(
self.tu.__class__.__name__,
self.blocknum,
self.tu.test_result.count(0)),
]
tests = [self.lu, self.tu, self.enc1, self.enc2, self.enc3, self.enc4]
summary = []
for test in tests:
summary.append("{:<12}{:<12}{:<10} ERRORS: {}".format(
test.__class__.__name__,
test.unplugged_string[test.unplugged],
test.blocknum,
test.test_result.count(0)))
return summary
def get_user_input(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment