def test_constructor_4(self): print("Run: %s.test_constructor() " % self.__class__.__name__) attrs = {} attrs["mode"] = "STEP" attrs["trigger"] = "def_trigger" attrs["grows"] = "3" attrs["compression"] = "32008" attrs["compression_opts"] = "2,0" attrs["shuffle"] = "true" el = EField(self._fattrs, None) st = EStrategy(attrs, 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, attrs["mode"]) self.assertEqual(el.strategy, attrs["mode"]) self.assertEqual(st.last.trigger, attrs["trigger"]) self.assertEqual(el.trigger, attrs["trigger"]) self.assertEqual(st.last.grows, int(attrs["grows"])) self.assertEqual(el.grows, int(attrs["grows"])) self.assertEqual(st.last.compression, int(attrs["compression"])) self.assertEqual(el.compression, int(attrs["compression"])) self.assertEqual( st.last.compression_opts, [int(elm) for elm in attrs["compression_opts"].split(",")]) self.assertEqual( el.compression_opts, [int(elm) for elm in attrs["compression_opts"].split(",")]) self.assertEqual(st.last.shuffle, Converters.toBool(attrs["shuffle"])) self.assertEqual(el.shuffle, Converters.toBool(attrs["shuffle"]))
def test_last_novalue(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._fattrs4, fi) el3 = EDim(self._attrs3, el2) 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, "1") self.assertEqual(el3._beforeLast().lengths, {}) self.assertEqual(fi.lengths, {}) self.assertEqual(fi.rank, "1") nxFile.close() os.remove(fname)
def test_constructor_3(self): print("Run: %s.test_constructor() " % self.__class__.__name__) attrs = {} attrs["mode"] = "STEP" attrs["trigger"] = "def_trigger" attrs["grows"] = "3" attrs["compression"] = "true" attrs["rate"] = "10" attrs["shuffle"] = "true" el = EField(self._fattrs, None) st = EStrategy(attrs, 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, attrs["mode"]) self.assertEqual(el.strategy, attrs["mode"]) self.assertEqual(st.last.trigger, attrs["trigger"]) self.assertEqual(el.trigger, attrs["trigger"]) self.assertEqual(st.last.grows, int(attrs["grows"])) self.assertEqual(el.grows, int(attrs["grows"])) self.assertEqual(st.last.compression, Converters.toBool(attrs["compression"])) self.assertEqual(el.compression, Converters.toBool(attrs["compression"])) self.assertEqual(st.last.rate, int(attrs["rate"]) if int(attrs["rate"]) < 10 else 9) self.assertEqual(el.rate, int(attrs["rate"]) if int(attrs["rate"]) < 10 else 9) self.assertEqual(st.last.shuffle, Converters.toBool(attrs["shuffle"])) self.assertEqual(el.shuffle, Converters.toBool(attrs["shuffle"]))
def test_last_h5cpp(self): print("Run: %s.test_last() " % self.__class__.__name__) fname = "test.h5" nxFile = None eFile = None # gname = "testGroup" # gtype = "NXentry" # fdname = "testField" # fdtype = "int64" # file handle FileWriter.writer = H5CppWriter 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._fattrs3, el) el2 = EDimensions(self._fattrs3, fi) self.assertEqual(fi.tagName, "field") self.assertEqual(fi.content, []) self.assertEqual(fi._tagAttrs, self._fattrs3) self.assertEqual(fi.doc, "") self.assertEqual(fi._lastObject(), None) self.assertEqual(type(el2.last), EField) self.assertEqual(el2.last.rank, "2") nxFile.close() os.remove(fname)
def test_store_last_index2(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._attrs4, el2) ds2 = TstDataSource() ds2.value0d = self.__rnd.randint(1, 10) el4.source = ds2 el3.store() el4.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': '%s' % ds2.value0d }) self.assertEqual(fi.lengths, { '1': '%s' % ds.value0d, '2': '%s' % ds2.value0d }) 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", [])