Exemplo n.º 1
0
    def test_setData_scalar(self):
        fun = sys._getframe().f_code.co_name
        print("Run: %s.%s() " % (self.__class__.__name__, fun))

        device = 'stestp09/testss/s1r228'
        proxy = PyTango.DeviceProxy(device)
        self.assertTrue(ProxyHelper.wait(proxy, 10000))
        arr1 = {
            "ScalarBoolean": ["bool", "DevBoolean", True],
            "ScalarUChar": ["uint8", "DevUChar", 23],
            "ScalarShort": ["int16", "DevShort", -123],
            "ScalarUShort": ["uint16", "DevUShort", 1234],
            "ScalarLong": ["int64", "DevLong", -124],
            "ScalarULong": ["uint64", "DevULong", 234],
            "ScalarLong64": ["int64", "DevLong64", 234],
            "ScalarULong64": ["uint64", "DevULong64", 23],
            "ScalarFloat": ["float32", "DevFloat", 12.234, 1e-5],
            "ScalarDouble": ["float64", "DevDouble", -2.456673e+02, 1e-14],
            "ScalarString": ["string", "DevString", "MyTrue"],
        }

        arr2 = {
            "State": ["string", "DevState", PyTango._PyTango.DevState.ON],
        }

        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-'
                 b'\x00\x00\x00Y\x01\x00\x00')
            ],
        }

        for k in arr1:
            self._simps.dp.write_attribute(k, arr1[k][2])

        arr = dict(arr1, **(arr2))

        for k in arr:

            mb = TgMember(k)
            da = proxy.read_attribute(k)
            mb.setData(da)
            dt = mb.getValue()
            self.checkData(dt, "SCALAR", arr[k][2], arr[k][1], [1, 0], None,
                           None, arr[k][3] if len(arr[k]) > 3 else 0)

        if not PYTG_BUG_213:
            for k in arr3:
                mb = TgMember(k, encoding=arr3[k][2][0])
                da = proxy.read_attribute(k)
                mb.setData(da)
                dp = DecoderPool()
                dt = mb.getValue(dp)
                self.checkData(dt, "SCALAR", arr3[k][2], arr3[k][1], [1, 0],
                               arr3[k][2][0], dp)
Exemplo n.º 2
0
    def test_constructor_encode(self):
        fun = sys._getframe().f_code.co_name
        print("Run: %s.%s() " % (self.__class__.__name__, fun))
        dp = DecoderPool()
        spectrum = numpy.array([1234, 5678, 45, 345], dtype=numpy.uint32)
        image = numpy.array(
            [[2, 5, 4, 6], [3, 4, 3, 4], [3, 6, 7, 8]], dtype='uint8')

        arr = {
            "ScalarEncoded": [
                "UTF8", "DevEncoded",
                ("UTF8", b"Hello UTF8! Pr\xc3\xb3ba \xe6\xb5\x8b"),
                [1, 0], "SCALAR",
                b"Hello UTF8! Pr\xc3\xb3ba \xe6\xb5\x8b", "DevString"],
            "SpectrumEncoded": [
                "UINT32", "DevEncoded",
                ('INT32',
                 b'\xd2\x04\x00\x00.\x16\x00\x00-\x00\x00\x00Y\x01\x00\x00'),
                [4, 0], "SPECTRUM", spectrum, "DevULong"],
            "ImageEncoded": ["LIMA_VIDEO_IMAGE", "DevEncoded",
                             self.encodeImage(image),
                             list(image.shape), "IMAGE", image, "DevUChar"],
        }

        for a in arr:

            data = {"rank": "SCALAR",
                    "value": arr[a][2],
                    "tangoDType": arr[a][1],
                    "shape": [1, 0],
                    "encoding": arr[a][0],
                    "decoders": dp}
            el = DataHolder(**data)

            self.assertTrue(isinstance(el, object))
            self.assertEqual(el.format, arr[a][4])
            self.assertEqual(el.tangoDType, arr[a][6])
            self.assertEqual(el.shape, arr[a][3])
            self.assertEqual(el.encoding, data["encoding"])
            self.assertEqual(el.decoders, data["decoders"])

            if el.shape == [1, 0]:
                self.assertEqual(el.value, arr[a][5])
            elif len(el.shape) == 2 and el.shape[1] == 0:
                self.assertEqual(len(el.value), len(arr[a][5]))
                self.assertEqual(len(el.value), el.shape[0])
                for i in range(el.shape[0]):
                    self.assertEqual(el.value[i], arr[a][5][i])
            elif len(el.shape) == 2 and el.shape[1] != 0:
                self.assertEqual(len(el.value), len(arr[a][5]))
                self.assertEqual(len(el.value), el.shape[0])
                for i in range(el.shape[0]):
                    self.assertEqual(len(el.value[i]), len(arr[a][5][i]))
                    self.assertEqual(len(el.value[i]), el.shape[1])
                    for j in range(el.shape[1]):
                        self.assertEqual(el.value[i][j], arr[a][5][i][j])
            else:
                print("WARNING %s %s" % (a, "Case not supported"))
