python-awips/pypies/testDataStore.py

149 lines
3.6 KiB
Python
Raw Permalink Normal View History

Commit of all v20 ufpy code: - code brought over from the following raytheon repos and directories: - awips2 repo: - awips2/pythonPackages - awips2/edexOsgi/com.raytheon.uf.common.alertviz/pythonPackages - awips2/edexOsgi/com.raytheon.uf.common.mpe/pythonPackages - awips2/edexOsgi/com.raytheon.uf.common.dataplugin.text/pythonPackages - awips2/edexOsgi/com.raytheon.uf.common.dataplugin.grid/pythonPackages - awips2/edexOsgi/com.raytheon.uf.common.activetable/pythonPackages - awips2/edexOsgi/com.raytheon.uf.common.management/pythonPackages - awips2/edexOsgi/com.raytheon.uf.common.dataplugin.gfe/pythonPackages - awips2/edexOsgi/com.raytheon.uf.common.dataplugin.radar/pythonPackages - awips2/edexOsgi/com.raytheon.uf.common.site/pythonPackages - awips2-core repo: - awips2-core/common/com.raytheon.uf.common.auth/pythonPackages - awips2-core/common/com.raytheon.uf.common.message/pythonPackages - awips2-core/common/com.raytheon.uf.common.localization/pythonPackages - awips2-core/common/com.raytheon.uf.common.datastorage/pythonPackages - awips2-core/common/com.raytheon.uf.common.pointdata/pythonPackages - awips2-core/common/com.raythoen.uf.common.pypies/pythonPackages - awips2-core/common/com.raytheon.uf.common.dataaccess/pythonPackages - awips2-core/common/com.raytheon.uf.common.dataplugin.level/pythonPackages - awips2-core/common/com.raytheon.uf.common.serialization/pythonPackages - awips2-core/common/com.raytheon.uf.common.time/pythonPackages - awips2-core/common/com.raytheon.uf.common.dataplugin/pythonPackages - awips2-core/common/com.raytheon.uf.common.dataquery/pythonPackages - awips2-rpm repo: had to untar and unzip the thirft repo, then go into /lib/py and run `python setup.py build` and then copy in from the build/ subdirectory -foss/thrift-0.14.1/packaged/thrift-0.14.1/lib/py/build/lib.macosx-10.9-x86_64-cpython-38/thrift
2023-09-12 13:38:19 -06:00
##
# This software was developed and / or modified by Raytheon Company,
# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
#
# U.S. EXPORT CONTROLLED TECHNICAL DATA
# This software product contains export-restricted data whose
# export/transfer/disclosure is restricted by U.S. law. Dissemination
# to non-U.S. persons whether in the United States or abroad requires
# an export license or other authorization.
#
# Contractor Name: Raytheon Company
# Contractor Address: 6825 Pine Street, Suite 340
# Mail Stop B8
# Omaha, NE 68106
# 402.291.0100
#
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
# further licensing information.
##
#
# Test for h5pyDatastore
#
#
# SOFTWARE HISTORY
#
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# 08/16/10 njensen Initial Creation.
# Jun 25, 2019 7885 tgurney Python 3 print fix
#
#
#
import numpy, os
from dynamicserialize.dstypes.com.raytheon.uf.common.pypies.request import *
from dynamicserialize.dstypes.com.raytheon.uf.common.pypies.response import *
from dynamicserialize.dstypes.com.raytheon.uf.common.datastorage.records import *
from dynamicserialize.dstypes.com.raytheon.uf.common.datastorage import *
from pypies.impl import H5pyDataStore
FILENAME = '/tmp/pythonTest.h5'
datastore = H5pyDataStore.H5pyDataStore()
def testStore():
req = StoreRequest()
req.setOp('STORE_ONLY')
req.setFilename(FILENAME)
rec = FloatDataRecord()
rec.setName('Data')
rec.setGroup('/testGroup')
rec.setSizes([10, 5])
data = numpy.zeros((50,), numpy.float32)
data.fill(3.0)
rec.setFloatData(data)
rec.setDimension(2)
req.setRecords([rec])
resp = datastore.store(req)
if resp.getFailedRecords():
return False
else:
return True
def testPartialWrite():
req = StoreRequest()
req.setOp('REPLACE')
req.setFilename(FILENAME)
rec = FloatDataRecord()
rec.setName('Data')
rec.setGroup('/testGroup')
rec.setSizes([2, 4])
data = numpy.zeros((8,), numpy.float32)
data.fill(5.0)
rec.setFloatData(data)
rec.setDimension(2)
rec.setMinIndex([2,0])
req.setRecords([rec])
resp = datastore.store(req)
if resp.getFailedRecords():
return False
else:
return True
def testGroupRetrieve():
req = GroupsRequest()
req.setFilename(FILENAME)
req.setGroups(['/testGroup'])
sreq = Request()
sreq.setType('ALL')
req.setRequest(sreq)
datastore.retrieveGroups(req)
return True
def testDelete():
req = DeleteRequest()
req.setFilename(FILENAME)
req.setLocations(['/testGroup/Data'])
datastore.delete(req)
return True
def testCreateDataset():
req = CreateDatasetRequest()
req.setFilename(FILENAME)
rec = FloatDataRecord()
rec.setFillValue(-8888.8)
rec.setDimension(2)
rec.setGroup("/StaticTopo")
rec.setName("Data")
rec.setSizes([4652, 5648])
req.setRecord(rec)
datastore.createDataset(req)
return True
def main():
if os.path.exists(FILENAME):
os.remove(FILENAME)
passed = 0
failed = 0
methods = [testStore, testPartialWrite, testGroupRetrieve, testDelete, testCreateDataset]
for m in methods:
x = m()
if x:
passed += 1
else:
failed += 1
print(m.__name__, "failed")
print(passed, "tests passed")
print(failed, "tests failed")
if __name__ == '__main__':
main()