1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
import shutil
import unittest
import os.path
import os
import sh
from test.helpers.md5 import md5_file
from test.helpers.plc import dcpPLC
class Qplc(unittest.TestCase):
params = None
__resultlist = None # resultlist is a python list of python dictionaries
__QPLCName = None
__plc = None
def __init__(self, testname, testfunc, varlist):
self.params = varlist
super(Qplc, self).__init__(testfunc)
self._testMethodDoc = testname
self.__xmlObj = varlist["xml"]
self.__QPLCName = varlist.get('name', 'qplc')
self.__firmware = varlist.get('firmware', self.__xmlObj.getKeyVal(self.__QPLCName, "firmware", ""))
self.__firmware_md5 = varlist.get('firmware_md5', self.__xmlObj.getKeyVal(self.__QPLCName, "firmware_md5", ""))
self.__factoryTool = varlist.get('factory_tool', self.__xmlObj.getKeyVal(self.__QPLCName, "factory_tool", ""))
self.__gen_ip = varlist.get('gen_ip', self.__xmlObj.getKeyVal(self.__QPLCName, "gen_ip", "0"))
self.__gen_mac = varlist.get('gen_mac', self.__xmlObj.getKeyVal(self.__QPLCName, "gen_mac", "0"))
self.__mtd_device = varlist.get('mtd_device', self.__xmlObj.getKeyVal(self.__QPLCName, "mtd_device", "/dev/mtd0"))
self.__plc = dcpPLC(self.__factoryTool, self.__mtd_device)
self.__resultlist = []
def checkfiles(self):
if not os.path.isfile('{}/{}'.format(self.__filepath_from, self.__file_source)):
return False, 'File test binary Not found {}/{}'.format(self.__filepath_from, self.__file_source)
if not os.path.isfile('{}/{}'.format(self.__filepath_from, self.__file_md5)):
return False, 'File test binary md5 Not found {}/{}'.format(self.__filepath_from, self.__file_md5)
if self.__check_mounted != '':
if not os.path.ismount('{}'.format(self.__check_mounted)):
return False, 'Required mounted failed: {}'.format(self.__path_to)
r, s = self.removefileIfExist('{}/{}'.format(self.__path_to, self.__file_source))
if not r:
return r, s
return True, ''
def __flashMemory(self):
self.__plc.setSaveFirmwareMode()
r, v = self.__plc.SaveFirmware(self.__firmware)
if not r:
self.fail(v)
def execute(self):
# Check files
v, m = self.checkfiles()
if not v:
self.fail(m)
# do flash & verify
self.__flashMemory()
# do Plc boot
self.__plc.setBootMode()
# Wait plc goes UP
def getresults(self):
return self.__resultlist
def gettextresult(self):
return ""
|