Exemplo n.º 3
0
    def test_constructor_default(self):
        fun = sys._getframe().f_code.co_name
        print("Run: %s.%s() " % (self.__class__.__name__, fun))

        el = DecoderPool()
        self.assertTrue(isinstance(el, object))

        el = DecoderPool(json.loads("{}"))
        self.assertTrue(isinstance(el, object))

        jsn = json.loads('{"decoders":{"UTF":"nxswriter.DecoderPool.Decode"}}')
        self.myAssertRaise(AttributeError, DecoderPool, jsn)

        jsn = json.loads('{"decoders":{"UTF":"DDecoderPool.UTF8decoder"}}')
        self.myAssertRaise(ImportError, DecoderPool, jsn)

        el = DecoderPool(
            json.loads(
                '{"decoders":{"UTF":"nxswriter.DecoderPool.UTF8decoder"}}'))
Exemplo n.º 4
0
    def test_constructor_encode_single(self):
        fun = sys._getframe().f_code.co_name
        print("Run: %s.%s() " % (self.__class__.__name__, fun))
        dp = DecoderPool()
        spectrum = numpy.array([1234], dtype=numpy.uint32)
        image = numpy.array([[2]], dtype='uint16')

        arr = {
            "ScalarEncoded": ["UTF8", "DevEncoded", ("UTF8", b"\xc3\xb3"),
                              [1, 0], "SCALAR", b"\xc3\xb3", "DevString"],
            "SpectrumEncoded": ["UINT32", "DevEncoded",
                                ('INT32', b'\xd2\x04\x00\x00'),
                                [1, 0], "SPECTRUM", spectrum, "DevULong"],
            "ImageEncoded": ["LIMA_VIDEO_IMAGE", "DevEncoded",
                             self.encodeImage(image),
                             list(image.shape), "IMAGE", image, "DevUShort"],
        }

        for a in arr:

            data = {"rank": "SCALAR",
                    "value": arr[a][2],
                    "tangoDType": arr[a][1],
                    "shape": [1, 0],
                    "encoding": arr[a][0],
                    "decoders": dp}
            el = DataHolder(**data)

            self.assertTrue(isinstance(el, object))
            self.assertEqual(el.format, arr[a][4])
            self.assertEqual(el.tangoDType, arr[a][6])
            self.assertEqual(el.shape, arr[a][3])
            self.assertEqual(el.encoding, data["encoding"])
            self.assertEqual(el.decoders, data["decoders"])

            self.assertEqual(el.value, arr[a][5])
