Beispiel #1
0
 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"]))
Beispiel #2
0
    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)
Beispiel #3
0
 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)
Beispiel #5
0
    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)
Beispiel #6
0
 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)
Beispiel #7
0
    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])
Beispiel #8
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)
Beispiel #9
0
    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])
Beispiel #10
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", [])