def test_store_last_index2_mixed(self): fun = sys._getframe().f_code.co_name print("Run: %s.%s() " % (self.__class__.__name__, fun)) fname = "test.h5" nxFile = None eFile = None # gname = "testGroup" # gtype = "NXentry" # fdname = "testField" # fdtype = "int64" # file handle nxFile = FileWriter.create_file(fname, overwrite=True).root() # element file objects eFile = EFile([], None, nxFile) el = Element(self._tfname, self._fattrs2, eFile) fi = EField(self._fattrs2, el) el2 = EDimensions(self._fattrs3, fi) el3 = EDim(self._attrs5, el2) ds = TstDataSource() ds.value0d = self.__rnd.randint(1, 10) el3.source = ds # el4 = EDim(self._attrs2, el2) el3.store() self.assertEqual(fi.tagName, "field") self.assertEqual(fi.content, []) self.assertEqual(fi._tagAttrs, self._fattrs2) self.assertEqual(fi.doc, "") self.assertEqual(fi._lastObject(), None) self.assertEqual(type(el2.last), EField) self.assertEqual(el2.last.rank, "2") self.assertEqual(el3._beforeLast().lengths, { '1': '%s' % ds.value0d, '2': '22' }) self.assertEqual(fi.lengths, {'1': '%s' % ds.value0d, '2': '22'}) self.assertEqual(fi.rank, "2") nxFile.close() os.remove(fname)
def test_default_constructor(self): print("Run: %s.test_default_constructor() " % self.__class__.__name__) el = EField(self._fattrs, None) st = EStrategy(self._fattrs, el) self.assertTrue(isinstance(st, Element)) self.assertTrue(isinstance(st, EStrategy)) self.assertEqual(st.tagName, "strategy") self.assertEqual(st.content, []) self.assertEqual(st.doc, "") self.assertEqual(st.last.strategy, 'INIT') self.assertEqual(el.strategy, 'INIT') self.assertEqual(st.last.trigger, None) self.assertEqual(el.trigger, None) self.assertEqual(st.last.grows, None) self.assertEqual(el.grows, None) self.assertEqual(st.last.compression, False) self.assertEqual(el.compression, False) self.assertEqual(st.last.rate, 2) self.assertEqual(el.rate, 2) self.assertEqual(st.last.shuffle, True) self.assertEqual(el.shuffle, True)
def test_store(self): print("Run: %s.test_store() " % self.__class__.__name__) attrs = {"mode": "STEP"} el = EField(self._fattrs, None) st = EStrategy(attrs, el) self.assertEqual(st.content, []) self.assertEqual(st.doc, "") self.assertEqual(st.store(), None) self.assertEqual(st.last, el) self.assertEqual(st.store("<tag/>"), None) self.assertEqual(st.last.postrun, "") content = ["Test postrun"] st.content = content self.assertEqual(st.content, st.content) self.assertEqual(st.store("<tag/>"), None) self.assertEqual(st.last.postrun, st.content[0]) st.content = ["Test", " postrun"] self.assertEqual(st.content, st.content) self.assertEqual(st.store("<tag/>"), None) self.assertEqual(st.last.postrun, content[0])
def test_setDecoders_nopool(self): fun = sys._getframe().f_code.co_name print("Run: %s.%s() " % (self.__class__.__name__, fun)) device = 'stestp09/testss/s1r228' atype = 'attribute' # encoding = 'UTF8' # decoders = DecoderPool() atts = {"type": "TANGO"} # name = "myRecord" # wjson = json.loads( # '{"datasources":{"CL":"nxswriter.ClientSource.ClientSource"}}') gjson = json.loads('{"data":{"myRecord":"1"}}') arr3 = { "ScalarEncoded": [ "string", "DevEncoded", ("UTF8", b"Hello UTF8! Pr\xc3\xb3ba \xe6\xb5\x8b")], "SpectrumEncoded": [ "string", "DevEncoded", ('INT32', b'\xd2\x04\x00\x00.\x16\x00\x00-\x00\x00\x00Y\x01\x00\x00')], } for k in arr3: el = EField(self._fattrs, None) ds = DataSourceFactory(atts, el) self.assertTrue(isinstance(ds, Element)) self.assertEqual(ds.tagName, "datasource") self.assertEqual(ds._tagAttrs, atts) self.assertEqual(ds.content, []) self.assertEqual(ds.doc, "") self.assertEqual(ds.last, el) self.assertEqual(ds.setDataSources(DataSourcePool()), None) self.assertEqual(ds.store( ["<datasource type='TANGO'>", "<record name='%s'/> <device name='%s' encoding='%s'/>" % ( k, device, arr3[k][2][0]), "</datasource>"], gjson), None) self.assertEqual(type(ds.last.source), TangoSource.TangoSource) self.assertEqual(ds.last.source.member.name, k) self.assertEqual(ds.last.source.device, device) self.assertEqual(ds.last.source.member.encoding, arr3[k][2][0]) self.assertEqual( ds.last.source.__str__(), " TANGO Device %s : %s (%s)" % (device, k, atype)) self.assertEqual(len(ds.last.tagAttributes), 1) self.assertEqual(ds.last.tagAttributes["nexdatas_source"], ( 'NX_CHAR', "<datasource type='TANGO'><record name='%s'/> " "<device name='stestp09/testss/s1r228' encoding='%s'/>" "</datasource>" % (k, arr3[k][2][0]))) # dp = DecoderPool() self.assertEqual(ds.setDecoders(None), None) dt = ds.last.source.getData() self.checkData(dt, "SCALAR", arr3[k][2], arr3[k][1], [1, 0], arr3[k][2][0], None)
def test_check_flow(self): fun = sys._getframe().f_code.co_name print("Run: %s.%s() " % (self.__class__.__name__, fun)) atts = {"type": "CL"} name = "myRecord" if "test.TstDataSource" in sys.modules.keys(): wjson = json.loads('{"datasources":{' '"CL":"test.TstDataSource.TstDataSource"}}') else: wjson = json.loads('{"datasources":{' '"CL":"TstDataSource.TstDataSource"}}') gjson = json.loads('{"data":{"myRecord":1123}}') el = EField(self._fattrs, None) ds = DataSourceFactory(atts, el) self.assertTrue(isinstance(ds, Element)) self.assertEqual(ds.tagName, "datasource") self.assertEqual(ds._tagAttrs, atts) self.assertEqual(ds.content, []) self.assertEqual(ds.doc, "") self.assertEqual(ds.last, el) dsp = DataSourcePool(wjson) dcp = DecoderPool() self.assertEqual(ds.setDataSources(dsp), None) self.assertEqual( ds.store([ "<datasource type='CL'>", """ <datasource type="CLIENT" name="myclient"> <record name="%s"/> </datasource> <result> ds.result = ds.myclient + 1 </result> """ % name, "</datasource>" ], gjson), None) td = ds.last.source self.assertEqual(len(td.stack), 7) self.assertEqual(td.stack[0], "setup") self.assertEqual( td.stack[1], '<datasource type=\'CL\'>\n' '<datasource type="CLIENT" name="myclient">\n ' '<record name="myRecord"/>\n</datasource>\n' '<result>\nds.result = ds.myclient + 1\n</result>\n' '</datasource>') self.assertEqual(td.stack[2], 'setJSON') self.assertEqual(td.stack[3], {u'data': {u'myRecord': 1123}}) self.assertEqual(td.stack[4], None) self.assertEqual(td.stack[5], "setDataSources") self.assertEqual(td.stack[6], dsp) ds.setDecoders(dcp) self.assertEqual(len(td.stack), 10) self.assertEqual(td.stack[7], "isValid") self.assertEqual(td.stack[8], "setDecoders") self.assertEqual(td.stack[9], dcp) self.assertEqual(type(ds.last.source), TstDataSource.TstDataSource) self.assertEqual(ds.last.source.__str__(), "Test DataSource") self.assertEqual(len(td.stack), 11) self.assertEqual(td.stack[10], '__str__') self.assertEqual(len(ds.last.tagAttributes), 1) self.assertEqual( ds.last.tagAttributes["nexdatas_source"], ('NX_CHAR', '<datasource type=\'CL\'>\n<datasource type="CLIENT" ' 'name="myclient">\n <record name="myRecord"/>\n' '</datasource>\n<result>\nds.result = ds.myclient + 1\n</result>' '\n</datasource>')) dt = ds.last.source.getData() self.assertEqual(len(td.stack), 12) self.assertEqual(td.stack[11], 'getData') self.checkData(dt, "SCALAR", 1, "DevLong", [0, 0])
def test_store_default(self): fun = sys._getframe().f_code.co_name print("Run: %s.%s() " % (self.__class__.__name__, fun)) el = Element(self._tfname, self._fattrs) ds = DataSourceFactory(self._fattrs, el) self.assertTrue(isinstance(ds, Element)) self.assertEqual(ds.tagName, "datasource") self.assertEqual(ds._tagAttrs, self._fattrs) self.assertEqual(ds.content, []) self.assertEqual(ds.doc, "") self.assertEqual(ds.last, el) self.assertEqual(ds.store(["<datasource>", "", "</datasource>"]), None) self.assertEqual(type(ds.last.source), DataSources.DataSource) self.assertTrue(not hasattr(ds.last, "tagAttributes")) atts = {"type": "TANGO"} el = Element(self._tfname, self._fattrs) ds = DataSourceFactory(atts, el) self.assertTrue(isinstance(ds, Element)) self.assertEqual(ds.tagName, "datasource") self.assertEqual(ds._tagAttrs, atts) self.assertEqual(ds.content, []) self.assertEqual(ds.doc, "") self.assertEqual(ds.last, el) self.assertEqual(ds.store(["<datasource>", "", "</datasource>"]), None) self.assertEqual(type(ds.last.source), DataSources.DataSource) self.assertTrue(not hasattr(ds.last, "tagAttributes")) atts = {"type": "CLIENT"} el = Element(self._tfname, self._fattrs) ds = DataSourceFactory(atts, el) self.assertTrue(isinstance(ds, Element)) self.assertEqual(ds.tagName, "datasource") self.assertEqual(ds._tagAttrs, atts) self.assertEqual(ds.content, []) self.assertEqual(ds.doc, "") self.assertEqual(ds.last, el) self.assertEqual(ds.setDataSources(DataSourcePool()), None) self.myAssertRaise(DataSourceSetupError, ds.store, ["<datasource>", "", "</datasource>"]) self.assertTrue(not hasattr(ds.last, "tagAttributes")) atts = {"type": "CLIENT"} el = Element(self._tfname, self._fattrs) ds = DataSourceFactory(atts, el) self.assertTrue(isinstance(ds, Element)) self.assertEqual(ds.tagName, "datasource") self.assertEqual(ds._tagAttrs, atts) self.assertEqual(ds.content, []) self.assertEqual(ds.doc, "") self.assertEqual(ds.last, el) self.assertEqual(ds.setDataSources(DataSourcePool()), None) self.myAssertRaise( DataSourceSetupError, ds.store, ["<datasource type='CLIENT'>", "<record/>", "</datasource>"]) self.assertTrue(not hasattr(ds.last, "tagAttributes")) atts = {"type": "CLIENT"} name = "myRecord" el = Element(self._tfname, self._fattrs) ds = DataSourceFactory(atts, el) self.assertTrue(isinstance(ds, Element)) self.assertEqual(ds.tagName, "datasource") self.assertEqual(ds._tagAttrs, atts) self.assertEqual(ds.content, []) self.assertEqual(ds.doc, "") self.assertEqual(ds.last, el) self.assertEqual(ds.setDataSources(DataSourcePool()), None) self.assertEqual( ds.store([ "<datasource type='CLIENT'>", '<record name="%s"/>' % name, "</datasource>" ]), None) self.assertEqual(type(ds.last.source), ClientSource.ClientSource) self.assertEqual(ds.last.source.name, name) self.assertEqual(ds.last.source.name, name) self.assertEqual(ds.last.source.__str__(), " CLIENT record %s" % (name)) self.assertTrue(not hasattr(ds.last, "tagAttributes")) atts = {"type": "CLIENT"} name = "myRecord" el = EField(self._fattrs, None) ds = DataSourceFactory(atts, el) self.assertTrue(isinstance(ds, Element)) self.assertEqual(ds.tagName, "datasource") self.assertEqual(ds._tagAttrs, atts) self.assertEqual(ds.content, []) self.assertEqual(ds.doc, "") self.assertEqual(ds.last, el) self.assertEqual(ds.setDataSources(DataSourcePool()), None) self.assertEqual( ds.store([ "<datasource type='CLIENT'>", '<record name="%s"/>' % name, "</datasource>" ]), None) self.assertEqual(type(ds.last.source), ClientSource.ClientSource) self.assertEqual(ds.last.source.name, name) self.assertEqual(ds.last.source.name, name) self.assertEqual(ds.last.source.__str__(), " CLIENT record %s" % (name)) self.assertEqual(len(ds.last.tagAttributes), 1) self.assertEqual( ds.last.tagAttributes["nexdatas_source"], ('NX_CHAR', '<datasource type=\'CLIENT\'><record name="myRecord"/>' '</datasource>')) atts = {"type": "CLIENT"} name = "myRecord" # wjson = json.loads('{"datasources": # {"CL":"DataSources.ClientSource"}}') gjson = json.loads('{"data":{"myRecord":"1"}}') el = EField(self._fattrs, None) ds = DataSourceFactory(atts, el) self.assertTrue(isinstance(ds, Element)) self.assertEqual(ds.tagName, "datasource") self.assertEqual(ds._tagAttrs, atts) self.assertEqual(ds.content, []) self.assertEqual(ds.doc, "") self.assertEqual(ds.last, el) self.assertEqual(ds.setDataSources(DataSourcePool()), None) self.assertEqual( ds.store([ "<datasource type='CLIENT'>", '<record name="%s"/>' % name, "</datasource>" ], gjson), None) self.assertEqual(type(ds.last.source), ClientSource.ClientSource) self.assertEqual(ds.last.source.name, name) self.assertEqual(ds.last.source.name, name) self.assertEqual(ds.last.source.__str__(), " CLIENT record %s" % (name)) self.assertEqual(len(ds.last.tagAttributes), 1) self.assertEqual( ds.last.tagAttributes["nexdatas_source"], ('NX_CHAR', '<datasource type=\'CLIENT\'><record name="myRecord"/>' '</datasource>')) dt = ds.last.source.getData() self.checkData(dt, "SCALAR", '1', "DevString", []) atts = {"type": "PYEVAL"} name = "myRecord" # wjson = json.loads( # '{"datasources":{"CL":"ClientSource.ClientSource"}}') gjson = json.loads('{"data":{"myRecord":1123}}') el = EField(self._fattrs, None) ds = DataSourceFactory(atts, el) self.assertTrue(isinstance(ds, Element)) self.assertEqual(ds.tagName, "datasource") self.assertEqual(ds._tagAttrs, atts) self.assertEqual(ds.content, []) self.assertEqual(ds.doc, "") self.assertEqual(ds.last, el) self.assertEqual(ds.setDataSources(DataSourcePool()), None) self.assertEqual( ds.store([ "<datasource type='PYEVAL'>", """ <datasource type="CLIENT" name="myclient"> <record name="%s"/> </datasource> <result> ds.result = ds.myclient + 1 </result> """ % name, "</datasource>" ], gjson), None) self.assertEqual(type(ds.last.source), PyEvalSource.PyEvalSource) self.assertEqual(ds.last.source.__str__(), " PYEVAL \nds.result = ds.myclient + 1\n") self.assertEqual(len(ds.last.tagAttributes), 1) self.assertEqual(ds.last.tagAttributes["nexdatas_source"], ('NX_CHAR', '<datasource type=\'PYEVAL\'>\n' '<datasource type="CLIENT" name="myclient">\n ' '<record name="myRecord"/>\n</datasource>\n' '<result>\nds.result = ds.myclient + 1\n</result>\n' '</datasource>')) dt = ds.last.source.getData() self.checkData(dt, "SCALAR", 1124, "DevLong64", [])