Exemplo n.º 5
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)
Exemplo n.º 6
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])
Exemplo n.º 7
0
    def test_getData_scalar(self):
        fun = sys._getframe().f_code.co_name
        print("Run: %s.%s() " % (self.__class__.__name__, fun))

        arr1 = {
            "ScalarBoolean": ["bool", "DevBoolean", True],
            "ScalarUChar": ["uint8", "DevUChar", 23],
            "ScalarShort": ["int16", "DevShort", -123],
            "ScalarUShort": ["uint16", "DevUShort", 1234],
            "ScalarLong": ["int64", "DevLong", -124],
            "ScalarULong": ["uint64", "DevULong", 234],
            "ScalarLong64": ["int64", "DevLong64", 234],
            "ScalarULong64": ["uint64", "DevULong64", 23],
            "ScalarFloat": ["float32", "DevFloat", 12.234, 1e-5],
            "ScalarDouble": ["float64", "DevDouble", -2.456673e+02, 1e-14],
            "ScalarString": ["string", "DevString", "MyTrue"],
        }

        arr1b = {
            "ScalarBoolean": ["bool", "DevBoolean", False],
            "ScalarUChar": ["uint8", "DevUChar", 13],
            "ScalarShort": ["int16", "DevShort", -112],
            "ScalarUShort": ["uint16", "DevUShort", 2345],
            "ScalarLong": ["int64", "DevLong", -255],
            "ScalarULong": ["uint64", "DevULong", 123],
            "ScalarLong64": ["int64", "DevLong64", 214],
            "ScalarULong64": ["uint64", "DevULong64", 244465],
            "ScalarFloat": ["float32", "DevFloat", 11.123, 1e-5],
            "ScalarDouble": ["float64", "DevDouble", -1.414532e+02, 1e-14],
            "ScalarString": ["string", "DevString", "MyFalse"],
        }

        arr2 = {
            "State": ["string", "DevState", PyTango._PyTango.DevState.ON],
        }

        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')
            ],
        }

        counter = self.__rnd.randint(-2, 10)

        for k in arr1:
            self._simps.dp.write_attribute(k, arr1[k][2])
        for k in arr1b:
            self._simps2.dp.write_attribute(k, arr1b[k][2])

        arr = dict(arr1, **(arr2))
        arrb = dict(arr1b, **(arr2))

        dvn = 'stestp09/testss/s1r228'
        dvn2 = 'stestp09/testss/s2r228'
        gr = TgGroup(-100)
        dv = gr.getDevice(dvn)
        dv2 = gr.getDevice(dvn2)

        flip = True
        for k in arr:
            mb = TgMember(k)
            if flip:
                dv.setMember(mb)
            else:
                dv2.setMember(mb)
            flip = not flip

        if not PYTG_BUG_213:
            flip = True
            for k in arr3:
                mb = TgMember(k, encoding=arr3[k][2][0])
                if flip:
                    dv.setMember(mb)
                else:
                    dv2.setMember(mb)
                flip = not flip

        print("FETCH %s" % counter)
        gr.getData(counter)
        print("FETCH END")

        for k in arr1:
            self._simps.dp.write_attribute(k, arr1b[k][2])
        for k in arr1b:
            self._simps2.dp.write_attribute(k, arr1[k][2])

        flip = True
        for k in arr:
            if flip:
                dt = (gr.getDevice(dvn).members[k]).getValue()
                self.checkData(dt, "SCALAR", arr[k][2], arr[k][1], [1, 0],
                               None, None, arr[k][3] if len(arr[k]) > 3 else 0)
            else:
                dt = (gr.getDevice(dvn2).members[k]).getValue()
                self.checkData(dt, "SCALAR", arrb[k][2], arrb[k][1], [1, 0],
                               None, None,
                               arrb[k][3] if len(arr[k]) > 3 else 0)
            flip = not flip

        gr.getData(counter)

        flip = True
        for k in arr:
            if flip:
                dt = (gr.getDevice(dvn).members[k]).getValue()
                self.checkData(dt, "SCALAR", arr[k][2], arr[k][1], [1, 0],
                               None, None, arr[k][3] if len(arr[k]) > 3 else 0)
            else:
                dt = (gr.getDevice(dvn2).members[k]).getValue()
                self.checkData(dt, "SCALAR", arrb[k][2], arrb[k][1], [1, 0],
                               None, None,
                               arrb[k][3] if len(arr[k]) > 3 else 0)
            flip = not flip

        gr.getData(counter + 1)

        flip = True
        for k in arr:
            if flip:
                dt = (gr.getDevice(dvn).members[k]).getValue()
                self.checkData(dt, "SCALAR", arrb[k][2], arrb[k][1], [1, 0],
                               None, None,
                               arrb[k][3] if len(arr[k]) > 3 else 0)
            else:
                dt = (gr.getDevice(dvn2).members[k]).getValue()
                self.checkData(dt, "SCALAR", arr[k][2], arr[k][1], [1, 0],
                               None, None, arr[k][3] if len(arr[k]) > 3 else 0)
            flip = not flip

        if not PYTG_BUG_213:
            dp = DecoderPool()
            flip = True
            for k in arr3:
                print(k)
                if flip:
                    print(gr.getDevice(dvn).members[k])
                    dt = (gr.getDevice(dvn).members[k]).getValue(dp)
                else:
                    print(gr.getDevice(dvn2).members[k])
                    dt = (gr.getDevice(dvn2).members[k]).getValue(dp)
                self.checkData(dt, "SCALAR", arr3[k][2], arr3[k][1], [1, 0],
                               arr3[k][2][0], dp)
                flip = not flip
