You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
6.4 KiB
193 lines
6.4 KiB
import unittest
|
|
import sys,glob,os
|
|
from optparse import OptionParser
|
|
|
|
builds = glob.glob("../build/lib*")
|
|
if len(builds) != 1:
|
|
print "This little hack only works when you've got one build compiled."
|
|
print "python setup.py clean; python setup.py build"
|
|
print "and try again."
|
|
os.exit(10)
|
|
sys.path.insert(0,os.path.join(os.path.abspath("."),builds[0]))
|
|
|
|
import pisock
|
|
|
|
def dumpDBInfo(dbi):
|
|
print '\tDatabase info:'
|
|
print '\t\tname:',dbi['name']
|
|
print '\t\ttype:',dbi['type']
|
|
print '\t\tcreator:',dbi['creator']
|
|
print '\t\tversion:',dbi['version']
|
|
print '\t\tflags: 0x%08lx' % (dbi['flags'])
|
|
print '\t\tmiscFlags: 0x%08lx' % (dbi['miscFlags'])
|
|
print '\t\tmod. count:',dbi['modnum']
|
|
print '\t\tcreated:',dbi['createDate']
|
|
print '\t\tmodified',dbi['modifyDate']
|
|
print '\t\tbackup:',dbi['backupDate']
|
|
|
|
def dumpDBSizeInfo(si):
|
|
print '\tDBSizeInfo:'
|
|
print '\t\tnumRecords:',si['numRecords']
|
|
print '\t\ttotalBytes:',si['totalBytes']
|
|
print '\t\tdataBytes:',si['dataBytes']
|
|
print '\t\tappBlockSize:',si['appBlockSize']
|
|
print '\t\tsortBlockSize:',si['sortBlockSize']
|
|
print '\t\tmaxRecSize:',si['maxRecSize']
|
|
|
|
class OnlineTestCase(unittest.TestCase):
|
|
def setUp(self):
|
|
try:
|
|
pisock.dlp_DeleteDB(sd,0,'PythonTestSuite')
|
|
except:
|
|
pass
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
def testGetSysDateTime(self):
|
|
res = pisock.dlp_GetSysDateTime(sd)
|
|
if VERBOSE:
|
|
print 'GetSysDateTime:',res
|
|
|
|
def testAddSyncLogEntry(self):
|
|
pisock.dlp_AddSyncLogEntry(sd, "Python test.")
|
|
|
|
def testReadSysInfo(self):
|
|
res = pisock.dlp_ReadSysInfo(sd)
|
|
assert res!=None and res.has_key('romVersion')
|
|
if VERBOSE:
|
|
print 'ReadSysInfo: romVersion=%s locale=%s name=%s' % (
|
|
hex(res['romVersion']),
|
|
hex(res['locale']),
|
|
res['name'])
|
|
|
|
def testReadStorageInfo(self):
|
|
res = pisock.dlp_ReadStorageInfo(sd,0)
|
|
assert res.has_key('manufacturer')
|
|
if VERBOSE:
|
|
print 'ReadStorageInfo: card 0, romSize=%s ramSize=%s ramFree=%s manufacturer=%s' % (
|
|
res['romSize'],
|
|
res['ramSize'],
|
|
res['ramFree'],
|
|
res['manufacturer'])
|
|
|
|
def testReadUserInfo(self):
|
|
res = pisock.dlp_ReadUserInfo(sd)
|
|
assert res!=None and res.has_key('name')
|
|
if VERBOSE:
|
|
print 'ReadUserInfo: username=%s' % res['name']
|
|
|
|
def testReadNetSyncInfo(self):
|
|
res = pisock.dlp_ReadNetSyncInfo(sd)
|
|
assert res!=None and res.has_key('hostName')
|
|
if VERBOSE:
|
|
print "ReadNetSyncInfo: lanSync=%d hostname='%s' hostaddress='%s' subnetmask='%s'" % (
|
|
res['lanSync'],
|
|
res['hostName'],
|
|
res['hostAddress'],
|
|
res['hostSubnetMask'])
|
|
|
|
def testReadFeature(self):
|
|
res = pisock.dlp_ReadFeature(sd,'psys',2)
|
|
assert res!=None
|
|
if VERBOSE:
|
|
print "ReadFeature: processor type=%s" % hex(res)
|
|
|
|
def testReadStorageInfo(self):
|
|
more = 1
|
|
i = 0
|
|
while more:
|
|
res = pisock.dlp_ReadStorageInfo(sd,i)
|
|
assert res!=None and res.has_key('name')
|
|
if VERBOSE:
|
|
print "ReadStorageInfo: card=%d version=%d creation=%ld romSize=%ld ramSize=%ld ramFree=%ld name='%s' manufacturer='%s'" % (
|
|
res['card'],
|
|
res['version'],
|
|
res['creation'],
|
|
res['romSize'],
|
|
res['ramSize'],
|
|
res['ramFree'],
|
|
res['name'],
|
|
res['manufacturer'])
|
|
if res['more'] == 0:
|
|
break
|
|
|
|
def testReadDBList(self):
|
|
res = pisock.dlp_ReadDBList(sd,0,pisock.dlpDBListRAM)
|
|
assert len(res) > 3
|
|
assert res[0].has_key('name')
|
|
if VERBOSE:
|
|
print "ReadDBList: %s entries" % len(res)
|
|
|
|
def testDatabaseCreationAndSearch(self):
|
|
db = pisock.dlp_CreateDB(sd,'test','DATA',0,0,1,'PythonTestSuite')
|
|
assert db != None
|
|
pisock.dlp_SetDBInfo(sd, db, pisock.dlpDBFlagBackup, pisock.dlpDBFlagCopyPrevention, 0, 0, 0, 0, 'data', 0)
|
|
pisock.dlp_CloseDB(sd,db)
|
|
db = pisock.dlp_OpenDB(sd, 0, pisock.dlpOpenReadWrite, 'PythonTestSuite')
|
|
assert db != None
|
|
info = pisock.dlp_FindDBByOpenHandle(sd, db)
|
|
if VERBOSE:
|
|
print 'FindDBByOpenHandle:'
|
|
print '\tcardNo',info[0]
|
|
print '\tlocalID',info[1]
|
|
dumpDBInfo(info[2])
|
|
dumpDBSizeInfo(info[3])
|
|
pisock.dlp_CloseDB(sd,db)
|
|
pisock.dlp_DeleteDB(sd,0,'PythonTestSuite')
|
|
|
|
class OfflineTestCase(unittest.TestCase):
|
|
def setUp(self):
|
|
pass
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
def testBadPort(self):
|
|
sd = pisock.pi_socket(pisock.PI_AF_PILOT,
|
|
pisock.PI_SOCK_STREAM,
|
|
pisock.PI_PF_DLP)
|
|
self.assertRaises(pisock.error, pisock.pi_bind, sd, "/dev/nosuchport")
|
|
|
|
onlineSuite = unittest.makeSuite(OnlineTestCase,'test')
|
|
offlineSuite = unittest.makeSuite(OfflineTestCase,'test')
|
|
combinedSuite = unittest.TestSuite((onlineSuite, offlineSuite))
|
|
|
|
if __name__ == "__main__":
|
|
parser = OptionParser()
|
|
parser.add_option("-p", "--port", dest="pilotport",
|
|
help="Perform online tests using port", metavar="PORT")
|
|
parser.add_option("-v", "--verbose", dest="verbose", action="store_true",
|
|
help="Print more output", default=0)
|
|
(options, args) = parser.parse_args()
|
|
|
|
runner = unittest.TextTestRunner()
|
|
|
|
VERBOSE = options.verbose
|
|
|
|
if options.pilotport:
|
|
|
|
pilotport = options.pilotport
|
|
print "Running online and offline tests using port %s" % pilotport
|
|
print "Connecting"
|
|
sd = pisock.pi_socket(pisock.PI_AF_PILOT,
|
|
pisock.PI_SOCK_STREAM,
|
|
pisock.PI_PF_DLP)
|
|
|
|
pisock.pi_bind(sd, pilotport)
|
|
pisock.pi_listen(sd, 1)
|
|
pisock.pi_accept(sd)
|
|
if VERBOSE:
|
|
print pisock.dlp_ReadSysInfo(sd)
|
|
else:
|
|
pisock.dlp_ReadSysInfo(sd)
|
|
pisock.dlp_OpenConduit(sd)
|
|
print "Connected"
|
|
runner.run(combinedSuite)
|
|
pisock.pi_close(sd)
|
|
print "Disconnected"
|
|
else:
|
|
print "Running offline tests only"
|
|
runner.run(offlineSuite)
|
|
|