Commit 57bb56c8 authored by Manuel Castilla's avatar Manuel Castilla Committed by Benoit Rat

Merged in manu-190717_update_tests (pull request #7)

Manu 190717 update tests
parents 7f3e4ae3 dd64e981
...@@ -12,7 +12,7 @@ from ssh import SshCmd,SshCmdException ...@@ -12,7 +12,7 @@ from ssh import SshCmd,SshCmdException
## Class DIO ## Class DIO
# #
class DIO (): class DIO ():
def __init__(self,hostName,userName,password,interfaceName): def __init__(self,hostName,userName,password,busId):
""" """
Construcctor Construcctor
...@@ -20,13 +20,13 @@ class DIO (): ...@@ -20,13 +20,13 @@ class DIO ():
hostName: ip or hostname hostName: ip or hostname
userName: username userName: username
password : password password : password
interfaceName: interface name busId: number PCIe bus
""" """
self.hostName = hostName self.hostName = hostName
self.userName = userName self.userName = userName
self.password = password self.password = password
self.interfaceName = interfaceName self.busId = busId
self.command = "sudo wr-dio-cmd " + interfaceName self.command = "sudo wr-dio-cmd /dev/fmc-dio-%i:0" % int(busId,16)
self.sshCmd = SshCmd() self.sshCmd = SshCmd()
def configurePort(self,channel,mode): def configurePort(self,channel,mode):
......
...@@ -31,16 +31,10 @@ def loadDriver(hostName,userName,password): ...@@ -31,16 +31,10 @@ def loadDriver(hostName,userName,password):
command = "ifconfig | grep wr | wc -l" command = "ifconfig | grep wr | wc -l"
value = sshCmd.exec(hostName,command,userName,password) value = sshCmd.exec(hostName,command,userName,password)
if (int(value) == 0): if (int(value) == 0):
command = "sudo modprobe -r spec" commands = ["sudo modprobe spec","sudo modprobe htvic",
sshCmd.exec(hostName,command,userName,password) "sudo modprobe wr-nic","sudo modprobe wr-dio"]
command = "sudo modprobe -r wr-nic" for cmd in commands:
sshCmd.exec(hostName,command,userName,password) sshCmd.exec(hostName,cmd,userName,password)
command = "sudo modprobe spec"
sshCmd.exec(hostName,command,userName,password)
command = "sudo insmod /lib/modules/$(uname -r)/extra/wr-nic.ko wrc=1" #esto es temporal
sshCmd.exec(hostName,command,userName,password)
command = "sudo modprobe wr-nic"
sshCmd.exec(hostName,command,userName,password)
command = "ifconfig | grep wr | wc -l" command = "ifconfig | grep wr | wc -l"
value = sshCmd.exec(hostName,command,userName,password) value = sshCmd.exec(hostName,command,userName,password)
if (int(value) == 0): if (int(value) == 0):
......
...@@ -38,7 +38,7 @@ def findTimestamp(listStamp1,listStamp2,offset): ...@@ -38,7 +38,7 @@ def findTimestamp(listStamp1,listStamp2,offset):
return False return False
def testAdvDIO(hostName1,userName1,password1,interfaceName1,hostName2,userName2,password2,interfaceName2): def testAdvDIO(hostName1,userName1,password1,interfaceName1,busId1,hostName2,userName2,password2,interfaceName2,busId2):
""" """
Check the pulses generated on a remote board Check the pulses generated on a remote board
...@@ -47,33 +47,34 @@ def testAdvDIO(hostName1,userName1,password1,interfaceName1,hostName2,userName2, ...@@ -47,33 +47,34 @@ def testAdvDIO(hostName1,userName1,password1,interfaceName1,hostName2,userName2,
username1: user name host 1 username1: user name host 1
password1: password password1: password
interfaceName1 : interface name interfaceName1 : interface name
busId1: number PCIe bus PC 1
hostName2: ip remote host 2 hostName2: ip remote host 2
username2: user name host 2 username2: user name host 2
password2: password password2: password
interfaceName2 : interface name interfaceName2 : interface name
busId2: number PCIe bus PC 2
Raises: Raises:
error test error test
""" """
try: try:
sshCmd1 = SshCmd() sshCmd1 = SshCmd()
sshCmd2 = SshCmd() sshCmd2 = SshCmd()
dio1 = DIO(hostName1,userName1,password1,interfaceName1) dio1 = DIO(hostName1,userName1,password1,busId1)
dio2 = DIO(hostName2,userName2,password2,interfaceName2) dio2 = DIO(hostName2,userName2,password2,busId2)
dio1.configurePorts("pdiii") dio1.configurePorts("pdiii")
dio2.configurePorts("iiiii") dio2.configurePorts("iiiii")
dio1.clearTimestamps() dio1.clearTimestamps()
dio2.clearTimestamps() dio2.clearTimestamps()
command = "sudo wr-dio-agent " + interfaceName1 command = "sudo wr-dio-agent %s /dev/fmc-dio-%i:0" % (interfaceName1,int(busId1,16))
sshCmd1.exec(hostName1,command,userName1,password1,False) sshCmd1.exec(hostName1,command,userName1,password1,False)
command = "sudo wr-dio-ruler " + interfaceName1 + " IN0 R1+" + str(delay) command = "sudo wr-dio-ruler %s /dev/fmc-dio-%i:0 IN0 R1+%s" % (interfaceName2,int(busId1,16),str(delay))
sshCmd2.exec(hostName2,command,userName2,password2,False) sshCmd2.exec(hostName2,command,userName2,password2,False)
totalOffset = delay + maxOffset totalOffset = delay + maxOffset
time.sleep(2) time.sleep(2)
if(not findTimestamp(dio1.getTimestamp(0),dio1.getTimestamp(1),totalOffset)): if(not findTimestamp(dio1.getTimestamp(0),dio1.getTimestamp(1),totalOffset)):
raise raise
except SshCmdException as e: except SshCmdException as e:
sshCmd.printSshErrorCommand(e.strError,command) SshCmd.printSshErrorCommand(e.strError,command)
print("Test advanced error")
raise raise
except: except:
print("Test advanced error") print("Test advanced error")
...@@ -91,14 +92,17 @@ def main(configuration): ...@@ -91,14 +92,17 @@ def main(configuration):
userName1 = configuration["userName1"] userName1 = configuration["userName1"]
password1 = configuration["password1"] password1 = configuration["password1"]
interfaceName1 = configuration["interfaceName1"] interfaceName1 = configuration["interfaceName1"]
busIdSpec1 = configuration["busIdSpec1"]
hostName2 = configuration["hostName2"] hostName2 = configuration["hostName2"]
userName2 = configuration["userName2"] userName2 = configuration["userName2"]
password2 = configuration["password2"] password2 = configuration["password2"]
interfaceName2 = configuration["interfaceName2"] interfaceName2 = configuration["interfaceName2"]
busIdSpec2 = configuration["busIdSpec2"]
try: try:
print("Executing advanced DIO test") print("\nExecuting advanced DIO test")
testAdvDIO(hostName1,userName1,password1,interfaceName1,hostName2,userName2,password2,interfaceName2) print("This test needs White Rabbit working")
testAdvDIO(hostName1,userName1,password1,interfaceName1,busIdSpec1,hostName2,userName2,password2,interfaceName2,busIdSpec2)
print("Test advanced DIO: successful") print("Test advanced DIO: successful")
except: except:
print("Test advanced DIO: error") print("Test advanced DIO: error")
...@@ -115,10 +119,12 @@ if __name__ == '__main__': ...@@ -115,10 +119,12 @@ if __name__ == '__main__':
configuration["userName1"] = config.get('pc1',"userName") configuration["userName1"] = config.get('pc1',"userName")
configuration["password1"] = config.get('pc1',"password") configuration["password1"] = config.get('pc1',"password")
configuration["interfaceName1"] = config.get('pc1',"interfaceName") configuration["interfaceName1"] = config.get('pc1',"interfaceName")
configuration["busIdSpec1"] = config.get('pc1',"busIdSpec")
configuration["hostName2"] = config.get('pc2',"hostName") configuration["hostName2"] = config.get('pc2',"hostName")
configuration["userName2"] = config.get('pc2',"userName") configuration["userName2"] = config.get('pc2',"userName")
configuration["password2"] = config.get('pc2',"password") configuration["password2"] = config.get('pc2',"password")
configuration["interfaceName2"] = config.get('pc2',"interfaceName") configuration["interfaceName2"] = config.get('pc2',"interfaceName")
configuration["busIdSpec2"] = config.get('pc2',"busIdSpec")
main(configuration) main(configuration)
except configparser.Error as e: except configparser.Error as e:
......
...@@ -35,7 +35,7 @@ def findTimestamp(listStamp1,listStamp2,offset): ...@@ -35,7 +35,7 @@ def findTimestamp(listStamp1,listStamp2,offset):
return False return False
def tryChannel(hostName1,userName1,password1,interfaceName1,hostName2,userName2,password2,interfaceName2,channel): def tryChannel(hostName1,userName1,password1,busId1,hostName2,userName2,password2,busId2,channel):
""" """
Try the input and output of channel Try the input and output of channel
...@@ -43,18 +43,18 @@ def tryChannel(hostName1,userName1,password1,interfaceName1,hostName2,userName2, ...@@ -43,18 +43,18 @@ def tryChannel(hostName1,userName1,password1,interfaceName1,hostName2,userName2,
hostName1: ip remote host 1 hostName1: ip remote host 1
username1: user name host 1 username1: user name host 1
password1: password password1: password
interfaceName1 : interface name busId1: number PCIe bus PC 1
hostName2: ip remote host 2 hostName2: ip remote host 2
username2: user name host 2 username2: user name host 2
password2: password password2: password
interfaceName2 : interface name busId2: number PCIe bus PC 2
channel: number of channel to try(0 to 4) channel: number of channel to try(0 to 4)
Raises: Return:
error channel True if the channel fail, False otherwise
""" """
try: try:
dio1 = DIO(hostName1,userName1,password1,interfaceName1) dio1 = DIO(hostName1,userName1,password1,busId1)
dio2 = DIO(hostName2,userName2,password2,interfaceName2) dio2 = DIO(hostName2,userName2,password2,busId2)
dio1.configurePorts("pdddd") dio1.configurePorts("pdddd")
dio2.configurePorts("iiiii") dio2.configurePorts("iiiii")
dio1.clearTimestamps() dio1.clearTimestamps()
...@@ -78,13 +78,14 @@ def tryChannel(hostName1,userName1,password1,interfaceName1,hostName2,userName2, ...@@ -78,13 +78,14 @@ def tryChannel(hostName1,userName1,password1,interfaceName1,hostName2,userName2,
if(findTimestamp(dio1.getTimestamp(channel),dio2.getTimestamp(channel),maxOffset)): if(findTimestamp(dio1.getTimestamp(channel),dio2.getTimestamp(channel),maxOffset)):
print("Channel",channel,": ok in host:",hostName1,"and host:",hostName2) print("Channel",channel,": ok in host:",hostName1,"and host:",hostName2)
return False
else: else:
raise raise
else: else:
raise raise
except: except:
print("Channel",channel,": error in host:",hostName1,"or host:",hostName2) print("Channel",channel,": error in host:",hostName1,"or host:",hostName2)
raise return True
#--------------------------------------------------# #--------------------------------------------------#
...@@ -97,21 +98,23 @@ def main(configuration): ...@@ -97,21 +98,23 @@ def main(configuration):
hostName1 = configuration["hostName1"] hostName1 = configuration["hostName1"]
userName1 = configuration["userName1"] userName1 = configuration["userName1"]
password1 = configuration["password1"] password1 = configuration["password1"]
interfaceName1 = configuration["interfaceName1"] busIdSpec1 = configuration["busIdSpec1"]
hostName2 = configuration["hostName2"] hostName2 = configuration["hostName2"]
userName2 = configuration["userName2"] userName2 = configuration["userName2"]
password2 = configuration["password2"] password2 = configuration["password2"]
interfaceName2 = configuration["interfaceName2"] busIdSpec2 = configuration["busIdSpec2"]
try: error = False
print("Executing DIO test") numberChannels = 5
tryChannel(hostName1,userName1,password1,interfaceName1,hostName2,userName2,password2,interfaceName2,0)
tryChannel(hostName1,userName1,password1,interfaceName1,hostName2,userName2,password2,interfaceName2,1) print("\nExecuting DIO test")
tryChannel(hostName1,userName1,password1,interfaceName1,hostName2,userName2,password2,interfaceName2,2) print("This test needs White Rabbit working")
tryChannel(hostName1,userName1,password1,interfaceName1,hostName2,userName2,password2,interfaceName2,3) for i in range(numberChannels):
tryChannel(hostName1,userName1,password1,interfaceName1,hostName2,userName2,password2,interfaceName2,4) error |= tryChannel(hostName1,userName1,password1,busIdSpec1,hostName2,userName2,password2,busIdSpec2,i)
if(not error):
print("Test DIO: successful") print("Test DIO: successful")
except: else:
print("Test DIO: error") print("Test DIO: error")
if __name__ == '__main__': if __name__ == '__main__':
...@@ -125,11 +128,11 @@ if __name__ == '__main__': ...@@ -125,11 +128,11 @@ if __name__ == '__main__':
configuration["hostName1"] = config.get('pc1',"hostName") configuration["hostName1"] = config.get('pc1',"hostName")
configuration["userName1"] = config.get('pc1',"userName") configuration["userName1"] = config.get('pc1',"userName")
configuration["password1"] = config.get('pc1',"password") configuration["password1"] = config.get('pc1',"password")
configuration["interfaceName1"] = config.get('pc1',"interfaceName") configuration["busIdSpec1"] = config.get('pc1',"busIdSpec")
configuration["hostName2"] = config.get('pc2',"hostName") configuration["hostName2"] = config.get('pc2',"hostName")
configuration["userName2"] = config.get('pc2',"userName") configuration["userName2"] = config.get('pc2',"userName")
configuration["password2"] = config.get('pc2',"password") configuration["password2"] = config.get('pc2',"password")
configuration["interfaceName2"] = config.get('pc2',"interfaceName") configuration["busIdSpec2"] = config.get('pc2',"busIdSpec")
main(configuration) main(configuration)
except configparser.Error as e: except configparser.Error as e:
......
...@@ -28,24 +28,27 @@ def configurationIpInterface(hostName,userName,password,busId,interfaceName,ip): ...@@ -28,24 +28,27 @@ def configurationIpInterface(hostName,userName,password,busId,interfaceName,ip):
""" """
try: try:
sshCmd = SshCmd() sshCmd = SshCmd()
#check network manager
command = "sudo service network-manager status | grep running"
value = sshCmd.exec(hostName,command,userName,password)
if ("running" in value):
print("\nWarning: The network manager is running on host %s, the test may not work correctly\n" % ip)
command = "sudo ifconfig " + interfaceName + " " + ip command = "sudo ifconfig " + interfaceName + " " + ip
sshCmd.exec(hostName,command,userName,password) sshCmd.exec(hostName,command,userName,password)
command = "ifconfig | grep " + ip + " | wc -l" command = "ifconfig | grep " + ip + " | wc -l"
value = sshCmd.exec(hostName,command,userName,password) value = sshCmd.exec(hostName,command,userName,password)
if (int(value) == 1): if (int(value) == 1):
vuart = Vuart(hostName,userName,password,busId) print("Configuration ip interface: ok on host:",hostName)
value = vuart.setIp(ip) else:
raise
if (("IP-address: " + str(ip)) in value):
print("Configuration ip interface: ok in host:",hostName)
else:
raise
except SshCmdException as e: except SshCmdException as e:
sshCmd.printSshErrorCommand(e.strError,command) sshCmd.printSshErrorCommand(e.strError,command)
print("Configuration ip interface: error in host:",hostName) print("Configuration ip interface: error on host:",hostName)
raise raise
except: except:
print("Configuration ip interface2: error in host:",hostName) print("Configuration ip interface: error on host:",hostName)
raise raise
...@@ -107,7 +110,8 @@ def main(configuration): ...@@ -107,7 +110,8 @@ def main(configuration):
interfaceName2 = configuration["interfaceName2"] interfaceName2 = configuration["interfaceName2"]
try: try:
print("Executing NIC test") print("\nExecuting NIC test")
print("This test needs the network manager stopped")
configurationIpInterface(hostName1,userName1,password1,busIdSpec1,interfaceName1,ipWR1) configurationIpInterface(hostName1,userName1,password1,busIdSpec1,interfaceName1,ipWR1)
configurationIpInterface(hostName2,userName2,password2,busIdSpec2,interfaceName2,ipWR2) configurationIpInterface(hostName2,userName2,password2,busIdSpec2,interfaceName2,ipWR2)
testIperf(hostName1,userName1,password1,ipWR2,hostName2,userName2,password2) testIperf(hostName1,userName1,password1,ipWR2,hostName2,userName2,password2)
......
...@@ -84,7 +84,7 @@ def checkTrackPhase(hostName,userName,password,busId): ...@@ -84,7 +84,7 @@ def checkTrackPhase(hostName,userName,password,busId):
""" """
try: try:
vuart = Vuart(hostName,userName,password,busId) vuart = Vuart(hostName,userName,password,busId)
numberTimesTry = 10 numberTimesTry = 15
i = 0 i = 0
while not vuart.isTrackPhase(): while not vuart.isTrackPhase():
if (i == numberTimesTry): if (i == numberTimesTry):
...@@ -114,7 +114,7 @@ def main(configuration): ...@@ -114,7 +114,7 @@ def main(configuration):
interfaceName2 = configuration["interfaceName2"] interfaceName2 = configuration["interfaceName2"]
try: try:
print("Executing WR test") print("\nExecuting WR test")
masterSpec1 = whoIsMaster(hostName1,userName1,password1,busIdSpec1) masterSpec1 = whoIsMaster(hostName1,userName1,password1,busIdSpec1)
masterSpec2 = whoIsMaster(hostName2,userName2,password2,busIdSpec2) masterSpec2 = whoIsMaster(hostName2,userName2,password2,busIdSpec2)
if (masterSpec1 == 1 or masterSpec2 == 1): if (masterSpec1 == 1 or masterSpec2 == 1):
......
...@@ -26,8 +26,15 @@ class Vuart (): ...@@ -26,8 +26,15 @@ class Vuart ():
self.userName = userName self.userName = userName
self.password = password self.password = password
self.busId = busId self.busId = busId
self.command = "sudo spec-vuart -b " + str(busId) + " -c "
self.sshCmd = SshCmd() self.sshCmd = SshCmd()
self.command = ""
parse_dev = self.vUartCommand("lspci | grep CERN | cut -f2 -d :").split(".")
if (len(parse_dev) > 1):
self.command = "sudo wrpc-vuart -f /sys/bus/pci/devices/0000\:00\:%02x.0/0000" \
"\:%02x\:%02x.0/resource0 -o 0x20500 -c " % (int(busId,16),int(busId,16),int(parse_dev[0],16))
else:
print("Error: Spec does not detected on host: %s" % hostName)
raise
def setIp(self,ip): def setIp(self,ip):
""" """
...@@ -89,7 +96,7 @@ class Vuart (): ...@@ -89,7 +96,7 @@ class Vuart ():
error function error function
""" """
try: try:
command = "sfp\ detect" command = "sfp\ match"
return self.vUartCommand(command) return self.vUartCommand(command)
except: except:
print("Error sfp detect") print("Error sfp detect")
......
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