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

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)