Exemplo n.º 8
0
    def test_pop(self):
        fun = sys._getframe().f_code.co_name
        print("Run: %s.%s() " % (self.__class__.__name__, fun))

        el = DecoderPool()
        el.pop("CL")
        ds = el.get("UTF8")
        self.assertTrue(isinstance(ds, UTF8decoder))
        ds = el.get("UINT32")
        self.assertTrue(isinstance(ds, UINT32decoder))
        ds = el.get("LIMA_VIDEO_IMAGE")
        self.assertTrue(isinstance(ds, VDEOdecoder))
        el.pop("UINT32")
        ds = el.get("UTF8")
        self.assertTrue(isinstance(ds, UTF8decoder))
        self.assertEqual(el.get("UINT32"), None)
        ds = el.get("LIMA_VIDEO_IMAGE")
        self.assertTrue(isinstance(ds, VDEOdecoder))
        self.assertEqual(el.get("DDB"), None)
        self.assertEqual(el.get("CL"), None)

        el = DecoderPool()
        el.append(W4DS, "W0")
        ds = el.get("W0")
        self.assertTrue(isinstance(ds, W4DS))
        ds = el.get("UTF8")
        self.assertTrue(isinstance(ds, UTF8decoder))
        ds = el.get("UINT32")
        self.assertTrue(isinstance(ds, UINT32decoder))
        ds = el.get("LIMA_VIDEO_IMAGE")
        self.assertTrue(isinstance(ds, VDEOdecoder))
        el.pop("W0")
        el.pop("UINT32")
        ds = el.get("UTF8")
        self.assertTrue(isinstance(ds, UTF8decoder))
        self.assertEqual(el.get("UINT32"), None)
        ds = el.get("LIMA_VIDEO_IMAGE")
        self.assertTrue(isinstance(ds, VDEOdecoder))
        self.assertEqual(el.get("DDB"), None)
        self.assertEqual(el.get("W0"), None)
Exemplo n.º 9
0
    def test_get(self):
        fun = sys._getframe().f_code.co_name
        print("Run: %s.%s() " % (self.__class__.__name__, fun))

        el = DecoderPool()
        ds = el.get("UTF8")
        self.assertTrue(isinstance(ds, UTF8decoder))
        ds = el.get("UINT32")
        self.assertTrue(isinstance(ds, UINT32decoder))
        ds = el.get("LIMA_VIDEO_IMAGE")
        self.assertTrue(isinstance(ds, VDEOdecoder))
        self.assertEqual(el.get("DDB"), None)
        self.assertEqual(el.get("CL"), None)

        el = DecoderPool(
            json.loads(
                '{"decoders":{"UTF":"nxswriter.DecoderPool.UTF8decoder"}}'))
        ds = el.get("UTF8")
        self.assertTrue(isinstance(ds, UTF8decoder))
        ds = el.get("UINT32")
        self.assertTrue(isinstance(ds, UINT32decoder))
        ds = el.get("LIMA_VIDEO_IMAGE")
        self.assertTrue(isinstance(ds, VDEOdecoder))
        self.assertEqual(el.get("DDB"), None)
        ds = el.get("UTF")
        self.assertTrue(isinstance(ds, UTF8decoder))
Exemplo n.º 10
0
    def test_hasDecoder(self):
        fun = sys._getframe().f_code.co_name
        print("Run: %s.%s() " % (self.__class__.__name__, fun))

        el = DecoderPool()
        self.assertTrue(el.hasDecoder("UTF8"))
        self.assertTrue(el.hasDecoder("UINT32"))
        self.assertTrue(el.hasDecoder("LIMA_VIDEO_IMAGE"))
        self.assertTrue(not el.hasDecoder("DBB"))
        self.assertTrue(not el.hasDecoder("CL"))

        el = DecoderPool(
            json.loads(
                '{"decoders":{"UTF":"nxswriter.DecoderPool.UTF8decoder"}}'))
        self.assertTrue(el.hasDecoder("UTF8"))
        self.assertTrue(el.hasDecoder("UINT32"))
        self.assertTrue(el.hasDecoder("LIMA_VIDEO_IMAGE"))
        self.assertTrue(not el.hasDecoder("DBB"))
        self.assertTrue(el.hasDecoder("UTF"))